Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest wtorek, 17 czerwca 2025, 17:41

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 13 ] 
Autor Wiadomość
Post: czwartek, 8 lutego 2007, 14:36 
Offline

Rejestracja: środa, 2 listopada 2005, 00:08
Posty: 69
Lokalizacja: almost Gdańsk
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 :P, nie jestem biegły w iptables)
Zadaniem skryptu jest sprawdzanie userów aktywnych (netstat –n), połączonych poprzez klienta ssh i blokowanie ich taką regułką:
: [/] [] ()
$i -t filter -A SECURE -s $no_IP -p tcp --dport ! $PORT -j DROP.

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 :) , po tym czasie mógłby sobie co najwyżej pingi popuszczać o ile nie zablokowalibyśmy też protokołu icmp.

„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 :P

„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 :D )
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 :P ).

„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 ;) )

_________________
W LAN-ie wszyscy jesteśmy jedną wielką rodziną.
DSL 4mbit | 12 osób


Ostatnio zmieniony piątek, 9 lutego 2007, 00:47 przez MarkosX, łącznie zmieniany 2 razy

Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 8 lutego 2007, 14:37 
Offline

Rejestracja: środa, 2 listopada 2005, 00:08
Posty: 69
Lokalizacja: almost Gdańsk
„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 :) , a ja tylu nie mam w swojej sieci, więc nie mam takiej możliwości.
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 :) Co Wy na to ?

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

_________________
W LAN-ie wszyscy jesteśmy jedną wielką rodziną.
DSL 4mbit | 12 osób


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 03:04 
Offline
Użytkownik

Rejestracja: sobota, 14 maja 2005, 15:07
Posty: 3177
Lokalizacja: Busko-Zdrój
duzo pytan i odpowiedzi ale nie widze najwazniejszego - po co to wszystko? :twisted:

_________________
Pomógł? wypij jego zdrowie.
http://nnd-linux.pl/faq.php
http://wiki.nnd.freesco.pl/index.php/FAQ


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 10:34 
Offline
Użytkownik

Rejestracja: niedziela, 10 września 2006, 18:33
Posty: 228
Lokalizacja: Żyraków ok. Dębicy
-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


:roll: [/quote]

_________________
WRT54G v3.1 z TOMATO
Ovislink 5460+APPRO + Yagi 12dbi
2048/256 3 users
LaFonera + FON
DLink DNS-323 2x320GB WD RAID0


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 13:48 
Offline
Użytkownik

Rejestracja: wtorek, 17 maja 2005, 21:35
Posty: 100
Lokalizacja: Nowy Targ
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$.

_________________
Siec1: DSL8Mbit NND 2006.01 | PIII800MHz 128MB RAM 20GB, 30GB HDD | 29 users |

Sieć2: 3Mbit Tomato 1.11 | Linksys WRT54 GL1.1- EU | 12 users

Siec3: DSL1Mbit NND 0.2.2 | PIII1000MHz 128MB RAM 12GB | 6 users |


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 15:19 
Offline
Honorowy Admin

Rejestracja: piątek, 5 lipca 2002, 17:30
Posty: 7800
Lokalizacja: Słupsk
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.

_________________
Obrazek Belfer.one.PL
Obrazek Audio Cafe


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 20:47 
Offline
Użytkownik

Rejestracja: niedziela, 9 kwietnia 2006, 10:14
Posty: 316
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?


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 21:08 
Offline
Honorowy Admin

Rejestracja: piątek, 5 lipca 2002, 17:30
Posty: 7800
Lokalizacja: Słupsk
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.

_________________
Obrazek Belfer.one.PL
Obrazek Audio Cafe


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 21:52 
Offline
PGF

Rejestracja: sobota, 15 marca 2003, 13:54
Posty: 2780
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ć .

_________________
Internet TV telefon - Nakło nad Notecią
NoNieno.pl - urywa gacie :)
Szybkie kobiety i piękne samochody


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 11 marca 2007, 23:26 
Offline
Użytkownik

Rejestracja: niedziela, 16 kwietnia 2006, 01:41
Posty: 200
moze cos wymodzisz albercik co :D a tak pyatnie male np masz klienta rozlaczy mu neta spowodowane zerwaniem polacznia to 1 minute musi czeka zeby net mu zadzialal bo jak sie wczesniej polaczy to nie dzial co powiesz mi o tym moze idzie to jakos inaczej zrobic nie wiem :idea: :?:


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: poniedziałek, 12 marca 2007, 00:09 
Offline
PGF

Rejestracja: sobota, 15 marca 2003, 13:54
Posty: 2780
luki_nowy pisze:
moze cos wymodzisz albercik co :D a tak pyatnie male np masz klienta rozlaczy mu neta spowodowane zerwaniem polacznia to 1 minute musi czeka zeby net mu zadzialal bo jak sie wczesniej polaczy to nie dzial co powiesz mi o tym moze idzie to jakos inaczej zrobic nie wiem :idea: :?:


Wybacz, ale nie spotkałem się z takimi problemami. To ustawiasz w pppoe-server-options - kiedyś już wypociłem spory opis.

_________________
Internet TV telefon - Nakło nad Notecią
NoNieno.pl - urywa gacie :)
Szybkie kobiety i piękne samochody


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 18 marca 2007, 09:54 
Offline
MODERATOR

Rejestracja: wtorek, 31 sierpnia 2004, 23:06
Posty: 3267
Lokalizacja: Katowice
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.

_________________
Obrazek


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: piątek, 11 maja 2007, 21:46 
Offline
Użytkownik

Rejestracja: środa, 13 kwietnia 2005, 12:02
Posty: 136
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ć.

_________________
http://jnet.republika.pl/ TANI INTERNET KOSZALIN


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 13 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl