cb8f82c0c84abf229b0273d87d191c79f5f47d05
[alff.git] / share / plugins / plugin.d / create_chain_tcp_scan_handling
1 #!/bin/bash -e
2 #
3 # create_chain_tcp_scan_handling
4 #
5 # These rules are mainly copied from "Arno's IPTABLES firewall script"
6 # by Arno van Amersfoort. See http://rocky.eld.leidenuniv.nl/ for details
7 #
8 # Maximilian Wilhelm <max@rfc2324.org>
9 #  -- Mon, 24 Apr 2006 20:05:49 +0200
10
11
12 . /usr/share/alff/lib/plugin-routines
13
14 loglevel="info"
15 log_scans="1"
16 drop_scans="1"
17
18 ##
19 # Make sure there is (an empty) chain tcp_scan_handling
20 createChain tcp_scan_handling
21
22 ##
23 # Log scanning of nmap etc.
24 if [ "${log_scans}" != "0" ]; then
25         echo " * Logging of stealth scans (nmap probes etc.) enabled."
26
27 cat <<- EOF >&3
28         # (NMAP) FIN/URG/PSH
29         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL FIN,URG,PSH \
30           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth XMAS scan: "
31         
32         # SYN/RST/ACK/FIN/URG
33         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
34           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth XMAS-PSH scan: "
35         
36         # ALL/ALL
37         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL ALL \
38           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth XMAS-ALL scan: "
39         
40         # NMAP FIN Stealth
41         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL FIN \
42           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth FIN scan: "
43         
44         # SYN/RST
45         iptables -A tcp_scan_handling -p tcp --tcp-flags SYN,RST SYN,RST \
46           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth SYN/RST scan: "
47         
48         # SYN/FIN (probably)
49         iptables -A tcp_scan_handling -p tcp --tcp-flags SYN,FIN SYN,FIN \
50           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth SYN/FIN scan(?): "
51         
52         # Null scan
53         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL NONE \
54           -m limit --limit 3/m --limit-burst 5 -j LOG --log-level ${loglevel} --log-prefix "Stealth Null scan: "
55
56 EOF
57
58 else
59         echo " * Logging of stealth scans (nmap probes etc.) disabled."
60 fi
61
62 ##
63 # Drop (NMAP) scan packets:
64 if [ "${drop_scans}" != '0' ]; then
65         echo " * stealth scans (nmap probes etc.) will be DROPed."
66
67 cat <<- EOF >&3
68         # NMAP FIN/URG/PSH
69         ##################
70         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
71
72         # SYN/RST/ACK/FIN/URG
73         #####################
74         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
75
76         # ALL/ALL Scan
77         ##############
78         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL ALL -j DROP
79
80         # NMAP FIN Stealth
81         ##################
82         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL FIN -j DROP
83
84         # SYN/RST
85         #########
86         iptables -A tcp_scan_handling -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
87
88         # SYN/FIN -- Scan(probably)
89         ###########################
90         iptables -A tcp_scan_handling -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
91
92         # NMAP Null Scan
93         ################
94         iptables -A tcp_scan_handling -p tcp --tcp-flags ALL NONE -j DROP
95
96 EOF
97
98 else
99         echo " * stealth scans (nmap probes etc.) will *not* be DROPed."
100 fi