Mit iptables(Netfilter) lassen sich Portscans leicht blockieren. Um die bekanntesten Portscans auch zu protokollieren verwende ich normalerweise folgende Regeln.
Als erstes brauchen wir ein neues Ziel für die erkannten Pakete. Die Pakete die hier rein wandern werden protokolliert und danach verworfen.
iptables -N PORTSCAN
iptables -A PORTSCAN -j LOG --log-prefix "PORTSCAN detected -- "
iptables -A PORTSCAN -j DROP |
iptables -N PORTSCAN
iptables -A PORTSCAN -j LOG --log-prefix "PORTSCAN detected -- "
iptables -A PORTSCAN -j DROP
Danach können wir uns an die einzelnen Portscan Typen machen, die wir anhand von ungültigen Flagkombinationen aussortieren.
SYN + RST
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j PORTSCAN
SYN + FIN
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j PORTSCAN
FIN + URG + PSH
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j PORTSCAN
ALL
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j PORTSCAN
nmap Null scan
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j PORTSCAN
nmap FIN stealth scan
iptables -A INPUT -p tcp --tcp-flags ALL FIN -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL FIN -j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags ALL FIN -j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL FIN -j PORTSCAN
XMAS
iptables -A INPUT -p tcp --tcp-flags ALL URG,ACK,PSH,RST,SYN,FIN \
-j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL URG,ACK,PSH,RST,SYN,FIN \
-j PORTSCAN |
iptables -A INPUT -p tcp --tcp-flags ALL URG,ACK,PSH,RST,SYN,FIN \
-j PORTSCAN
iptables -A FORWARD -p tcp --tcp-flags ALL URG,ACK,PSH,RST,SYN,FIN \
-j PORTSCAN