Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Myślałem że jestem w stanie zorganizować sobie zabezpieczenia , niestety wszystkie moje marzenia i informacje poległy od wczoraj od 19:00.
Jestem zmęczony i sfrustrowany , tak nacierają mi na apache że co 10 minut pada cały serwer kończy się 3GB ramu i 9GB swap. Nie mam pomysłów.
Gogluje szukam doinstalowuje, zmniejsza się ruch na 1 do 2h i potem wraca wszystko do normy ataki lecą jak cholera. Moje doświadczenie w takim przypadku okazało się marne.
Doinstalowałem do apache2 moduły mod-evasive, mod-security, mod-spamhaus, qos - a oni dalej zabijać to wszystko :(
Doinstalowałem coś takiego jak fail2ban dodałem apache-ddos i co zszedłem do 1GB zużytego ramu, i 1GB swap i nadal walą. Logi mi się uginają.
Nigdy jakoś nie miałem problemów więc wygenerowane zabezpieczenie iptables wystarczało, ale dziś okazało się gówno warte.
Proszę zlitujcie się pomóżcie LAMEROWI bo już nawet sam się tak nazywam co robić, jak drani wyciąć. Myślę poważnie o SNORT ale nie wiem czy załatwi mi sprawę. Strona do jutra musi działać bo mnie wywalą :(
Walą z czego się da podłączyłem listę MS_DNS sbl-xbl.spamhaus.org ale zanim ona załapie to skromne 10000 tyś zapytań poleci :(
jak robię sobie takiego netstat to mam
#netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 1 108.62.75.52 1 142.4.116.18 1 142.4.117.24 1 192.168.2.244 1 192.74.238.24 1 199.192.152.159 1 199.192.153.133 1 199.192.154.220 1 199.36.72.170 1 208.115.197.3 1 208.115.226.100 1 208.115.234.210 1 208.115.241.98 1 208.115.245.83 1 46.105.52.125 1 63.143.49.174 1 63.143.53.74 1 64.31.12.22 1 64.31.20.19 1 64.31.46.230 1 64.31.9.235 1 67.198.140.34 1 67.198.150.242 1 67.198.158.26 1 67.198.159.50 1 69.162.108.21 1 69.162.108.29 1 69.162.64.51 1 69.162.68.39 1 69.162.84.231 1 69.162.88.110 1 69.162.89.11 1 69.162.93.8 1 69.162.95.230 1 74.63.214.254 1 74.63.215.217 1 74.63.251.100 1 94.76.204.103 2 192.154.105.38 2 192.168.2.245 3 199.192.153.3 9 0.0.0.0 32
Stąd wnioskuję że to atak dos lub ddos. Czytam cały czas ale zmęczenie daje już znać o sobie. Dzięki za pomoc
Redelek
Ostatnio edytowany przez redelek (2013-01-29 14:42:30)
Offline
Najpierw wsadź przed Apacha Lighttpd albo Nginxa, jako rev-proxy.
To wyeliminuje problem ataku slowloris, który jest groźniejszy niż dos.
Potem pobaw się firewallem, connlimit, hashlimt, do tego ustaw tcp_syncockies w sysctl.
Jakbyś wsadził Nginxa, to on ma opcje limitowania liczby połączeń i rate-limit per kilent (może być 2 linią bezpieczeństwa za firewallem).
To może trochę złagodzić dolegliwość takich ataków.
Natomiast na samym serwerze i tam możesz łapać nadmiarowe połączenia na końcu rurki, zamiast na początku.
Radziłbym pogadać z ISP, o limicie udp i icmp na jego routerach brzegowych (tam to należy limitować), natomiast tcp jest protokołem połączeniowym, możesz go limitować u siebie, w miarę skutecznie.
Pierwsza i najtańsza linia obrony to firewall, który powinien obciąć liczbę żądań do poziomu bezpiecznego dla Apacha, potem prawidłowo skonfigurowany serwer, bez dziur i bezsensownych podatności (tu radzę Nginxa lub Lighttpd w roli rev-proxy), i na końcu postaw poczciwego Apache Prefork, który będzie schowany za rev-proxy i zabezpieczony innymi zabawkami.
To moim zdaniem najsensowniejsze rozwiązanie tej sytuacji.
I taka kombinacja może naprawdę niejedno wytrzymać.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-01-29 14:57:03)
Offline
ooo matko no to niezła kombinacja alpejska, ale jak widać moja do d...py się nadaje. Oki zaraz zobaczę co i jak.
A może jest jakiś sposób tak żeby ta strona jakoś "kulawo" ale działała, bo obecnie to co 10 min ginie
Pozdrawiam
redelek
Offline
Jak kombinacja alpejska?
Kilka regułek do firewalla, to kombinacja alpejska?
Rev-proxy też postawisz dość szybko, a dodanie limitów do gotowego konfigu w Nginxie, to kilka minut.
Zwłaszcza, że o ile pamiętam, już trochę znasz Nginxa.
Dowód rzeczowy:
http://forum.dug.net.pl/viewtopic.php?id=17253
A tutaj przykłady, jak to się je:
http://wiki.nginx.org/HttpProxyModule
http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/
http://wiki.nginx.org/HttpLimitZoneModule
http://wiki.nginx.org/HttpLimitReqModule
http://kbeezie.com/nginx-protection/
Radziłbym też zainteresować się projektem sblam.
Ja taką listę zazwyczaj pakuję do ipseta.
O ile się nie mylę, na Dugu też lista sblamu jest w użyciu.
Razem masz może z godzinkę czy dwie bardzo "ciężkiej" roboty. :D
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-01-29 15:41:36)
Offline
Jak mi się uda przeżyć, to napiszę do ciebie na prv podasz mi adres do wysłania PIWA
Dzięks
Redelek
Offline
cyt: "Ja taką listę zazwyczaj pakuję do ipseta." standardowo go w systemie nie ma, albo ślepy jestem bo jak chcę coś dodać to wywala mi taki błąd
ipset v2.5.0: Error from kernel: Protocol not available
Ostatnio edytowany przez redelek (2013-01-29 18:46:26)
Offline
#!/bin/bash #Użycie: /usr/sbin/ipset create sblamdrop hash:ip 2>/dev/null ; #iptables -t raw -I PREROUTING -i eth0 -p tcp --dport 80 -m set --match-set sblamdrop src -j DROP PLIK="/var/hasiok/blacklist.txt" cd /var/hasiok wget -N http://sblam.com/blacklist.txt || exit 1; function lista { DropList="$PLIK" if [ -s "$DropList" ]; then /usr/sbin/ipset flush sblamdrop 2>/dev/null else echo "Unable to find drop list file $DropList . Perhaps do:" >&2 echo "wget http://sblam.com/blacklist.txt -O $DropList" echo "exiting." >&2 exit 1 fi; cat "$DropList" \ | egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b' \ | while read OneNetBlock ; do sleep 0.005; /usr/sbin/ipset add sblamdrop "$OneNetBlock"; done; } modsecs=$(date --utc --reference=$PLIK +%s) nowsecs=$(date +%s) delta=$(($nowsecs-$modsecs)) echo "Plik $filename został zmieniony $delta sekund temu!" czasmod="43200" if [[ "$delta" -lt "$czasmod" ]]; then echo "Jest nowa lista sblamu ;)"; lista; else echo "Nie mam nic do roboty ;P"; fi exit 0;
ipset -t list Name: PEERBLOCK Type: hash:net Header: family inet hashsize 131072 maxelem 262144 Size in memory: 5878616 References: 2 Name: sblamdrop Type: hash:ip Header: family inet hashsize 8192 maxelem 65536 Size in memory: 290472 References: 0 Name: spamhaus Type: hash:net Header: family inet hashsize 1024 maxelem 65536 Size in memory: 28856 References: 0
Jajo:
Linux 3.7.5-gr1 x86_64
Moduły ipseta (są w źródłach "vaniliowych"):
grep -i ip_set /boot/config-$(uname -r) CONFIG_IP_SET=y CONFIG_IP_SET_MAX=256 CONFIG_IP_SET_BITMAP_IP=y CONFIG_IP_SET_BITMAP_IPMAC=y CONFIG_IP_SET_BITMAP_PORT=y CONFIG_IP_SET_HASH_IP=y CONFIG_IP_SET_HASH_IPPORT=y CONFIG_IP_SET_HASH_IPPORTIP=y CONFIG_IP_SET_HASH_IPPORTNET=y CONFIG_IP_SET_HASH_NET=y CONFIG_IP_SET_HASH_NETPORT=y CONFIG_IP_SET_HASH_NETIFACE=y CONFIG_IP_SET_LIST_SET=y
Wersja Ipseta:
net-firewall/ipset-6.8
SOA#1
U mnie tak to chodzi bez problemu.
Zawsze ;)
Ipset wymaga modułów w jaju i narzędzia przestrzeni użyszkodnika.
Pokaż wynik:
ipset create tablica hash:ip
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2013-01-29 20:45:45)
Offline
Tak rzuciłem okiem po tych IP, zastanowiło mnie że numerki sa bardzo blisko siebie (czesto pierwsze dwa oketyt takie same, i trzeci +-5 ), wystepuja wrecz w "gromadach", szybki rzut okiem do bazy whois ... no i okazuje sie ze sa to IP serwerów z chumr różnych firm hostingowych, wiec siła ataku nie dziwi bo kaliber maja duzy xd.
Pewnie ktos dobrał sie do shell na kilku kontach klientów i z nich atakuje.
Kupisz sobie troche czasu ubijajac te firmy hostingowe na regułach iptables.
Nie wylecisz z roboty i bedziesz miał czas zeby sie zabezpieczyć wg. rad jacka. ( btw. i'm impressed, masz moj szacunek ).
[edit]
Swoja droga mozna by pingnąć te firmy na maila, bo moze sie okazac wiekkszy wałek i jakis typek poprostu kupił sobie tam konta, skrajnie głupie się to wydaje, jednak jest możliwe. Poprosisz o dane konta z ktorych sie laczy z twoja maszyna, jak danych do konta nie ma (fake) to poprosisz chodziaz o info skad sie logował :-) (moze jakas konkurencja ).
Ostatnio edytowany przez gindek (2013-01-29 22:19:52)
Offline
Ogólnie rozwiązanie Jacek dał dobre, a ważne jest to że router/fw to jednak stawiamy na osobnej maszynie. Tutaj lecisz po CPU Apachem, pewnie bazą, iptables, PHP, etc. To troche tak jakbyś chronił koh-i-noor warstwą utlenionego węgla oraz folią aluminiową zamiast wsadzić to w sejf.
gindek napisał(-a):
Swoja droga mozna by pingnąć te firmy na maila, bo moze sie okazac wiekkszy wałek i jakis typek poprostu kupił sobie tam konta, skrajnie głupie się to wydaje, jednak jest możliwe. Poprosisz o dane konta z ktorych sie laczy z twoja maszyna, jak danych do konta nie ma (fake) to poprosisz chodziaz o info skad sie logował :-) (moze jakas konkurencja ).
Nie dostanie takich danych. Ale najpierw Abuse, potem można zgłosić to na policji bo od pewnego czasu jest to ścigane.
Ostatnio edytowany przez qluk (2013-01-29 22:22:41)
Offline
Ja napisałem, co można zrobić w obrębie sytemu.
Router, to inna bajka, nie znam firmy hostingowej, czy oferującej serwery VPS/dedyki, gdzie dany serwerek może oberwać, i gdzie człowiek ma dostęp do firewalla ISP, żeby zmieniać sobie ustawienia po tej właściwszej stronie rurki.
Co prawda np OVH jest maks 32kbps ICMP i maks 50Mbps UDP na serwer, co trochę łagodzi dolegliwości różnych ataków, ale np serwer z rurką 100Mbit czy 1Gbit atakowany pakietami np UDP i tak obrywa, ile wlezie, bo te pakiety można dowolnie spoofować, pozwala na to specyfika protokołu BGP.
I sam serwer może to tylko przetrwać, nawet, jak wszystko grzecznie ubije na swoim fw, to rurka do niego i tak jest zatkana całkowicie.
Tutaj było coś podobnego, od strony nieświadomego atakującego.
Tcp jest o tyle prostszy, że pakiety SYN można filtrować i limitować, użyć syncookies, a większe porcje danych idą dopiero po zestawieniu połączenia.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-01-30 09:22:35)
Offline
Dzięki Panowie dzięki za pomoc i wsparcie. Udało się troszkę spowolnić to wszystko, na pewno zapoznam się z pomocą @Jacekalex i dokładnie to sobie przetestuję. Niestety wczoraj padłem ze zmęczenia:) Dziś o 10:00 na dywanik do szefa :( może się uda. Niestety do głównego routera nie mam dostępu i tak praktycznie poza tego hosta to nie mam dostępu , a niby tu pracuję. Muszę walczyć na pojedynczej maszynie :(
Dzięki dzięki za pomoc i informację
Redelek
Offline
redelek napisał(-a):
cyt: "Ja taką listę zazwyczaj pakuję do ipseta." standardowo go w systemie nie ma, albo ślepy jestem bo jak chcę coś dodać to wywala mi taki błąd
Kod:
ipset v2.5.0: Error from kernel: Protocol not available
Ten ipset chyba jest trochę stary.
Jeśli masz jajo z backportów, np 3.2.x to potrzebujesz też nowszej wersji Ipseta, w Wheezym jest teraz 6.12.1-1.
U mnie wersja Ipseta 2.x przestała działać właśnie w okolicach jajka 3.x (chyba nawet 3.2), i musiałem przeprowadzić się na nowszą.
Wersja 2.5 natomiast na pewno pasuje do jajka 2.6.32 - domyślnego w Squeeze.
Offline