# netstat marny wynik

## soban_

Przy wywolaniu polecenia na Gentoo:

```
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
```

dostaje marny wynik (kilka polaczen gdzie powinno ich byc conajmniej kilkaset) na VPSie. Gdzie na debianie - dedyku zwraca mi wszystko polaczenia - UDP/TCP i mase adresow IP z ktorymi zostalo nawiazane polaczenie. Mysle ze problem tkwi gdzies w netstacie bo przy iftop -p -P -n -N zwraca mi o niebo wiecej polaczen - na Gentoo. 

```
vps-gentoo ~ #  netstat --version

net-tools 1.60_p20120127084908

netstat 1.42 (2001-04-15)

Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others

+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N

AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH

HW:  +ETHER +ARC +SLIP +PPP +TUNNEL +TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64
```

Debian (gdzie dziala to poprawnie):

```
debian ~ #netstat --version

net-tools 1.60

netstat 1.42 (2001-04-15)

Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang and others

+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N

AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE

HW:  +ETHER +ARC +SLIP +PPP +TUNNEL +TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64
```

Make:

```
cat /etc/make.conf

CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=nocona -O2 -pipe"

CXXFLAGS="${CFLAGS}"

GENTOO_MIRRORS="http://gentoo.mirror.pw.edu.pl/ "

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

FETCHCOMMAND="/usr/bin/wget --limit-rate=605k -t 5 --passive-ftp -P \${DISTDIR} \${URI}"

RESUMECOMMAND="/usr/bin/wget --limit-rate=605k -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"

MAKEOPTS="-j5"

FEATURES="parallel-fetch metadata-transfer"

PORTAGE_NICENESS="19"

ACCEPT_KEYWORDS="~amd64"

USE="tcl apache2 berkdb bzip2 cli crypt ctype cxx embedded fileinfo filter ftp

     gadu gcj gd gdbm hash iconv java jpeg json kerberos -ldap lzma mysql

     mysqli ncurses nls openmp pcre pdo phar php png posix postgres readline

     session sftp simplexml slang sockets spell sqlite ssl suexec symlink

     threads tokenizer truetype unicode unzip xml xmlrpc zip zlib -X -alsa

     -gnome -gtk -ipv6 -kde -kde4 -pv6 -qt3 -qt3support -qt4"

#LINGUAS="pl"

#LANGUAGE=48

#source /usr/local/portage/layman/make.conf
```

More:

```
vps-gentoo ~ # eix net-tools

[I] sys-apps/net-tools

     Available versions:  1.60_p20110409135728 (~)1.60_p20111120203157 (~)1.60_p20120127084908{tbz2} **9999 {{nls old-output static}}

     Installed versions:  1.60_p20120127084908{tbz2}(00:03:24 07/17/12)(nls -old-output -static)

     Homepage:            http://net-tools.sourceforge.net/

     Description:         Standard Linux networking tools
```

Sam netstat -v tez nie zwraca mi wszystkiego... wniosek jest taki, ze to raczej wina netstata, w jaki sposob moge rozwiazac takowy problem - aby wyswietal mi wszystkie polaczenia?

----------

## Jacekalex

```
qlist -ICvUq net-tools

sys-apps/net-tools-1.60_p20110409135728 nls
```

Chodzi raczej normalne, inna sprawa, że ani to dzialanie szybie, ani szczególnie sensowne.

Zainteresuj sie poleceniami 

```
lsof -i
```

oraz

```
/sbin/ss  ### jest w paczce iproute2
```

do tego np program iptstate, albo darkstat/ntop/nethogs.

SOA#8

```
man ss

man lsof
```

Pozdrawiam

 :Cool: 

----------

## soban_

No wszystko fajnie, ale musze jakos listowac liste polaczen + ip - bo albo zedytuje ten skrypt: http://deflate.medialayer.com/ ktory dziala z APFem i do tego wlasny skrypt napisalem - np zeby moich ludzi z ftpa nie wykopywalo - przy przekroczeniu za duzej ilosci polaczen, albo wszystko pisac musze od nowa sam. Zedytuje ta wiadomosc i napisze czy pomoglo z cofnieciem sie z wersja (jak widac wyzej i tutaj):

Kod:

qlist -ICvUq net-tools 

sys-apps/net-tools-1.60_p20120127084908 nls

co do skryptu ktory podalem wyzej to skutecznie broni ataki DoS - dlatego musze miec poprawnie dzialajace to polecenie. 

//EDIT 

zrobilem downgrade do wersj sys-apps/net-tools-1.60_p20110409135728 - jednak efekt jest ten sam. Gwoli scislosci polecenie wykonuje sie poprawnie - jednak pokazuje baaaardzo mala ilosc polaczen np po UDP. Moze tkwic przyczyna w kernelu? Najbardziej mnie to zastanawia ze iftop -p -P -n -N pokazuje ladnie, duza ilosc polaczen... Tutaj jest konfiguracja kernela - ktorego uzywam. Czy jest mozliwosc ze netstat korzysta z jakies aplikacj wspomagajacej ktorej np brakuje dowiazania? *Jacekalex wrote:*   

> Zainteresuj sie poleceniami 
> 
> ```
> lsof -i
> ```
> ...

 Zwraca mi np:

```
ts3server  2673    ts   23u  inet   5105      0t0  UDP *:9987

ts3server  2673    ts   25u  inet   5106      0t0  TCP *:20097 (LISTEN)
```

A mi chodzi o konkretne adresy IP (wylistowanie ich) wraz z iloscia polaczen jakie nawiazuja. *Jacekalex wrote:*   

> 
> 
> ```
> /sbin/ss  ### jest w paczce iproute2
> ```
> ...

 To samo co wyzej, pokazyje tyle ze po TCP (ssh) - jakby wyzej portow w gore np 9987 nie listowal juz...ja potrzebuje WSZYSTKIE polaczenia + ilosc z danego ip jakie przychodza/wychodza. To wyglada jakby nie listowalo w nestacie wyzszych portow.

----------

## Jacekalex

Widzialeś kiedyś mana ss?

bo u mnie w przypadku 

```
ss -a
```

 pokazuje wszystko, co aktualnie leci na kompie, na wszystkich portach.

A ma kilka innych parametrów, niektóre dość ciekawe.

Za to lsof potrafi wyciagnać wszystkie parametry, jakie potrzebujesz, też ma kilka parametrów.

Jak natomiast masz problem z atakami ddos, to limity polaczeń, jeśli jakieś wymyślniejsze ataki, zainteresuj się parą snort + snortsam/guardian.pl, calkiem nieźle można to ustawić.

Natomiast UDP - to jest protokół bezpołączeniowy, więc może dlatego nie łapie tego  tak elegancko.

Poza tym nie przyszło Ci do głowy, że różnica miedzy Gentoo a Debianem jest gównie w kernelu?

Bo netstat pokazuje to, co znajdzie w /proc lub /sys, a to, co się tam znajduje, pochodzi z kernela.

Edyta:

```
ss -tun | awk '{print $5}' |awk -F':' '{print $1}' |grep -v Addres |cut -d: -f1 | sort | uniq -c | sort -n 
```

Wynik tego polecenia i netstat -apn się praktycznie pokrywają  (u mnie).

Myślę, ze różnica między iftop a netstat wynika z faktu, ze nestat, lsof i ss pokazują migawkę z danej ,0001 sekundy, a iftop łapie każde polączenie, bo dziala cały czas.

I różnica między Debianem a Gentoo pewnie wynika z faktu, że Gentoo krócej trzyma w pamięci informacje o pakietach udp, dlatego w poszczególnej migawce, trwającej 0.0001 sekundy jest X razy mniej niż w Debianie.

biorąc pod uwagę, że jedno otwarte gniazdo to okolo 1,5 kB - to Gentoo dziala sensowniej, iszczędzajac obciążenie ramu.  :Wink: 

Jak chcesz kombinować z zabezpieczeniami dos/ddos, zainteresuj się lepiej firewallem, który widzi wszystkie pakiety, przez cały czas.

Jeśli ten twój ts3 działa na protokole udp, i ataki są pakietami udop, to może rzucisz okiem na taki myk do Asteriska:

http://www.howtonix.com/block-ddos-attack-sip-server/

Chyba, ze chcesz sprawdzać u źródła:

```
cat /proc/net/ip_conntrack | egrep '^udp|^tcp'
```

Pozdrawiam

 :Cool: 

----------

## soban_

 *Jacekalex wrote:*   

> 
> 
> ```
> ss -a
> ```
> ...

 No u mnie tutaj tez jest marnie, pokazuje mi tylko IP ktore mam zewnetrzne i nawiazanych z nim polaczen po TCP + porty otwarte np:

```
LISTEN      0      50                                                    127.0.0.1:mysql 
```

 *Jacekalex wrote:*   

> Jak natomiast masz problem z atakami ddos, to limity polaczeń, jeśli jakieś wymyślniejsze ataki, zainteresuj się parą snort + snortsam/guardian.pl, calkiem nieźle można to ustawić.

 Na pewno zerkne na to, wiec dzieki.

 *Jacekalex wrote:*   

> Natomiast UDP - to jest protokół bezpołączeniowy, więc może dlatego nie łapie tego  tak elegancko.
> 
> Poza tym nie przyszło Ci do głowy, że różnica miedzy Gentoo a Debianem jest gównie w kernelu?

 To jak dziala TCP/UDP to wiem, mysle ze tutaj mozesz miec racje, tylko gdzie tego szukac (tej roznicy) - ewentualnie jak?

 *Jacekalex wrote:*   

> Edyta:
> 
> ```
> ss -tun | awk '{print $5}' |awk -F':' '{print $1}' |grep -v Addres |cut -d: -f1 | sort | uniq -c | sort -n 
> ```
> ...

  No u mnie pokazuje tylko zewnetrzne IP + ilosc polaczen jakas marna z nim (~4) i nic wiecej...

 *Jacekalex wrote:*   

> Myślę, ze różnica między iftop a netstat wynika z faktu, ze nestat, lsof i ss pokazują migawkę z danej ,0001 sekundy, a iftop łapie każde polączenie, bo dziala cały czas.
> 
> I różnica między Debianem a Gentoo pewnie wynika z faktu, że Gentoo krócej trzyma w pamięci informacje o pakietach udp, dlatego w poszczególnej migawce, trwającej 0.0001 sekundy jest X razy mniej niż w Debianie.
> 
> biorąc pod uwagę, że jedno otwarte gniazdo to okolo 1,5 kB - to Gentoo dziala sensowniej, iszczędzajac obciążenie ramu. ;)

 No wlasnie, a masz pomysl gdzie moge z tym sie powalczyc? Bo szczerze przy tych wszystkich skryptach nie na reke mi dziala to getnoo d-: mimo ze moze dzialac optymalniej.

 *Jacekalex wrote:*   

> Jak chcesz kombinować z zabezpieczeniami dos/ddos, zainteresuj się lepiej firewallem, który widzi wszystkie pakiety, przez cały czas.

 A masz jakis przyklad, czy myslisz raczej o fizycznym fw?

 *Jacekalex wrote:*   

> Jeśli ten twój ts3 działa na protokole udp, i ataki są pakietami udop, to może rzucisz okiem na taki myk do Asteriska:
> 
> http://www.howtonix.com/block-ddos-attack-sip-server/

 TS ma otwarte przynajmniej standardowo 4 porty, hakierzy atakuja nawet przy pomocy ab w strone po to, zeby obciazyc procesor - wiem mod_evasive + dobry serwer do strony i mozna sie przed tym zabezpieczyc. Jednak ten skrypt co wyzej podalem, bronil maszyny na roznych portach ograniczajac dane IP do wybranej ilosci polaczen. Wszystko byloby fajnie, bo moglbym to skrocic do iptables - gdyby nie ludzie ktorzy przesiaduja na maszynie np po ftp/panelu itp, bo tutaj to byloby przesada wykopywanie ich, a przerabianie wszystkich skryptow to teraz psu na bude troche. Oczywiscie do APFa moge doczepiac wstawki z iptables, to nie problem. Jednak sam skrypt w sobie byl/jest bardzo skuteczny - moze troche to partyzantka, ale spelnia swoja role.

 *Jacekalex wrote:*   

> Chyba, ze chcesz sprawdzać u źródła:
> 
> ```
> cat /proc/net/ip_conntrack | egrep '^udp|^tcp'
> ```
> ...

 No to juz znacznie wiecej informacji mi daje - nie wiem czy tego nie przerobic do listowania + ilosci polaczen, pytanie czy zwraca to WSZYSTKIE polaczenia?

----------

## Jacekalex

@Soban

Czy naprawdę chcesz pobić rekord lamerstwa?

WSZYSTKIE połączenia tcp i udp trafiają do systemu śledzenia połączeń netfiltera, który widać w wyniku 

```
cat /proc/net/ip_conntrack 
```

Żeby obraniczyć liczbę polączeń z jednego IP lub jednej sieci, stosuje się moduł iptables connlimit - ten dziala zawsze, i obejmuje również protokół UDP.

Jeśli chcesz dopasować reguły na podstawie stanu połączenia, używa się modulu state.

Do tego masz moduł hashlimit, pozwalający limitować liczbę prób połączenia wspólnie z modułem state, w odniesieniu do konkretnych portów i protokolów.

Natomiast ciągle miauczysz o atakach DOS, ale nie piszesz, jak dokładnie takie ataki przebiegają.

Czy ktoś bombarduje porty teamspeaka fragmetowanymi pakietami UDP, blokując rurkę?

Czy TS ma autoryzację, a ktoś próbuje wbić się na TSa metodą bruteforce, czy jakieś inne przypadki mają tam miejsce.

Jeśli np kłopot jest z zalewem pakietów UDP, ktore mają określoną treść, np przy protokole SIP zawierają REGISTER, to można ubić to przy pomocy hashlimit, i modulu string, traktując pakiet czystym regexem.

Jednak żeby używać modułu string, trzeba dobrze znać pakiety, jakimi posługuje się TS i ich zawartość przy poszczególnych akcjach, które chcesz limitować.

Prościej jest, jeśli ten cholerny TS ma jakieś logi, z których wiesz o ataku np łamania hasła metodą słownikową, użyć jakiegoś demona, np Swatcha albo ]Fail2ban[url]a, który będzie parsował log, i uwalał skrypciarzy dodając ich Ipki do Firewalla, albo lepiej Ipseta.

Dalatego ewentualnia blokada ataku musi się odnosić do rzeczywistego przebiegu ataku, i odróżniać klientów od atakujących na podstawie faktycznych informacji, wszystkich, jakie masz w logach, a nie lamerskiego sprawdzania samego netstata.

A od firewalla, poprzez jakiś prosty IPS aż po zabawy ze Snortem i Snortsamem, masz możliwości, ile duszyczka zapragnie, jesli oczywiście czaisz bazę.

I zdecyduj się, czy ten TS chodzi po TCP czy UDP, bo ubicie AB czy innego lamerskiego narzędzia, to jest wręcz dziecinada, przy pomocy samego hashlimit w iptables.

W każdym razie - co do zabawy z netstatem i skryptem to masz gotowe narzędzie connlimit w iptables, i nie musisz go rzeźbić w bashu od zera, używając crona do uruchomienia.    :Very Happy: 

 *Quote:*   

>  Oczywiscie do APFa moge doczepiac wstawki z iptables,

 

Myslę, że to może być Twój problem.

Jakiś cud skrypt generator, i do niego możesz dodać regułki?

Piszesz poważne, czy żartujesz?

Poza samą regułką ważne jest, gdzie ta regułka ląduje w firewallu, jak współgra z innymi łańcuchami i regułami.

Ważna jest kolejność reguł, i to, która regula kończy lub nie kończy przetwarzania pakietu, i z jakim rezultatem ten koniec przetwarzania następuje.

Opcji i możliwości jest tyle, że mózgu Administratora żaden super-mega-wypas-skrypt nie zastąpi.  :Smile: 

Pozdrawiam

 :Cool: Last edited by Jacekalex on Sun Jul 29, 2012 12:08 pm; edited 1 time in total

----------

## soban_

 *Jacekalex wrote:*   

> @Doban 

 @Soban chyba ; p

 *Jacekalex wrote:*   

> W każdym razie - co do zabawy z netstatem i skryptem to masz gotowe narzędzie connlimit w iptables, i nie musisz go rzeźbić w bashu od zera, używając crona do uruchomienia.   :D 
> 
> 8)

 Tak wiedzialem o tym bo tu @SlashBeast wspomnial o tym, a co to za roznica jaki rodzaj ataku DoS jest prowadzony? Wazne zeby ograniczyc ilosc polaczen, co do fail2ban uzywam od dawna tego, tutaj raczej chodzi np o port do plikow TSa (do przesylania ich) gdzie mozna walic po TCP/UDP, nie moa roznicy, efekt jest taki ze w koncu gorna granica packetlostow bedzie tak duza iz ubity zostanie serwer TSa. Uwierz mi ze tutaj, nie ma znaczenia gdzie znajda port, ktorego beda starac sie naduzyc - bo co ja moge tutaj opisac? Atak idzie w 9987, querry (TSa) wczesniej byly systematycznie napierdzielane po TCP, oraz port licencji (do jej sprawdzania) i wysylania plikow. Tutaj mozna jeszcze naduzyc bazy danych, na pare sposobow - tego jest MASA. Sam TS ma przynajmniej 4 porty otwarte, a co mowic o innych uslugach gdzie np na maszynie jest tez serwer minecrafta - gdzie znowu kolejne porty sa?

Generalnie to tak jak Ci opisalem, ograniczyc ilosc polaczen, owszem connlimit - to zalatwi, ale co zrobisz w przypadku gdy osoba sle cos po FTP (miej tez to na uwadze w tym przypadku ze tez moze byc atak prowadzony brute-force na FTP albo zwykly flood) i zrobi mase tych polaczen? Tez go wywalisz z sieci? I tutaj zaczynaja sie schodzy...a ja nie uzywam tego w cronie bo przez 1 minute moglby atak trwac, zostac przerwany i tak caly czas (tak jak wspomnialem skrypt jest mocno przerobiony d-: i dopasowany), to trzeba czesciej wywolywac i sprawdzac tez czy dane IP powinno byc zablokowane czy jednak nie... Tutaj trzeba chronic cala maszyne, a nie pojedynczy port 9987 i jednoczesnie miec to na uwadze, ze nie kazda generowana duza ilosc polaczen jest atakiem - trzeba odseparowac szkodliwe polaczenia od nawiazanych poprawnie.

----------

## Jacekalex

Czy chcesz mi wmówić, że nie ma żadnego sposobu na dozbrojenie serwera FTP?

Żadnego sposobu na limitowanie pasma, plików przesyłanych, liczby maks połaczeń, itp?

Albo port do sprawdzania licencji TSa?

Akurat TSa nie znam, ale tam leci TCP czy UDP?

Ile razy na sekundę musi każdy pacjent sprawdzać licencję TSa?

Przecież, jeśli jeden port jest do sprawdzania licencji, a każdy np gracz musi tą licencję sprawdzic np raz na 5 minut, to tu aż się prosi o użycie modulu hashlimit albo recent, który będzie wpuszaczal np 20 razy na godzinę (hashlimit), albo raz na 5 minut (recent), z jednego IP.

Tu masz przykład recent:

http://www.drzewo-wiedzy.pl/?page=artykul&id=210&Wykorzystanie_iptables_do_blokowania_atak%C3%B3w_typu_Brute_Force_SSHSCAN

A o hashlimit masz moje regułki w wątku o syn-flood.

Atak na bazę danych przez TSa? chodzi Ci o siłowy atak dotyczący  logowania, kiedy TS sprawdza w Sql milion rerkórdów na minutę?

Czy ten TS w jakikolwiek sposób loguje podejrzane działania, żeby dało się "wygrepować "z logu co trzeba?

Bo Fail2bana też można skonfigurować, żeby poprawić jego skuteczność.

I ciągle jest za malo danych, zeby coś sensownego wykombinować samym TSem.

Żeby zabezpieczyć jakąś usługę, musisz w miarę dokladnie rozgraniczyć, co robi normalny użytkownik, co robi skrypciarz, który próbuje uwalić serwer, i wyznaczyć na tej podstawie granicę tego, na co pozwalalsz, a na co nie pozwalasz.

I nie tylko Firewall tu jest, być moze kolejki zarządzające pasmem i priorytetami usług pomogą trochę na zapychanie TSa?

Zalezy do tego, czy to uprawnieni użytkownicy zapychają serwer, czy jacyś skrypciarze.

Ale musisz się nauczyć rożróżniać jednych i drugich, a potem wziąść jednych i drugich na smycz, żeby nie mogli za bardzo rozrabiać.  :Smile: 

Pozdrawiam

 :Cool: 

----------

## soban_

 *Jacekalex wrote:*   

> Albo port do sprawdzania licencji TSa?

 Licencja serwera jest sprawdzana, pacjentow sie generalnie nie sprawdza...

 *Jacekalex wrote:*   

> Akurat TSa nie znam, ale tam leci TCP czy UDP?

 Zalezy do czego, UDP do komunikacji glosowje, aby user mogl zostawic plik na pokoju to juz wiadomo TCP (logika), querry tez TCP - tutaj np wchodzi gametracker u mnie tylko i wylacznie, bo jakbym otworzyl ten port to zwyklym  floodem na ten port po polaczeniach TCP serwer sie momentalnie wyklada

 *Jacekalex wrote:*   

> Ile razy na sekundę musi każdy pacjent sprawdzać licencję TSa?

 Cos takiego jak sprawdzanie licencji u usera nie istnieje, nawiazywane jest polaczenie z serwerem TSa glownym i sprawdzanie, czy serwer istnieje. To samo tyczy sie np querrego minecrafta czy samego polaczenia z gra.

 *Jacekalex wrote:*   

> Przecież, jeśli jeden port jest do sprawdzania licencji, a każdy np gracz musi tą licencję sprawdzic np raz na 5 minut, to tu aż się prosi o użycie modulu hashlimit albo recent, który będzie wpuszaczal np 20 razy na godzinę (hashlimit), albo raz na 5 minut (recent), z jednego IP.
> 
> Tu masz przykład recent:
> 
> http://www.drzewo-wiedzy.pl/?page=artykul&id=210&Wykorzystanie_iptables_do_blokowania_atak%C3%B3w_typu_Brute_Force_SSHSCAN
> ...

 To co wyzej, chociaz nie twierdze, ze sie to mi nie przyda.

 *Jacekalex wrote:*   

> Atak na bazę danych przez TSa? chodzi Ci o siłowy atak dotyczący  logowania, kiedy TS sprawdza w Sql milion rerkórdów na minutę?

 Tutaj moge Ci mase przykladow podac, np odswiezanie strony gdzie querry zostanie zasrany tak botem ze sie wylozy caly serwer (zostanie nawiazana taka ilosc polaczen ze serwer sam siebie zacznie crashowac) - jesli jest bot na stronie. To jeden z wielu przykladow.

 *Jacekalex wrote:*   

> Czy ten TS w jakikolwiek sposób loguje podejrzane działania, żeby dało się "wygrepować "z logu co trzeba?

  W logach tsa masz tylko i wylacznie komunikaty co dany uzytkownik/administrator robi. Nie masz infomracji na czerwono  JEST PROWADZONY ATAK  widac to po spadku jakosci rozmowy (przerywa) i po informacjach we wlasciwosciach samego serwera - packetlost, moge to wyciagnac np kodzac bota tak, aby zczytywal ta informacje - jesli to cos by pomoglo, jednak wtedy jakie w ogole dzialanie prowadzic? U mnie skrypt jest wywolywany co 5 sek i sprawdza ilosc polaczen - bo co 1 minute w cronie to byloby zdecydowanie za rzadko.

 *Jacekalex wrote:*   

> Bo Fail2bana też można skonfigurować, żeby poprawić jego skuteczność.
> 
> I ciągle jest za malo danych, zeby coś sensownego wykombinować samym TSem.
> 
> Żeby zabezpieczyć jakąś usługę, musisz w miarę dokladnie rozgraniczyć, co robi normalny użytkownik, co robi skrypciarz, który próbuje uwalić serwer, i wyznaczyć na tej podstawie granicę tego, na co pozwalalsz, a na co nie pozwalasz.
> ...

 No dlatego staram sie uniwersalny skrypt nakodzic, sluchaj napastnikowi nie bedzie zalezec w co napierdziela tak na serio, wali pierdylion polaczen w dowolna usluge, aby tylko zaklocic prace serwera - w efekcie go wylozyc. Ja moge zapierac sie tylko rencyma i nogami, aby mu to utrudnic np budujac takie skrypty. Dlatego tak usilnie probowalem znalezc przyczyne w tym netstacie - bo tam wiekszosc rzeczy mam juz gotowych nakodzonych.

Dobra co do FTP sie zgodze, a jak rozroznisz usera ktory wysyla plik na tsa i generuje duza ilosc polaczen - na pokoj wysyla? Tutaj mam najwieksza zagwozdke - bo musi on byc poprawnie polaczony z UDP (9987) i tyle. A co jesli napastnik bedzie walic w 9987 i w 30033? To oslone gucio trafia, mozna napisac bota ktory bedzie sprawdzac poprawne zalogowanie (ewentualnie sprawdzac w logach takowe) dodawac ip do wyjatkow na 30033 i tyle. Jednak zawsze znajdzie sie sposob zeby znalezc w tym dziure np. osobnik atakujacy poprawnie loguje sie z maszyny na serwer tsa, a pozniej wali w port od plikow.

Dodaj jeszcze sprawdzanie querrego do minecrafta i samo zabezpieczenie jego, nie mowiac juz o serwerze wowa, ktory tez ma pare portow otwartych na swiatlo dzienne i innych gier ktore sa stawiane czy uslug.

----------

## Jacekalex

 *Quote:*   

> Tutaj moge Ci mase przykladow podac, np odswiezanie strony gdzie querry zostanie zsarany tak botem ze sie wylozy caly serwer (zostanie nawiazana taka ilosc polaczen ze serwer sam siebie zacznie crashowac) - jesli jest bot. To jeden z wielu przykladow. 

 

albo evasive., albo kiedyś był taki myk ze stroną 404, jeśli była strona statyczna, to wyświetlał statyczną, jeśli jej nie było, to na 404 byl skrypt php, który generował stronę statyczną na "zamówienie".

Nie wiem, czy u Ciebie to wykonalne, w rozmaitych Joomlach,  Wordpressach, Oscommercach, itp,  jak najbardziej, a odświeżać stronę statyczną można, ile duszyczka zapragnie  :Very Happy: 

Jesli masz listę poprawnie zalogowanych pacjentów na porcie 9987, to można zrobić bota, ktory tylko takich będzie wpuszczal na inne porty, po IP, wykorzystując np Ipseta.

Poza tym "walił na port" to kilka różnych działań, inaczej wygląda atak teardrop, inaczej bruteforce do logowania, a inaczej syn-flood.

I każdy z tych ataków trzeba inaczej traktować.

 *Quote:*   

> No dlatego staram sie uniwersalny skrypt nakodzic, sluchaj napastnikowi nie bedzie zalezec w co napierdziela tak na serio, wali pierdylion polaczen w dowolna usluge, 

 

tu się mylisz, odpowiednio ustawiony connlimit i/lub hashlimit|recent -  i może bałwan Pana Administratora co najwyżej pierdylion razy w dooooppppęęę pocałować.

jedyne co naprawdę może, to srać pakietami w takiej ilości, żeby zapchać rurkę do serwera.

A ponieważ Twoj serwer i jego firewall jest na końcu tej rurki, to możesz to albo przeczekać, albo opierdalać Admina serwerowni, że nic z tym nie robi.

Pozdrawiam

 :Cool: 

----------

## SlashBeast

Tak bardzo odeszliscie od pierwotnego tematu.

Anyway, @Soban tak bardzo kombinujesz, chcesz skryptem sprawdzac ilosc aktualnych polaczen, jakies awk, grepy, cuda. Iptables od tego jest, by to limitowac.

-- 

Moved from Polskie forum (Polish) to Polish OTW.

----------

## Jacekalex

 *SlashBeast wrote:*   

> Tak bardzo odeszliscie od pierwotnego tematu.
> 
> Anyway, @Soban tak bardzo kombinujesz, chcesz skryptem sprawdzac ilosc aktualnych polaczen, jakies awk, grepy, cuda. Iptables od tego jest, by to limitowac.
> 
> -- 
> ...

 

Nie tylko iptables:

http://dominia.org/djao/limitipconn.html

http://wiki.nginx.org/HttpLimitReqModule

http://www.proftpd.org/docs/directives/linked/config_ref_MaxClientsPerHost.html

Generalnie wszystkie sensowne serwery usług sieciowych  mają też własne limity połączeń, transferu, i diabli wiedzą, czego jeszcze, tylko ja  zupełnie nie ogarniam, co tam w ogóle pracuje na tych  serwerach radzieckiej agencji kosmicznej   :Wink:  , a Soban tak się zafixował w tych atakach i stolarskich skryptach, że zatracił w ogóle kontakt z rzeczywistością.   :Wink: 

Pozdrawiam

 :Cool: 

----------

## soban_

@SlashBeast - oczywiscie masz racje, ale zauwaz ze te wszystkie skrypty, badziewia i pierdoly ktore tu wypisuje sa oparte o iptables. Chce tylko zachowac sens uzycia do tego iptables - zeby nie przesadzic, bo wiadomo wylimitowac ja moge szybko to - ale czy moi wierni i dobrze korzystajacy z uslug ludzie nie ucierpia na tym?

@Jacekalex - no generalnie tak jak mowilem netstat i jego marne wyniki - tak jak w temacie. Ja i tak wdzieczny Ci jestem, za ilosc podpowiedzi bo na pewno duza dawke z tej wiedzy wykorzystam (jak nie bezposrednio to w skryptach), zeby nie odchodzic od tematu - masz pomysl co w kernelu (tak aby pomoc ludziom ktorzy byc moze w przyszlosci beda mieli cos podobnego z netstatem pomoc) coz to za diabelstwo w kernelu - bo to chyba w nim twki problem, moze powodowac tak marne wyniki i brak podawanyach ipikow z UDP? Wspomniales o tym ze gentoo szybciej 'cache' czysci zwiazanego z tym - a gdzie moze zmienic cus zeby ten 'cache' dluzej byl trzymany? 

Juz bez kombinowania na okretke. Czemu debian daje rade, a gentoo nie - jaka jest roznica? Ewentualnie gdzie jej szukac?

----------

## Jacekalex

Ja bym porównał wyniki 

```
sysctl -a
```

 - chodzi o timeout w życiu gniazda sieciowego.

Głównie chyba: 

```
sysctl -a | grep conntrack
```

W tym dokumencie masz te wszystkie parametry wyjaśnione:

http://www.przybytek.net/download/2.4routing.pdf

A tu masz wersję html:

http://bromirski.net/docs/translations/lartc-pl.html#LARTC.KERNEL

Co  w niczym nie zmienia faktu, że skrypt z crona zamiast connlimit, to nie ma ani śladu sensu.

Pozdrawiam

 :Cool: 

----------

## soban_

@Jacekalex tak, rzeczywiscie to nie ma sensu w cronie, dlatego tak jak mowie - ja np co 5 sekund wywoluje skrypt i sprawdzam w nim miedzy innymi czy ktos nie siedzi na ftp itp, albo w krytycznej sytulacji zaczynam go wywolywac - tzn sama maszyna to robi.

Ku potomnym na okretke:

```
cat /proc/net/ip_conntrack | sed -e 's/\CLOSE_WAIT//;s/\TIME_WAIT//;s/\ESTABLISHED//' | awk '{print $4}' | cut -b 5-20 | sort | uniq -c | sort -n
```

No chyba ze myslicie iz da sie to bardziej zoptymalizowac. Teraz moge Ci @Jacekalex zaprezentowac roznice (adresy IP specjalnie zostaly pozmieniane w 2 miejsach, jednak ich liczba na jednym z VPSow zostala bez zmian):

```
Gentoo-vps ~ # cat /proc/net/ip_conntrack | sed -e 's/\CLOSE_WAIT//;s/\TIME_WAIT//;s/\ESTABLISHED//' | awk '{print $4}' | cut -b 5-20 | sort | uniq -c | sort -n

      1 119.231.1.X47

      1 119.95.17X.27

      1 116.101.1X3.74

      1 116.221.1X0.72

      1 118.235.1X7.0

      1 118.43.2X1.241

      1 213.23X.120.195

      1 213.2X.140.142

      1 31.4X.3.114

      1 31.4X.3.18

      1 31.6X.156.27

      1 71.2X2.190.207

      1 71.2X2.82.2

      1 71.2X3.74.127

      1 71.2X4.84.141

      1 71.2X5.1.46

      1 71.2X5.28.117

      1 71.2X5.97.240

      1 71.1X1.211.178

      1 71.1X1.235.66

      1 71.8X.52.163

      1 71.8X.8.45

      1 71.191.10X.224

      1 81.54.16.X8

      1 81.54.X4.130

      1 81.160.2X4.12

      1 81.11.1X0.36

      1 81.11.2X.14

      1 81.23.2X2.66

      1 81.24.5X.85

      1 81.29.2X9.89

      1 81.30.X6.17

      1 81.3X.90.62

      1 81.3X.136.114

      1 81.6.X00.116

      1 81.1X.23.114

      1 81.2X5.8.226

      1 81.2X1.164.44

      1 81.1X6.197.70

      1 81.1X9.82.29

      1 81.2X5.238.55

      1 81.2X6.88.166

      1 81.2X9.74.100

      1 81.2X8.85.22

      1 81.1X6.55.10

      1 81.2X0.55.158

      1 81.2X8.5.74

      1 81.2X0.164.9

      1 81.6X.32.112

      1 81.6X.35.28

      1 81.7X.26.196

      1 91.2X1.24.79

      1 91.7X.189.152

      1 91.1X4.60.225

      1 91.4X.242.52

      2 91.1X8.121.231
```

Gdzie:

```
Gentoo-vps ~ # netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

      1 114.97.X.1

      1 31.10.X.1

      1 37.11.X.1

      1 81.X.120.1

      4

      6 0.0.0.0
```

Teraz zabieram sie za czytanie i walczenie z tym co podales, zeby konsekwentnie rozwiazac problem.

----------

## Jacekalex

Kilometrowy wątek, żeby polecenie z crona uwalało mietka, ktory ma więcej niż XX aktywnych połączeń?

I to ma robić netstat. cat, grep?

```
iptables -I sipdos -m connlimit --connlimit-upto 5 --connlimit-mask 32 --connlimit-saddr  -j DROP
```

 wchodzi prawidłowo, pozwala na 5 polączeń równoczesnychz jednego IP  w łańcuchu sipdos, przekierowanie do takiego łańcucha portów TS, to jedna regułka.

Co nie przejdzie, logujesz i blokujesz.

Tak sie to robi normalnie i prawidłowo, i nie ma sposobu, zeby to ominąć.

Jak prawidlowo skonfigurujesz firewlalla, to żadne specjalne skrypty nie będa potrzebne do limitowania liczby polączeń z jednego hosta, i nie będzie taki skrypt uwalać gościa, który ma 7 polączeń, bo taki się już nie pojawi, jeśli Pan Administrator nie pozwoli.

TS3 chyba nie jest normalną usługą sieciową w sensie demona Linuxowego, który ma wlasne metody limitowania użytkowników , sesji, priorytetu, transferu, itp.

Ale chyba nie jest tak do końca spieprzony, bo żaden serwer z TS3 nie wytrzymałby w takim przypadku nawet tygodnia.

Więc zastanów się, czy w ogóle ogarniasz zasady konfiguracji bezpiecznego serwera z systemem Gentoo,

 bo mam co do tego poważne wątpliwości.

Pozdrawiam

 :Cool: Last edited by Jacekalex on Sun Feb 17, 2013 11:10 am; edited 1 time in total

----------

## soban_

No dobrze, jak skoncze dochodzic czemu tak netstat psioczyl malo IPikow to wezme sie za iptables samo w sobie. Jednak z tego co wiem, bedzie to wywalac np ludzi ktorzy wysylaja pliki na port TSa z plikami - ktore maja zostac na pokoju, no chyba ze masz pomysl jak to zalatwic bez pisania skryptow - wtedy uznam ze ten skrypt jest zbedny (moj przerobiony bo ten z cronem to porazka) i mozna sie ograniczyc do samego iptables. No i ciagle z tym cronem wyskakujesz ja Ci mowie ze nie uzywam tego w cronie d-: bo co minute to by nie mialo w ogole sensu... z reszta ja nie tylko do blokowania tego uzywam do statystyk miedzy innymi.

----------

## Jacekalex

W iptables i xtables masz setki opcji, m in limity możliwe do dopasowania na poszczególnych protokolach i portach.

Możesz całą grupę portów potraktować limitem, możesz poszczególne porty TSa potraktować osobnymi limitami.

Także możliwości trochę jest, limity musisz dobrać empirycznie czy raczej organoleptycznie, żeby nic nie uwalało normalnego gracza, ale odwalało ataki dos.

Krótko pisząc, jeśli przeciętny gracz potrzebuje zasobów (liczba połączeń, transfer) X średnio, zapotrzebowanie poszczególnych graczy waha się +-80% X - czyli od 0,2X do 1,8X, to firewall powinien obcinać zapotrzebowanie na poziomie min 2 - 2,5X, wetdy nie będzie przeszkadzał graczom.

Podobnie limity transferu na ftp, czy innych usługach.

Chociaż przy transferze stosowałbym na twoim miejscu zasadę sprawiedliwego podziału pasma, nie wiem, jak w Ftp czy Apachu, ale na poziomie kernela realizują to moduly sfq (standardowy - powinien starczyć), albo esfq - do kompilowania, łatki na kernel i iproute.

W jaju ostatnio pojawilo się trochę nowych modułów, których jeszcze nie wybadałem. 

Może tam się da coś ciekawszego też zmontować.

Ja rozumiem, że do Wowa czy TSa nigdzie gotowych regułek nie znajdziesz, ale ja stawiając serwer pocztowy i jabbera, też musialem organoleptycznie ustalić, na co pozwolić, a na co nie pozwolić.

I na razie chodzi wszystko bez kłopotu.

Nie wiem, jakiego rodzaju masz tam ataki.

Ty widzisz, że serwer przymula, bo trwa jakiś atak, ale nie tłumaczysz, bo czasem sam nie wiesz, jaki to atak.

A ataków jest XX różnych, i też różnie się je traktuje.

Można postawić IPS na bazie aktywnego snorta i guardiana, ale albo dopasujesz treguły szyte na miarę, albo przy okazji na jedengo atakującego uwali ze trzech niewinnych miśków.

Inny sposób, to logi do kolejki zrobionej przez mkfifo, a potem demon, który słucha kolejki /dev/kolejka, i na podstawie rozmaitych regexów wyciaga co trzeba, wysyłając niektórrych do ipseta, którego tablica jest przetwarzana przez netfilter -moduł set, i może być użyta do tworzenia listy dozwolonych lub zablokowanych Ipków.

Z Tsem najłatwiej by było, gdyby logowal przez Sysloga fakt logowania lub wylogowania pacjenta, razem z  jego IP.

Wtedy móżnaby wykombinować sposób, zeby dostęp do kilku portow otwierał sie dla pacjentów zalogowanych do TSa.

To samo można powiedziieć o FTP, jeśli Proftpd masz przez pam-mysql, to sprawa trudna nie jest, w innycych przpadkach też nie.jest trudne.

np logowanie do ftp:

```
2012-07-30T00:33:57.258854+02:00 localhost proftpd[15894]: ip6-localhost (ip6-localhost[127.0.0.1]) - USER pacjent: Login successful.
```

Swatch moze przy odpowiedniej konfiguracji wyciągnąć tego IPka natychmiast, i wsadzić do tablicy Ipseta, pozwalającej na dostep do innych portów.

Fail2ban może robić dokladnie to samo.

```
2012-07-30T00:36:32.006156+02:00 localhost proftpd[15505]: ip6-localhost (ip6-localhost[127.0.0.1]) - FTP session closed.
```

w taki sam sposbó akcja odwrotna, wywalenie Ipka z tablicy np allowtsport.

Jeżeli w ten sposób możesz spiąć firewall z faktem logownia do TSa czy Wowa, to część problemu z głowy, odchodzi kwestia rozrabiania niezalogowanych pacjentów, łatwiej skoncentrować się na tym, co mogą zalogowani, + solidne zabezpieczenie na etapie samego logowania.

Tu masz fajny przykład lekikiego demona IPS:

http://debian.linux.pl/entries/30-Implementacja-systemu-aktywnego-przeciwdzia%C5%82ania-intruzom-%28IPS%29-w-Pythonie-cz.-1

To by na razie było na tyle

PS.

I nie pieprz, że jak jakiś smarkacz odpala ab, czy cos podobnego, to Administrator jest bezbronny,

 bo tylko na zapchanie rurki sam nic nie poradzisz, reszta jest do zrobbienia, może trudna, ale wykonalna.

Pozdrawiam

 :Cool: 

----------

## soban_

 *Jacekalex wrote:*   

> PS.
> 
> I nie pieprz, że jak jakiś smarkacz odpala ab, czy cos podobnego, to Administrator jest bezbronny,
> 
>  bo tylko na zapchanie rurki sam nic nie poradzisz, reszta jest do zrobbienia, może trudna, ale wykonalna.

  Po pierwsze nie pieprze. Po drugie, gdzie napisalem ze jest bezbronny? Napisalem Ci o jednej z metod ataku ktora moze wplynac na dzialanie TSa jesli pod strone jest podpieta baza TSa i jest listowana np ilosc osob ktora korzysta z niego (np przy pomocy bota + querry) + na ktorych kanalach siedza. Wcale tutaj uslugi strony nie musisz zasrac. Oczywiscie mozna sie przed tym zabezpieczyc np listowac tsa w cronie co 1 minute, nastepnie zapisywac to do pliku i czytac juz na stronie - jeden ze sposobow. NIGDZIE nie napisalem ze, przy uzyciu ab admin jest bezbronny - tak samo jak nigdzie nie napisalem ze uzywam tamtego skryptu w cronie. Tutaj wchodza rzeczy, ktorych admini nie przewidzieli. Gwoli scisclosci uwierz mi, ze sa osoby ktore nie potrafia sie przed tym wybronic - nie mowie o ludziach ktore umieja uzywac google i sa troche ogarniete w tym miejscu. 

A i jeszcze pytanie, co gdy ddos np z 3 maszyn idzie w port ktorego nie przewidziales z limitowaniem np port 0 (randomowy, nielimitowany)? Chyba ze zakresowo blokujesz wsie porty, no to ok. Bo APF wycina wszystkie port, poza tymi co maja byc otwarte. Zauwaz ze caly czas zwracam uwage na port 30033 bo ludzie maja rozne lacza - a bym nie chcial np blokowac kogos kto ma 120mb w UPC i wysyla cos na pokoj. Wiec tutaj bez jakis warunkow typu zalogowany poprawnie na TSa (9987) ewentualnie zostawiajac swoje IP jak juz tez zauwazyles - w logach jego, daje cynk ze tego osobnika nie powinno sie limitowac - bo tutaj osiagne odwrotny efekt o czym caly czas mowa, wytne osobe - ktora uzywa uslugi poprawnie...

Wlasnie co do rurki, co sadzisz na temat chmur i ewentualnie jakims sposobie jego rozkladania na poszczegolne maszyny? Czy chmura jest w stanie przyjac na klate wiekszosc atakow w sensie tych ktore zapychaja lacze? I tutaj wlasnie mam na mysli innego rodzaju uslugi, bo ze strona to http://pl.cloudflare.com/ i wiekszosc problemow jest z glowy. Jednak mysle bardziej tutaj o uslugach poza strona.

 *Jacekalex wrote:*   

> Ja rozumiem, że do Wowa czy TSa nigdzie gotowych regułek nie znajdziesz, ale ja stawiając serwer pocztowy i jabbera, też musialem organoleptycznie ustalić, na co pozwolić, a na co nie pozwolić. 

  Tutaj pojawiaja sie male schodzy, bo co chwila dochodza nowe porty, jedne trzeba calkowicie blokowac itp.

W kazdym badz razie, przekonales mnie do tego, zeby ograniczyc sie do samego iptables + rzeczy co tutaj zapodales, podam efekty - czy rzeczywiscie podczas ataku da rade to wybronic i czy skuteczniej zachowuje sie, gdy wdraze w to uzytkownikow i nie wycina ich. Wiec na pewno z tego wszystkiego skorzystam.

Jednak pozbywac sie skryptow, do czego miedzy innymi ta linijka mi byla potrzebna nie bede - bo dzieki nim np monitoruje ktore ipiki probuja nawiazac za duzej ilosci polaczen. Wiem ze tutaj istnieje cos takiego jak np cacti - jednak ja wiecej informacji nie potrzebuje. Bo podczas ataku widze proby polaczen z danych ipikow i ich ilosc nastepnie wale to do pliku i mam z glowy. Wlasnie, tutaj tez mam male pytanko, czym bys sprawdzal historie tego co sie dzialo na maszynie na ktora byl prowadzony atak? Jakie logi by Cie najbardziej interesowaly ewentualnie jakie narzedzie bys zostawil do monitorowania ruchu sieciowego?

----------

## Jacekalex

Skryptów, które dzialają, sie nie pozbywaj.

Ewentualna migracja ze skryptów na rozwiązania systemowe musi być ostrożna i przemyślana, generalnie wszystkie nowe rozwiazania najpierw sprawdza się w środowisku testowym, a dopiero później, kiedy wszystko jest sprawdzone,  wrzuca na serwer produkcyjny.

Poza tym, żeby używać firewalla i rozwiązań systemowych, zamiast skryptologii, musisz wbić sobie do głowy, że kombinowanie z rękodziełem artystycznym zaczynasz dopiero, jak nie ma możliwości załatwienia sprawy w prosty sposob,  przy pomocy rozwiazań dostępnych w systemie.

W systemie masz calkiem ładny arsenał na najróżniejsze przypadki.  :Smile: 

Wyjątkiem są sprawy proste, gdzie narzut systemowego rozwiązania nad skryptem jest kosztowny lub ryzykowny, np ładowanie Network-Managera, kiedy trzeba połącyć się po kablu z dhcp, czy podobne strzaly z armaty do wróbla.  :Wink: 

Jedna uwaga na temat APF:  nie jest problemem program czy skrypt do konfiguracji, o ile ten program czy skrypt pozwala wykorzystać przynajmniej 80% faktycznych możliwości demona, którym zarządza.

W przypadku iptables, najlepsze nakładki i skrypty, jakie widziałem, np moduł webmina, potrafią wykorzystać znacznie mniej możliowści, najwyżej 50 -60%.

I to czasami wystarcza, ale nie warto sie zamykać w tych 50 czy 60%, ani w żaden inny sposób się ograniczać.

Króko pisząc, jak konfigurujesz np bezpieczny system, który ma wytrzymać każdy atak, to się nie pieprzysz, tylko bierzesz najmocniejsze rozwiązania, jakie masz dostępne.

I tylko musisz opracować sposób, żeby użyć ich sensownie, bo każdym nożem możesz komornika pokroić, albo sobie kciuk odkroić  :Very Happy: .

Tutaj trzeba uważać.

Najtrudniejsze jesat wyznaczenie granicy między tym, ile możliwości potrzebuje normalny użytkownik, a co już uważasz za atak.

Ta granica jest bardzo płynna.

Logi?

Kluczone są logi atakowanej usługi, przy każdym Ftp,  Apachu, Nginxie, Postfixie, Qmailu,czy Ejabberd, te demony mają najczęściej własne mechanizmy obronne, które można skonfigurować, do tego można je dopieścić firewallem albo fail2banem.

Np w Proftpd masz np mod_ban - do czasowego banowania pacjentów, którzy próbują siłowo łamać hasło.

I nawet to działa.  :Wink: 

Nie znam natomiast serwerów Wowa, CS czy TS, właśnie wrzuciłem sobie TSa na chwilę, żeby zobaczczć, jak to wyglada, i nie widzę tutaj żadnego programu w stylu fptwho, nie widzę też, zeby cokolwiek poszlo do sysloga.

Dlatego przy próbie włamania do TSa, próbowałbym parsowania odpowiedniego loga TSa.

Najlpepiej byłoby w TSie przekierowac logi (kopię), na jakieś gniazdo czy kolejkę, gdzie może je odbierać i parsować na bierząco program monitorujący, odpalający określone akcje po spelnieniu takiego czy innego warunku, można tu użyć Swatcha, Fail2bana, czy przerobić snortowego Guardiana, albo np przyklad skryptu w pythonie, sznurek masz kilka postów wyżej.

Pozdrawiam

 :Cool: 

----------

## soban_

 *Jacekalex wrote:*   

> Dlatego przy próbie włamania do TSa, próbowałbym parsowania odpowiedniego loga TSa.
> 
> Najlpepiej byłoby w TSie przekierowac logi (kopię), na jakieś gniazdo czy kolejkę, gdzie może je odbierać i parsować na bierząco program monitorujący, odpalający określone akcje po spelnieniu takiego czy innego warunku, można tu użyć Swatcha, Fail2bana, czy przerobić snortowego Guardiana, albo np przyklad skryptu w pythonie, sznurek masz kilka postów wyżej.

 No i dotarles do etapu, dla ktorych uzywam skryptow d-: i miedzy innymi porownuje naduzycie ilosci polaczen (temat postu) + id w database tsa itp

Wlasnie tutaj tez fajny aspekt wspomniales o webminie - ktory jak dla mnie jest megafajna sprawa, zastanawiam sie czy nie jest wlasnie porazka konfigurowanie wszystkiego po http. Uzywam np u siebie binda (z webmina) i calkiem ladnie on dziala - jednak czy nie jest to kolejna jakas luka w sensie w zabezpieczeniach ze mozesz go uzyc? No oki, tutaj sobie lacze sie po vpnie z innym serwerem i zrobilem mozliwosc logowania sie z tylko i wylacznie jednego adresu IP, VPNa do niego. Jednak zawsze mam jakies takie wrazenie ze takie pomocznie aplikacje powoduja kolejne metody atakow/wlaman, czy nie powinienem raczej ograniczac sie do ssh i konfiguracji wszystkiego recznie?

Wspomniales, ze logi wiekszosc dobrych deamonw ma wlasne, ale zauwaz ze sa takie przypadki jak mumble, ts itp gdzie musisz jakos logi z atakow (nie musza to byc wlamania - to jest zazwyczaj glupie napieprzanie po portach) wyciagac. Jednak czy taki cacti nie jest przesada do tego? 

A i jeszcze takie pytanie na marginesie, zakladamy ze tworzysz serwer np do TSow (kupowania ich) gdzie automatycznie jest tworzony serwer na danym porcie (obojetne do czego moze to byc wow, mc, cs itp) to automatycznie bys klientowi otwieral dany port i mu przydzielal jako id w bazie, czy raczej bys sie posilkowal recznym odblokowaniem tego? Bo teraz tez mam zagwozdke, bo mam skrypt zbudowany do automatycznego otwierania portu, jednak z tym limitowaniem to chyba bede musial tez do niego dopisac, chyba ze inaczej bys to rozwiazal? A jak ze skanowaniem portow przez nmapa? Bo to jeszcze chcialbym zablokowac - im mniej napastnik wie na temat serwera tym dla mnie jest lepiej net-firewall/psad powinien wystarczyc do tego?

----------

## Jacekalex

Programy? -mają wsparcie i raportowanie błędów, moduły perla czy pythona również, rękodzieło niekoniecznie.

Webmin? fajne narzędzie do konfiguracji, można go czasem włączyć, ale idealny nie jest.

Jakieś drobiazgi można nim poprawić, ze wszystkich modułów Webmina jakie znam, tylko Bind u mnie dziala poprawnie po skonfigurowaniu wylaczni9e Webminem, ssh wolę ręcznie, OpenVPN lepiej  wyszedł ręcznie, moduł do Qmaila jest w mairę dobry, Postfixa kiedyś webminem rozwaliłem w drobny mak, na szczęście miałem kopię konfigów.

Bazami Postgresa można zarządzać, do Mysql wolę PHPmyadmina.

PGAdmin też jest lepszy od Webmina.

Logi?

Jeśli cokolwiek ma otwarty kod, w którym możesz dodać swoją łatkę, to sposób na logowanie zawsze sie znajdzie, czy choćby wysyłanie komunikatu alarmowego przy błędzie logowania.

Ale jak coś ma zamknięty kod, jak TS, to tutaj już masz problem, bo producent kasę już wziął, i specjalnie dla Sobana nie będzie poprawek w kodzie robił, choćby najbardziej banalnych.

Choć oczywiście zapytać można, cuda podobno się czasami zdarzają.

Można też dziada odpalić w konsoli, i śledzić, co pluje bezpośrednio na konsolę, przepuszczajac to przez fail2bbana, swatcha, zmodyfikowany logcheck, czy coś innego, choćby własny skrypt.

Byle takie dziadostwo wisiało na linni, i reagowało natychmiast, a nie wstawło co kilka sekund albo godzin, i cośtam maszkeciło.

np:

```
mkfifo /dev/ts3

chmod 777 /dev/ts3

 /usr/sbin/ts3server 2>&1>/dev/ts3
```

I jeśli puścisz fail2bana, żeby czyłał z socketu (własciwie kolejki ) /dev/ts3 , to pozostaje pytanie, czy TS potrafi błędy związane z atakiem dos, czy próbą włamu, czy choćby siłowym łamaniem hasła, wywalać na konsolę, co trafi do /dev/ts3 i natychmiast do fali2bana, swatcha, czy jakiegoś skryptu, który tam podepniesz?

Wykonalne?

Musisz Sam sprawdzić, tylko obentij trochę uprawnienia do /dev/ts3 - bo 777 zapewnia, że zadziała, ale śmierdzi lamerstwem.na kilometr.  :Wink: 

Czy Wowa można tak puścić, albo CSa? sam sprawdź, ja nie wiem.

Ale podejrzewam, że tak.

Nmap, można do niego znaleźć trochę gotowych reguł, którymi go wykryć, to bułka z masłem.

Jednak Nmap, to porgram bardziej do diagnostyki sieciowej, niż hakerów,

Sam w sobie nie stanowi zadnego zagrożenia, a jak sensownie ukryjesz porty uslug "prywatnych" to  nigdy tych "prywatnych" nie znajdzie.

Przez prywane usługi rozumiem np SSH czy OpenVPN, czasami Mysql, choć bazy SQL bym w miarę możliwości w ogóle nie wystawiał na internet, tak samo, jak Webmina.

Prawdziwy atak na serwer, to nie jest skanowanie portów, tylko atak na konkretną usługę.

Przykładowo, jak zostawisz ftp lub ssh, na autoryzacji hasłem, bez limitów liczby prób, i automatycznych banów, a jakiś smarkacz zapuści na twój serwer nie AB, ale hydrę z listą 100000 możliwych haseł, to dopiero zobaczysz, co to znaczy prawdziwy atak, 

i ile trzeba różnych rzeczy zrobić, i o ilu różnych pamiętać, żeby taki smarkacz Ci nie położyl serwera.

Na szczęscie niewielu smarkaczy umie użyć hydry (albo podobnych zabawek), i znaleźć odpowiednio długi słownik z hasłami.

Osobną sprawą jest atak dos, mający wyłączyć twój serwer z użytku, tutaj możliwych scenariuszy masz setki.

I cholernie trudno się na wszystkie ewnetualności zabezpieczyć, choć np na 1Gbit/sek. pofragmetowanych pakietów udp przychodzących z 200 różnych adresów IP, sam nie poradzisz nic, podobnie na np syn-flood w podobnej ilości.

Wtedy masz po prostu zapchaną rurkę do serwera, i kropka.

Ale  zawsze możesz pogadać z adminem serwerowni, i to czasami pomaga.

Pozdrawiam

 :Cool: 

----------

## soban_

 *Jacekalex wrote:*   

> Prawdziwy atak na serwer, to nie jest skanowanie portów, tylko atak na konkretną usługę.
> 
> Przykładowo, jak zostawisz ftp lub ssh, na autoryzacji hasłem, bez limitów liczby prób, i automatycznych banów, a jakiś smarkacz zapuści na twój serwer nie AB, ale hydrę z listą 100000 możliwych haseł, to dopiero zobaczysz, co to znaczy prawdziwy atak, 
> 
> i ile trzeba różnych rzeczy zrobić, i o ilu różnych pamiętać, żeby taki smarkacz Ci nie położyl serwera.
> ...

  No to sie chwali - ze malo kto potrafi tego uzyc, gorzej jest z botnetami... ale masz mase narzedzi armitage chyba nawet kiedys na PW Ci wysylalem. A ta hydra to atak bruteforce (tyle ze slownikowy przy odpowiedniej ilosci generowanych hasel - np 30 znakowych, ktore stosuje to gucio da), wiec to srednie widze jego praktyczne zastosowanie - przynajmniej o tej metodzie ktora tu podales z haslami - jednak warto przetestowac jak zwykle na swoich maszynach, zeby miec pewnosc.

 *Jacekalex wrote:*   

> Jeśli cokolwiek ma otwarty kod, w którym możesz dodać swoją łatkę, to sposób na logowanie zawsze sie znajdzie, czy choćby wysyłanie komunikatu alarmowego przy błędzie logowania. 
> 
> Ale jak coś ma zamknięty kod, jak TS, to tutaj już masz problem, bo producent kasę już wziął, i specjalnie dla Sobana nie będzie poprawek w kodzie robił, choćby najbardziej banalnych. 

 Co do programowania ja nie wymagam takowego czegos od Ciebie, chce tylko narzedzie do dobrego monitorowania sieci - moze byc po http z wykresami itp - zwlaszcza zeby przyjrzec sie bardziej temu, co sie dzieje podczas ataku i czemu maszyna sie sklada (np czy CPU jest zapychane czy RAM, czy byc moze lacze). No i wlasnie jest ten problem, ze kod TSa jest zamkniety, wiec dopisac do niego nijak mozna, ewentualnie parsowanie logow o czym wspomniales...dlatego szukam alternatywy typu cacti - on chyba najbardziej do tego sie nada?

PGAdmin - to chetnie przetestuje, jesli twierdzisz iz jest lepsze od webadmina. Czyli generalnie i tak lepiej wszystko recznie konfigurowac?

 *Jacekalex wrote:*   

> I jeśli puścisz fail2bana, żeby czyłał z socketu (własciwie kolejki ) /dev/ts3 , to pozostaje pytanie, czy TS potrafi błędy związane z atakiem dos, czy próbą włamu, czy choćby siłowym łamaniem hasła, wywalać na konsolę, co trafi do /dev/ts3 i natychmiast do fali2bana, swatcha, czy jakiegoś skryptu, który tam podepniesz? 

 No wlasnie problem w tym ze sie nie da, w zasadzie logi jakie ts buduje to tylko logowania zachowan uzytkownikow, fakt mogliby to poprawic...

 *Jacekalex wrote:*   

> Nmap, można do niego znaleźć trochę gotowych reguł, którymi go wykryć, to bułka z masłem. 
> 
> Jednak Nmap, to porgram bardziej do diagnostyki sieciowej, niż hakerów,

  No jednak od czegos musi zaczac i szukac dziury w calym - im wiecej zdobedzie informacji tym lepiej. Znalazlem pare regulek juz na to, wiec mysle ze bedzie ok - ewentualnie tak jak wspomnialem psad tutaj moze troche pomoc.

 *Jacekalex wrote:*   

> Osobną sprawą jest atak dos, mający wyłączyć twój serwer z użytku, tutaj możliwych scenariuszy masz setki. 
> 
> I cholernie trudno się na wszystkie ewnetualności zabezpieczyć, choć np na 1Gbit/sek. pofragmetowanych pakietów udp przychodzących z 200 różnych adresów IP, sam nie poradzisz nic, podobnie na np syn-flood w podobnej ilości. 
> 
> Wtedy masz po prostu zapchaną rurkę do serwera, i kropka.

 Tutaj w poprzednicy postach (w innym watki) ludzie mowili ze firewall sprzetowy nic nie da, czy jest sens stawiania np VPSa ktory bedzie robil tylko i wylacznie za filtr siecowy? Taki pseudo firewall, bo jeszcze na takie cus wpadlem - ale nie wiem czy to w ogole ma jakis sens, rownie dobrze chyba na maszynie glownej moge posadzic te same zabezpieczenia? No i czy jest mozliwosc taka - ze procesor nie wyrabia podczas atakow gdzie lacze daje rade? Np dochodzi tak duzo pakietow, ze maszyna nie nadarza przy pomocy iptables je interpretowac - czy raczej taka sytulacja nie moze sie zdarzyc? Bo z tego co wiem, znajomy zwiekszyl moc lacza, jednak ataki tym razem zapychaja mu procesor - twierdzi ze jak dlugo sie utrzymuje na niego atak, to zaczyna sie maszyna crashowac przez CPU bo ten nie wyrabia z interpretowaniem zapytan. Jest w tym ziarno chociaz prawdy?

----------

## Jacekalex

Co tam jest za CPU, ze przy ataku nie wyrabia? Pentium II?

jeśli Firewall dropuje nawet milion pakietów, toi procek specjalnie się tym nie przejmuje.

Pamięć też nie.

Jeśli natomiast jest atak na usługę, ftp, tsa, czy coś podobnego, to kombinuj z konkretną usługą, lub grupą usług, które są razem powiązane.

Jesli TS loguje jakieś bzdury, a nie loguje waznych rzeczy, to kto może coś na to poradzić?

Nie ma żadnego sposobu, zeby puscić TSa w trybie vebose na socket? jak w przykladzie z /dev/ts3?

Parsowanie tony logów daje pewne obciażenie, ale blyskawiczny ban dla atakującego powoduje, że jest to jadnak  mniejsze zło.

A parsowanie tych logów przez kolejkę fifo jest  tańsze pod względem obciązenia, 

niż parsowanie plików z logami.

Poza tym, czy ten TS przypadkiem nie ma opcji rozłączenia kłopotliwego pacjenta?

Który potem minutkę poczeka na firewallu, na następną okazję do połączenia.

I cyz w ogóle masz w tym TSie autoryzację? czy to jest otwarty publiczny serwer?

Czy może wpuszcza tylko tych, ktorzy zalogują się prawidłowo do Wowa czy CSa?

Bo cała sprawa zaczęła się od tego, co pokazuje netstat, do wycinania pacjentów, którzy mają otwarte za dużo polączeń, a tymczasem widzę, że ani nie masz tam zrobionych priorytetów transferu, zeby TS mial wyższy priorytet od ftp, i pakiety głosowe TSa miały mniejsze opóźnienia.

I chyba nie masz porobionych limitów procka i pamięci dla poszczególnych usług, bo inaczej można by ubić pojeynczego demona, ale nie cały serwer.

A jak serwer klęka od ataku na TSa lub ftp, to zainteresuj się np cgroup albo limits.conf.

I lepiej napisz, co to za maszyna, ten serwer, bo niektóre problemy z nim masz co najmniej dziwne.

W dodatku przy pomocy skryptu do netstata raczej całego serwera nie uratujesz przed problemami.

Pozdrawiam

 :Cool: 

----------

## soban_

Wyedytuje Ci tego posta i napisze jaka maszyne ma znajomy - ale generalnie nie jest to badziew bo placi cos okolo 500-600zl w OVH i ma 1gb lacza. Mowie ze przy dluzszych atakach zaczyna mu sie procek mulic, u mnie zas to zalezy od jakiej strony patrzec i w co sie wali.

 *Jacekalex wrote:*   

> Jesli TS loguje jakieś bzdury, a nie loguje waznych rzeczy, to kto może coś na to poradzić?
> 
> Nie ma żadnego sposobu, zeby puscić TSa w trybie vebose na socket? jak w przykladzie z /dev/ts3?
> 
> Parsowanie tony logów daje pewne obciażenie, ale blyskawiczny ban dla atakującego powoduje, że jest to jadnak  mniejsze zło.
> ...

 Tak, ale jak wywala to n-osob to jest gorzej, tutaj TS nic w zasadzie sensownego nigdy nie loguje, poza packetlostami + dropowaniem uzytkownikow. Mowie same logi tsa ograniczaja sie do informacji strikte co na nim sie dzieje - a nie z nim : P pokazac potrafi komunikat ze jest shutdown, ale nie da Ci komumnikatu ze za duzy packetlost jest czy cus.

 *Jacekalex wrote:*   

> I cyz w ogóle masz w tym TSie autoryzację? czy to jest otwarty publiczny serwer?

 Tak istnieje, ze np podczas polaczenia masz pare minut na wejscie na tsa - jednak tutaj nie chodzi o ataki ze strony userow tylko z zewnatrz (np spoofowymi ipikami).

----------

## Jacekalex

Jeżeli TS nie ma jakiegś logowania verbose, czy czegoś podobnego, to masz dosyć poważną zagwozdkę, jak to ugryźć.

Wzglednie pytałbym też na forum TSa, moze tam ktoś już wałkował podobny temat.

W samym serwerze, możesz jeszcze (i powinieneś) zrobić taki podzaiał zasobów, żeby nani na transmisji sieciowej, ani w dostępnie do RAM i procka usługi nie blokowaly się nawzajem.

Tu jest starsyz sposób:

http://dug.net.pl/tekst/42/pam___limitowanie_uprawnien_uzytkownikow/

Nowszy, to cgroup, ale w tej chwili zbyt dobrych sznurków nie mam.

ale w /etc/cgroup/cgrules.conf jest przykład, jak to ma wygladać.

Całosć bajzlu cgroup obsługuje:

```
dev-libs/libcgroup
```

Ma też moduly do PAM.

Na interfejsie sieciowym też bym porobil kolejki przy pomocy HTB, zakończone SFQ, czyli tzw sprawiedlwiym podziałem pasma, z podziałem na uslugi interaktywne PRIO1, pliki TSa PRIO2 , ftp PRIO3, lekko obcinając transfer plików.

Tyle możesz zrobić, żeby Ci serwer nie klękał z byle powodu.

Jeśli natomiast TS nie loguje prawdziwych zdarzeń, tylko same pierdoly, to może loguje same IPki, żeby np  po samej ilości logów w jednostce czasu coś dało się wydumać?

Bo na razie, jeśli można uderzyc w jedną usługę, od której cierpi cały serwer, to nie jest ani normalna, ani wesoła sytuacja.

I paradoksalnie ani Debian, ani Gentoo, ani CentOS,  ani żaden inny system nie jest gotowy pod tym wzgledem Out of the box, w każdym trzeba to po prostu zrobić.

I to porządnie...   :Wink: 

----------

## soban_

Wlasnie chcialem jeszcze zapytac o protokol UDP - mianowicie po wgraniu iptables, nawet probie limitowania jego po dlugisc pakietu nadal jest problem z tym protokolem. Nie wiem czy to TS jest tak cholernie czuly bo uzywa UDP czy cus, jednak jesli nawet botnet przywali w port 80 (ktory moze miec nawet zamknieta usluge) to zaczynaja sie packet losty na TSie, nie musi to byc 9987 (usluga samego tsa). W sumie to tylko juz zostalo, ale brakuje mi koncepcji jak ten UDP zalatwic. A i nie jest wysycana w typ przypadku rura, poniewaz drugi VPS na ktorym stoi rownolegle teamspeak sie nie wyklada. Polaczenie TCP z ssh jest w normie i mozna nawet nawiazac nowe, jednak packetlosty na tsie tak jak wspomnialem sa tak duze ze usluga sie wyklada. Masz jeszcze jakis pomysl co mozna z UDP zrobic?

Szczerze musze tutaj powiedziec ze nawet jak zablokuje wszystkie polaczenia poza wybranymi IPikami po UDP w iptables, to i tak jest to w jakis sposob interpretowane - z tego co widze, bo jak leci atak to i tak wchodzi i packetlosty sa, moge cos poza iptables jeszcze szukac np w konfiguracji samego systemu zwiazanego z UDP? Np czy w ta strone nie powinienem kombinowac http://www.scribd.com/doc/37752865/88/ip-ct-udp-timeout ?

----------

