|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +IPT=/sbin/iptables |
| 4 | + |
| 5 | +cleanOldRules() { |
| 6 | + $IPT -F |
| 7 | + $IPT -X |
| 8 | + $IPT -t nat -F |
| 9 | + $IPT -t nat -X |
| 10 | + $IPT -t mangle -F |
| 11 | + $IPT -t mangle -X |
| 12 | + $IPT -P INPUT ACCEPT |
| 13 | + $IPT -P OUTPUT ACCEPT |
| 14 | + $IPT -P FORWARD ACCEPT |
| 15 | +} |
| 16 | + |
| 17 | +applyRules() { |
| 18 | + iptables -A INPUT -i lo -j ACCEPT |
| 19 | + iptables -A OUTPUT -o lo -j ACCEPT |
| 20 | + iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
| 21 | + iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT |
| 22 | + |
| 23 | + iptables -A INPUT -m conntrack --ctstate INVALID -j DROP # Dropping Invalid Packets |
| 24 | + iptables -A INPUT -p icmp --icmp-type echo-request -j DROP |
| 25 | + iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP |
| 26 | + iptables -N port-scanning |
| 27 | + iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN |
| 28 | + iptables -A port-scanning -j DROP |
| 29 | + iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --set |
| 30 | + iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP |
| 31 | + iptables -N syn_flood |
| 32 | + |
| 33 | + iptables -A INPUT -p tcp --syn -j syn_flood |
| 34 | + iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN |
| 35 | + iptables -A syn_flood -j DROP |
| 36 | + |
| 37 | + iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT |
| 38 | + |
| 39 | + iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP: |
| 40 | + iptables -A INPUT -p icmp -j DROP |
| 41 | + |
| 42 | + iptables -A OUTPUT -p icmp -j ACCEPT |
| 43 | + iptables -t mangle -A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP |
| 44 | + iptables -A INPUT -f -j DROP |
| 45 | + iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP |
| 46 | + iptables -t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP |
| 47 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP |
| 48 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP |
| 49 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP |
| 50 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP |
| 51 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP |
| 52 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP |
| 53 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,FIN FIN -j DROP |
| 54 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP |
| 55 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP |
| 56 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP |
| 57 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP |
| 58 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP |
| 59 | + iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP |
| 60 | + |
| 61 | + iptables-save >/etc/iptables/rules.v4 |
| 62 | + iptables -S |
| 63 | +} |
| 64 | + |
| 65 | +( |
| 66 | + set -e |
| 67 | + cleanOldRules |
| 68 | + applyRules |
| 69 | +) |
| 70 | + |
| 71 | +errorCode=$? |
| 72 | +if [ $errorCode -ne 0 ]; then |
| 73 | + echo "Error in common-rules: $errorCode" |
| 74 | + exit $errorCode |
| 75 | +fi |
0 commit comments