IPTables uporaben primer skripte - Firewall :)

Skripta napisana za blokiranje ddos napadov in zaznavanje razlicnih tehnik skeniranja portov. Skripta ne blokira vsa vrata!! Blokira le port za sshd server v primeru Bruteforce napada! Tako če želite, da skripta deluje še za druge servise, ki jih poganjate jo boste morali malo prilagoditi...

Trenutno sem zazal en ddos napad in iz njega potegnil to da vsak paket vsebuje enak TTL oz Time To Live za paket z vrednostjo 44. Zato tega ni problem blokirat.

Npr. tako:
 iptables -A INPUT -p TCP -s 0/0 -m ttl --ttl-eq=44 -j DROP

Ob naslednjih napadim bom skripto posodobil...

Skripta:
#!/bin/bash
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# external interface
I=\"eth0\"

# server ports
SSHD=\"21\"
SQL=\"3306\"

# dovolimo 3 konekta z istega ipja v eni minuti na ta port
iptables -N SSH
iptables -A SSH -p TCP --dport $SSHD -i $I -m state --state NEW -m recent \
--set
iptables -A SSH -p TCP --dport $SSHD -i $I -m state --state NEW -m recent \
--update --seconds 60 --hitcount 4 -j LOG --log-prefix \"**HACK SSHD ( bruteforce? ): \" --log-level 4
iptables -A SSH -p TCP --dport $SSHD -i $I -m state --state NEW -m recent \
--update --seconds 60 --hitcount 4 -j DROP

iptables -N SQL
iptables -A SSH -p TCP --dport $SQL -i $I -j LOG --log-prefix \"*mySQL user: \" --log-level 1
iptables -A SSH -p TCP --dport $SQL -i $I -j DROP

iptables -N XMASScan
iptables -A XMASScan -p TCP --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix \"**NMAP XMAS SCAN: \" --log-level 7
iptables -A XMASScan -j DROP

iptables -N NULLScan
iptables -A NULLScan -p TCP --tcp-flags ALL NONE -j LOG --log-prefix \"**NMAP NULL SCAN: \" --log-level 7
iptables -A NULLScan -j DROP

iptables -N SYNRSTScan
iptables -A SYNRSTScan -p TCP --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix \"**NMAP SYN/RST SCAN: \" --log-level 7
iptables -A SYNRSTScan -j DROP

iptables -N SYNFINScan
iptables -A SYNFINScan -p TCP --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix \"**NMAP SYN/FIN SCAN: \" --log-level 7
iptables -A SYNFINScan -j DROP

# dovolimo vse na interfacu localhost
iptables -A INPUT -p ALL -i lo -j ACCEPT
iptables -A OUTPUT -p ALL -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# dovolimo vse z dolocenih ipjov
iptables -A INPUT -p ALL -s 192.168.123.123/32 -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.123.151/32 -j ACCEPT
iptables -A INPUT -p ALL -s 213.161.22.50/32 -j ACCEPT # SM WEB - raven.triera.net
#iptables -A INPUT -p ALL -s 0/0 -j ACCEPT
iptables -A INPUT -p TCP -j SSH

# DROPING SPOFED DDOS ATTACK BY TTL=44 CAPTURED BY TCPDUMP
iptables -A INPUT -p TCP -s 0/0 -m ttl --ttl-eq=44 -j DROP

#Checking and droping XMAS, NULL, SYN/RST, SYN/FIN scan types
iptables -A INPUT -p tcp -s 0/0 -j XMASScan
iptables -A INPUT -p tcp -s 0/0 -j NULLScan
iptables -A INPUT -p tcp -s 0/0 -j SYNRSTScan
iptables -A INPUT -p tcp -s 0/0 -j SYNFINScan

# Zavrzemo IANA rezervirane privatne naslove. Ponavadi uporabljeni za spoofanje:)?
#iptables -A INPUT -s 70.0.0.0/8 -j DROP
iptables -A INPUT -s 0.0.0.0/7 -j DROP
iptables -A INPUT -s 2.0.0.0/8 -j DROP
iptables -A INPUT -s 5.0.0.0/8 -j DROP
iptables -A INPUT -s 7.0.0.0/8 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 23.0.0.0/8 -j DROP
iptables -A INPUT -s 27.0.0.0/8 -j DROP
iptables -A INPUT -s 31.0.0.0/8 -j DROP
iptables -A INPUT -s 36.0.0.0/7 -j DROP
iptables -A INPUT -s 39.0.0.0/8 -j DROP
iptables -A INPUT -s 42.0.0.0/8 -j DROP
iptables -A INPUT -s 49.0.0.0/8 -j DROP
iptables -A INPUT -s 50.0.0.0/8 -j DROP
iptables -A INPUT -s 77.0.0.0/8 -j DROP
iptables -A INPUT -s 78.0.0.0/7 -j DROP
iptables -A INPUT -s 92.0.0.0/6 -j DROP
iptables -A INPUT -s 96.0.0.0/4 -j DROP
iptables -A INPUT -s 112.0.0.0/5 -j DROP
iptables -A INPUT -s 120.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 173.0.0.0/8 -j DROP
iptables -A INPUT -s 174.0.0.0/7 -j DROP
iptables -A INPUT -s 176.0.0.0/5 -j DROP
iptables -A INPUT -s 184.0.0.0/6 -j DROP
iptables -A INPUT -s 192.0.2.0/24 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
iptables -A INPUT -s 197.0.0.0/8 -j DROP
iptables -A INPUT -s 198.18.0.0/15 -j DROP
iptables -A INPUT -s 223.0.0.0/8 -j DROP
iptables -A INPUT -s 224.0.0.0/3 -j DROP

#iptables -A INPUT -j LOG --log-prefix \"*NORMAL LOG-INPUT: \"
#iptables -A FORWARD -j LOG --log-prefix \"*NORMAL LOG-FORWARD: \"

# vse ostalo zavrzemo!
#iptables -A INPUT -p ALL -j DROP

#sleep 30

#iptables -F
#iptables -X
#iptables -t nat -F
#iptables -t nat -X

Komentarji

Za komentiranje se prijavite ali pa se vpišite.