|
Amikor ma reggel megérkeztem a céghez, elég lassú voltam, amikor bejelentkeztem a cég hivatalos weboldalára, bejelentkeztem a szerverre, hogy ellenőrizzem a hivatalos weboldal hozzáférési állapotát: [root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ALAPÍTÁS 59 CSATLAKOZOTT 589 SYN_RECV 15 STREAM A SYN valójában nagyon magas, folytasd a követést az IP-k által küldött SYN-t: [root@tweb ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sorolás | Uniq -C | sort -nr | több 570 x.x.x.x (Az IP nincs írva, hanem a Shandong Zaozhuang Unicom IP-je), de ez az IP annyi SYN kérést küldött, és a webszerverünk egyidejű kapcsolata nem túl magas, így a normál felhasználói kérések nem válaszolnak, és az oldal nem nyitható meg. Mivel a hardver tűzfalat a csoport IT osztálya kezeli, nincs hatásköröm, így csak néhány intézkedést tehetek a helyi szerveren, hogy részben mérgesítsem a SYN támadást. Először is, beszéljünk a SYN támadási elvéről: A TCP/IP protokollban a TCP protokoll megbízható kapcsolati szolgáltatásokat nyújt háromirányú kézfogással a kapcsolat létrehozásához. Első kézfogás: Kapcsolat létrehozásakor az ügyfél egy syn csomagot (syn=j) küld a szervernek, majd belép a SYN_SEND állapotba, várva a szerver megerősítését. A második kézfogás: Amikor a szerver megkapja a SYN csomagot, meg kell erősítenie az ügyfél SYN-jét (ack=j+1), és küldenie kell egy SYN csomagot (syn=k), azaz SYN+ACK csomagot, ekkor a szerver belép a SYN_RECV állapotba. Harmadik kézfogás: Az ügyfél megkapja a szervertől a SYN+ACK csomagot, majd elküldi a megerősítő csomagot ACK (ack=k+1) a szervernek. Három kézfogás után az ügyfél és a szerver elkezdi az adatátvitelt.
Ha a felhasználó kapcsolatkérést indít a szerverrel, csak hogy másodszor kezet fogjon, és nem válaszol a szervernek, a szerver továbbra is vár a felhasználó megerősítésére. Tehát közvetlenül a SYN kapcsolatból hajtjuk végre a következő változtatásokat: Nézd meg az alapértelmezett SYN konfigurációt Linuxban: [root@web ~]# sysctl -a | Grep _syn net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_retries = 5 tcp_max_syn_backlog a SYN sor hossza, és a SYN sor hosszának növelése több hálózati kapcsolatot biztosíthat, amelyek csatlakozásra várnak. tcp_syncookies egy kapcsoló, amely bekapcsolja a SYN cookie funkciót, amely megakadályozza a részleges SYN támadásokat. tcp_synack_retries és tcp_syn_retries meghatározzák a SYN újrapróbálkozási kapcsolatainak számát, és csökkentik az alapértelmezett paramétereket, hogy a lehető leginkább szabályozzák a SYN kapcsolatok számát. Az alábbiakban a paramétereket módosítottam, amelyeket a szerverem tényleges helyzete alapján lehet módosítani: [root@web ~]# több /etc/rc.d/rc.local #!/bin/sh # Ez a scrip{filter}t *azután* az összes többi init scrip{filter}t után lesz végrehajtva. # Ha nem teszed, beteheted ide a saját inicializációs anyagaidat # Teljes Sys V stílusú init dolgokat akarok csinálni. érintse meg /var/lock/subsys/local ulimit -HSn 65535 /usr/local/apache2/bin/apachectl start ##### sysctl -w net.ipv4.tcp_max_syn_backlog=2048 sysctl -w net.ipv4.tcp_syncookies=1 sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3 Ahhoz, hogy a konfiguráció azonnal érvényesüljön anélkül, hogy újraindítsa szervert, végrehajtható #sysctl -w net.ipv4.tcp_max_syn_backlog=2048 #sysctl -w net.ipv4.tcp_syncookies=1 #sysctl -w net.ipv4.tcp_synack_retries=3 #sysctl -w net.ipv4.tcp_syn_retries=3 Vannak, akik szeretik használni a hozzáférési vezérlőlistákat a SYN támadások megelőzésére, ami bizonyos mértékig lassítja a SYN támadásokat: Syn flood támadás #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s korlátozza a szint egyidejű számot 1 alkalommal másodpercenként Portellenes szkennelés # iptables -A ELŐRE -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT Halál pingje # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT #>iptables-save >/etc/sysconfig/iptables Megtekintéshez #iptables -L FOGADD el tcp-t -- bárhol, bárhol, tcp zászlós: FIN, SYN, RST, ACK/SYN határ: átlag 1/sec burst 5 FOGADD el tcp-t -- bárhol, bárhol, tcp zászlók: FIN, SYN, RST, ACK/RST korlát: átlag 1/másodperc burst 5 ACCEPT icmp -- bárhol bárhol icmp echo-request limit: átlag 1/sec burst 5 Ellenőrizd újra a szin-kapcsolatot: [root@web ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sorolás | Uniq -C | sort -nr | több 20 10.92.10.220 1 125.43.36.199 Nyilvánvalóan csökkent a SYN kapcsolatok száma.
|