| Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
| Weryfikacja pomysłu zabezpieczania sieci very long topic ! http://forum.freesco.pl/viewtopic.php?f=24&t=14728 |
Strona 1 z 1 |
| Autor: | MarkosX [ czwartek, 8 lutego 2007, 14:36 ] |
| Tytuł: | Weryfikacja pomysłu zabezpieczania sieci very long topic ! |
Przeglądając dział „Propozycje – NND” na forum trafiłem na topic „logowanie userow” , poczytałem i doszedłem do wniosku, że „to” się da zrobić. Czy się dało? – to się jeszcze okaże Chciałbym, abyście zweryfikowali, ocenili, przeanalizowali pomysł zabezpieczenia sieci, a w sumie netu. To co za chwilę napiszę będzie zawierało w sobie opis pomysłu, trochę HOWTO i po części trochę FAQ. Pomysł składa się z: -skryptu -kluczowych elementów docelowych: netstat (NIE netstat-nat), iptables -klienta SSH -paru modyfikacji/konfiguracji na serwerze -paru zależności Skrypt: Tworzy nowy łańcuch o nazwie SECURE w tablicy filter, w łańcuchu FORWARD (łańcuch w łańcuchu ? – jakoś tak Zadaniem skryptu jest sprawdzanie userów aktywnych (netstat –n), połączonych poprzez klienta ssh i blokowanie ich taką regułką: Zależności: Skrypt sprawdza np. co 1 minute (odpalany z crona), czy user jest aktywny, jeśli jest to nic nie robi, jeśli nie jest, to blokuje mu wszystkie porty oprócz portu niezbędnego do połączenia z daemonem sshd. Skrypt wystawie i opisze publicznie, po ew. przychylnej weryfikacji całego pomysłu. Klient SSH: Program o nazwie Bitvise Tunnelier (o absurdalnej, lecz niegroźnej ikonce w tray). Darmowy tylko dla indywidualnego użytku (w naszym przypadku każdy user używałby programu indywidualnie, czyli zgodnie z licencją Zadaniem klienta jest połączenie się z serwerem automatycznie przy starcie systemu operacyjnego (windows), zalogowanie się automtycznie i w razie utraty połączenia, wznowienie go (reconnect) po określonej przez nas liczbie sekund (w moim przypadku 28sekund, aby zmieścić się 2x w minucie, gdy skrypt wykonywany jest co 1 minute) Mówiąc krótko w gre wchodzi tylko i wyłącznie pełna automatyka. No oki, więc czas to wszystko zebrać do kupy, czyli: „No dobra, ale jak to działa ?” Idea begin: User nieaktywny jest zablokowany przez skrypt np. iptables -t filter -A SECURE -s 192.168.0.10 -p tcp --dport ! 22 -j DROP Jest zablokowany ponieważ netstat –n nie pokazał połączenia nawiązanego o stanie ESTABLISHED dla usera o IP: 192.168.0.10, na porcie 22 (ssh). User włącza kompa, uruchamia się program Bitvise Tunnelier automatycznie łączy się z serwerem poprzez login i hasło (każdy user ma swoje konto na serwerze) i w tym momencie odblokowuje sobie Internet poprzez regułke: /usr/bin/sudo /usr/sbin/iptables -t filter -D SECURE -s 192.168.0.10 -p tcp --dport ! 22 -j DROP. Po wyłączeniu kompa/wylogowaniu się z serwera, w momencie odpalenia skryptu IP: 192.168.0.10 ponownie zostaje zablokowane. W wypadku odpalania skryptu co minute, staje się to w przedziale 1-59sekund. I właśnie tyle też sekund miałby ew. wardriver na wbicie się do sieci i nacieszenie się netem „Wszystko ok., ale przecież user ma dostęp do shella no i do iptables na prawach roota poprzez sudo !?” User praktycznie nie ma dostępu do shella. Po koleji: Dodajemy grupę o nazwie secure: groupadd secure. Edytujemy plik sudoers, dopisujemy w nim: %secure ALL=NOPASSWD:/usr/sbin/iptables czyli wszyscy, którzy należą do grupy secure mają dostęp poprzez sudo do iptables na prawach roota. Dodajemy usera: useradd Login – heniu grupa – secure shell hasło – xxx. Jako shell podajemy /katalog/domowy_usera/rbash (rbash – nazwa pliku, może być jakakolwiek), np. /home/secure/heniu/rbash. W katalogu domowym usera tworzymy plik o nazwie rbash (chmod 755), edytujemy i wpisujemy: #!/bin/sh /usr/bin/sudo /usr/sbin/iptables -t filter -D SECURE -s 192.168.0.10 -p tcp --dport ! 22 -j DROP exit User tylko odblokowuje sobie net po czym konsola się zamyka (mgnienie okienka konsoli). Zestaw dla usera: 3 pliki: autostart.reg (wpis do rejestru) – plik który, user musiałby uruchomić, aby program odpalał się automatycznie przy starcie systemu. Plik jest potrzebny, ponieważ program niestety nie ma zaimplementowanej opcji autostartu więc używając komendy –loginOnStartup w rejestrze uruchomi się automagicznie. Tunnelier-Inst.exe (4.12mb) – instalka programu, program zajmuje ok. 15mb po zainstalowaniu, czyli 16mb wolnego miejsca na jakiejś partycji. Program u mnie pożera średnio ok. 12xx Kilobajtów pamięci. profile.tlp – profil usera, czyli wszystkie ustawienia programu wraz z (UWAGA) zakodowanym hasłem do konta na serwerze. Więc nawet user nie zna hasła do konta, bo po co „Czemu jakiś Bitvise Tunnelier, a nie powszechnie używany Putty ?” Wszystko oczywiście zaczęło się od putty, kombinacji była masa, wraz z kluczami prywatnymi (RSA, DSA), publicznymi, agentami, generatorami kluczy kończąc na próbie użycia opcji „Remote command”. (nawet znalazłem w necie PuttyTray, putty, które na starcie schodzi do traya Krótko: Putty nie, bo putty nie ma opcji reconnecta, czyli automatycznego wznawiania połączenia po padzie. Wyobraźmy sobie sytuacje, że user w nocy ściąga coś tam. Następuje chwilowy zanik napięcia w pomieszczeniu gdzie jest serwer (nie mamy ups-a), serwer się restartuje, lub sami restartujemy serwer, a putty u usera już się nie łączy z serwerem, więc skrypt blokuje usera = porażka. Jak pisałem wcześniej, tylko pełna automatyka wchodzi w gre. Póki co opcja „reconnect” w putty jest na stronie domowej putty w podstronie wishlist (czyli w liście życzeń) i to w dziale „fun” – nie wiem czemu J (pewnie dlatego, że putty nie zostało stworzone do spełniania potrzeb moich chorych pomysłów „Dlaczego akurat SSH ?” Dlatego, że połączenie jest szyfrowane. „Dlaczego nie netstat-nat ?” Dlatego nie, bo netstat-nat kłamie, a dokładnie przekłamuje (czasami). Czasem gdy sprawdzam poprzez „neststat-nat –n –L” czy połączenie jest nawiązane, mimo tego że jest, netstat-nat nic nie pokazuje. Chyba nie muszę tłumaczyć co się stanie, gdy pomimo połączenia netstat-nat nic nie pokaże, w momencie odpalenia się skryptu. Tak bynajmniej wynika z przeprowadzonych przeze mnie testów. Natomiast netstat jest nieugięty w tej kwestii. (Na wykorzystanie netstata nakierował mnie –MW- dzięki Mariusz |
|
| Autor: | MarkosX [ czwartek, 8 lutego 2007, 14:37 ] |
| Tytuł: | |
„Czy to działa ?” W tej chwili, w mojej sieci, na dwóch kompach w LAN-ie (na kablach) i w fazie ciągłych testów, zmian, poprawek. „Co mnie LAN interesuje, tu przecież chodzi o WLAN i wardriver-ów wbijających się do sieci (podmieniających: IP, MAC-a. WEP-a i Bóg wie co jeszcze!) i kradnących net! Więc, czy to będzie działać w WLAN-ie, wiadomo, że w WLAN-ie czasem zrywa się połączenie, nawet parę pingów pod rząd może się zerwać – czy wtedy SSH nie zerwie połączenia?” W tej kwestii należy w pliku sshd_config (/etc/ssh/) dobrać odpowiednie ustawienia. Interesują nas w sumie 3. TCPkeepalive yes ClientAliveInterval 2 #ClientAliveCountMax 1 (do testów) (takie mam ustawiania w tej chwili, w pliku sshd_config) W tym miejscu akurat nie wszystko jest dla mnie jasne. Mianowicie: TCPkeepalive yes – utrzymuj/sprawdzaj aktywne połączenia. ClientAliveInterval 2 – z moich testów wynika, że po pomnożeniu wartości 2 przez 4 uzyskujemy 8s po których w razie nagłego zerwania połączenia (reset kompa usera, zanik prądu, zerwanie połączenia radiowego itp.) serwer zamieni stan połaczęnia: z ESTABLISHED na FIN_WAIT1 - w przypadku użycia netstat z ESTABLISHED na CLOSE w przypadku użycia netstat-nat. #ClientAliveCountMax 1 – tutaj nie wiem, czy jest to “zamiennik” dla TCPkeepalive, który jest w przeciwieństwie do TCPkeepalive jest „not spoofable” – nie skanowalny przez sniffery ?, zapraszam mądrzejszych do manuala openssh jest tam ładnie ta opcja opisana po angielskiemu Pytania: „1. Mam 100 userów podpiętych do serwera, czy skrypt podczas sprawdzania aktywnych userów i ew. ich blokowania nie obciąży mi za mocno serwera ? 2. Czy SSH zniesie powiedzmy 60 nawiązanych połączeń naraz ? 3. Czy mając 100 userów będę musiał dodać 100 kont na serwerze, utworzyć 100 plików jako shell (sic!) ? 4. Czy netstat bezproblemowo wyświetli np. 60 połączeń nawiązanych za każdym wywołaniem skryptu przez crona ? 5. Czy mając 100 userów i dodawaniu i odejmowaniu na zmianę regułek do iptables, iptables się nie zawiesi/przestanie prawidłowo funkcjonować itp. ? 6. Czy mając 100 userów podpiętych do serwera wszystko będzie działać ok. ? 7. Jak to wszystko się ma do dhcp ? 8. No ok., ale chce zablokować klientowi neta, bo nie płaci, da się to zrobić ? 9. Czy ten klient SSH działa pod win 98SE/ME ?” 1. To zależy jak masz mocną maszynę (szybkiego proca), co ile byłby wykonywany skrypt, no i przede wszystkim od ilości userów. 2. Nie wiem. 3. Niestety tak (też mi się to nie podoba). Nie znalazłem do tej pory innej metody zabezpieczenia serwera (shella) przed userami i jednocześnie zabezpieczenia sieci. (Może chroot – nie sprawdzałem jeszcze tego). 4. Nie wiem. 5. Nie wiem. 6. Nie wiem, aby odpowiedzieć na to pytanie trzeba by po prostu przeprowadzić test na tych przykładowych 100 userach 7. Nie mam pojęcia, nigdy nie używałem DHCP. 8. Musi się dać J Po prostu usuwasz jego IP ze skryptu i masz wolną rękę. 9. Nie wiem, nie sprawdzałem ,ale powinien działać. No i to by było chyba na tyle Na zakończenie chciałbym jeszcze napisać, że pomysł na początku wyglądał inaczej, tzn. powiedziałbym, że ewoluował z czasem. Czasem w wyniku przemyśleń, czasem przypadkiem (metoda prób i błędów połączona z kombinacjami alpejskimi). Na początku chciałem wszystko zrobić poprzez stronę html (cgi), tzn. user się loguje na stronie (certyfikat, SSL, czyli połączenie szyfrowane tak jak w przypadku banków on-line itd.) i odblokowuje sobie tym samym neta, ale to był nie wypał totalny, szybko porzuciłem ten zamysł, aby zająć się SSH (na co też mnie naprowadził nieświadomie –MW-) Przez długi czas trzymałem się koncepcji takiej, że skrypt miał sam blokować i odblokowywać userów, ale wtedy jeśli skrypt byłby wykonywany np. co 1 minutę, wtedy user po włączeniu kompa musiałby czekać na moment przeładowania się skryptu, aby uzyskać dostęp do netu, czyli przedział od 1 do 59 sekund (w zależności jakby trafił) – nie podobało mi się to i userom pewnie też by się nie podobało. I tak właśnie doszedłem do tego momentu, choć jeszcze sam nie jestem pewien, czy moja praca nie poszła na marne..jeśli nawet, to chociaż próbowałem coś stworzyć. MarkosX |
|
| Autor: | -MW- [ niedziela, 11 marca 2007, 03:04 ] |
| Tytuł: | |
duzo pytan i odpowiedzi ale nie widze najwazniejszego - po co to wszystko? |
|
| Autor: | qbaf [ niedziela, 11 marca 2007, 10:34 ] |
| Tytuł: | |
-MW- pisze: duzo pytan i odpowiedzi ale nie widze najwazniejszego - po co to wszystko? Twisted Evil MarkosX pisze: tu przecież chodzi o WLAN i wardriver-ów wbijających się do sieci (podmieniających: IP, MAC-a. WEP-a i Bóg wie co jeszcze!) i kradnących net! MarkosX |
|
| Autor: | p0w0 [ niedziela, 11 marca 2007, 13:48 ] |
| Tytuł: | |
Dużo z tym roboty, a są inne (wg. mnie lepsze) rozwiązania (np. pppoe). Kolejna rzecz, to czy da się to odpalić pod linuxem? Nie wszyscy używają systemów M$. |
|
| Autor: | Maciek [ niedziela, 11 marca 2007, 15:19 ] |
| Tytuł: | |
nie przeczytałem całego wątku zbyt dokładnie, musze to jeszcze przeanalizować. Odniosę się tylko do ostatniej wypowiedzi - czemu nie pppoe? Otóż sam nie mam z tym doświadczeń, ale znam sytuację - sieć radiowa na osiedlu, około 200 klientów, następuje przerwa w dostawie prądu, po chwili napięcie wraca, klienci logują się ponownie i na serwerze wisi koło dwustu martwych interfejsów pppoe*. To jest niewątpliwie argument przeciw. |
|
| Autor: | pectosol [ niedziela, 11 marca 2007, 20:47 ] |
| Tytuł: | |
MarkosX pisze: „Co mnie LAN interesuje, tu przecież chodzi o WLAN i wardriver-ów wbijających się do sieci (podmieniających: IP, MAC-a. WEP-a i Bóg wie co jeszcze!) i kradnących net!
Proponuję WPA2/AES i kontrola po MACu + przeglądanie logów. Łamanie takich kluczy jest trudne i czasochonne przez co odpuszczają sobie takie sieci domorośli wardriverzy. I to wystarczy zwłaszcza że większość sieci nie jest wcale zabezpieczona. A jeśli już masz ochote na coś więcej to może zainteresuj się radiusem... po co wymyślać jeszcze raz koło? |
|
| Autor: | Maciek [ niedziela, 11 marca 2007, 21:08 ] |
| Tytuł: | |
pectosol pisze: A jeśli już masz ochote na coś więcej to może zainteresuj się radiusem... po co wymyślać jeszcze raz koło?
Czy wiesz co piszesz? Sam radius jest wyłącznie serwerem uwierzytelniania i bez czegoś jeszcze jest bezużyteczny. |
|
| Autor: | Albercik [ niedziela, 11 marca 2007, 21:52 ] |
| Tytuł: | |
Maciek pisze: nie przeczytałem całego wątku zbyt dokładnie, musze to jeszcze przeanalizować. Odniosę się tylko do ostatniej wypowiedzi - czemu nie pppoe?
Otóż sam nie mam z tym doświadczeń, ale znam sytuację - sieć radiowa na osiedlu, około 200 klientów, następuje przerwa w dostawie prądu, po chwili napięcie wraca, klienci logują się ponownie i na serwerze wisi koło dwustu martwych interfejsów pppoe*. To jest niewątpliwie argument przeciw. Maćku, skąd to wyssałeś? Chyba z palca , bo nie znam takiej sytuacji , bo coś takiego nie istnieje, a przypomnę , że byłem jednym z pionierów z pppoe na NND i po dziś dzień tego używam na każdym z serwerów. To idealne rozwiązanie, działające doskonale. Nie rozgłaszajcie mitów, nie macie doświadczenia ? Zapytajcie!!!! Jedyne, czego brakuje, to jakiś sensowny panel do administracji pppoe - nie ważne czy poprzez konsolę ssh, www czy jakikolwiek moduł, ale właśnie tego brakuje . Edycja tych samych plików za każdym razem powoli może zacząć drażnić . |
|
| Autor: | luki_nowy [ niedziela, 11 marca 2007, 23:26 ] |
| Tytuł: | |
moze cos wymodzisz albercik co |
|
| Autor: | Albercik [ poniedziałek, 12 marca 2007, 00:09 ] |
| Tytuł: | |
luki_nowy pisze: moze cos wymodzisz albercik co
Wybacz, ale nie spotkałem się z takimi problemami. To ustawiasz w pppoe-server-options - kiedyś już wypociłem spory opis. |
|
| Autor: | czerwo [ niedziela, 18 marca 2007, 09:54 ] |
| Tytuł: | |
Przeczytalem wsio. Da sie to zrobic. Na kleintach ktorzy maja linuxa tez by to dzialalo. Autoryzacja przez klucze a nie przez haslo i bedzie wsio bujac. Nie podoba mi sie uzycie netstata. IMO ciagnac logi z dhcp albo w ogole inaczej zalatwic sprawe ;] Pare rzeczy mi sie nei podoba ale pomysl warty uwagi. |
|
| Autor: | 2jarek [ piątek, 11 maja 2007, 21:46 ] |
| Tytuł: | |
Dopiero zauważyłem skrobie coś podobnego w wersji ekstremalnie uproszczonej wg mnie najprostsze i najlepsze jest logowanie po http można przekierować niezalogowanego na stronke z telefonem do admina i migiem dostanie hasło nawet jak zapomniał zgubił itp nie musi być to super bezpieczne nie dajmy sie zwariować. |
|
| Strona 1 z 1 | Strefa czasowa UTC+2godz. |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|