diff options
Diffstat (limited to 'files/iptables')
-rw-r--r-- | files/iptables/flush-ip6tables.sh | 15 | ||||
-rw-r--r-- | files/iptables/flush-iptables.sh | 10 | ||||
-rw-r--r-- | files/iptables/ip6tables.rules | 48 | ||||
-rw-r--r-- | files/iptables/ip6tables.service | 15 | ||||
-rw-r--r-- | files/iptables/iptables.rules | 43 | ||||
-rw-r--r-- | files/iptables/iptables.service | 15 |
6 files changed, 146 insertions, 0 deletions
diff --git a/files/iptables/flush-ip6tables.sh b/files/iptables/flush-ip6tables.sh new file mode 100644 index 0000000..498e97f --- /dev/null +++ b/files/iptables/flush-ip6tables.sh @@ -0,0 +1,15 @@ +#!/bin/sh +ip6tables -F +ip6tables -X +ip6tables -Z + +for table in $(</proc/net/ip6_tables_names) +do + ip6tables -t \$table -F + ip6tables -t \$table -X + ip6tables -t \$table -Z +done + +ip6tables -P INPUT ACCEPT +ip6tables -P OUTPUT ACCEPT +ip6tables -P FORWARD ACCEPT diff --git a/files/iptables/flush-iptables.sh b/files/iptables/flush-iptables.sh new file mode 100644 index 0000000..6336455 --- /dev/null +++ b/files/iptables/flush-iptables.sh @@ -0,0 +1,10 @@ +#!/bin/sh +iptables -F +iptables -X +iptables -t nat -F +iptables -t nat -X +iptables -t mangle -F +iptables -t mangle -X +iptables -P INPUT ACCEPT +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT diff --git a/files/iptables/ip6tables.rules b/files/iptables/ip6tables.rules new file mode 100644 index 0000000..30e8b36 --- /dev/null +++ b/files/iptables/ip6tables.rules @@ -0,0 +1,48 @@ +*filter +:INPUT DROP [0:0] +:FORWARD DROP [0:0] +:OUTPUT ACCEPT [0:0] +:TCP - [0:0] +:UDP - [0:0] +:SSH - [0:0] + +# Drop packets with RH0 headers +-A INPUT -m rt --rt-type 0 -j DROP +-A OUTPUT -m rt --rt-type 0 -j DROP +-A FORWARD -m rt --rt-type 0 -j DROP + +# Rate limit ping requests +-A INPUT -p icmpv6 --icmpv6-type echo-request -m limit --limit 30/min --limit-burst 8 -j ACCEPT +-A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP + +# Accept established connections +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# Accept all traffic on loopback interface +-A INPUT -i lo -j ACCEPT + +# Drop packets declared invalid +-A INPUT -m conntrack --ctstate INVALID -j DROP + +# SSH rate limiting +-A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -j SSH +-A SSH -m recent --name sshbf --rttl --rcheck --hitcount 3 --seconds 10 -j DROP +-A SSH -m recent --name sshbf --rttl --rcheck --hitcount 20 --seconds 1800 -j DROP +-A SSH -m recent --name sshbf --set -j ACCEPT + +# Send TCP and UDP connections to their respective rules chain +-A INPUT -p udp -m conntrack --ctstate NEW -j UDP +-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP + +# Reject dropped packets with a RFC compliant responce +-A INPUT -p udp -j REJECT --reject-with icmp6-adm-prohibited +-A INPUT -p tcp -j REJECT --reject-with icmp6-adm-prohibited +-A INPUT -j REJECT --reject-with icmp6-adm-prohibited + +## TCP PORT RULES +# -A TCP -p tcp -j LOG + +## UDP PORT RULES +# -A UDP -p udp -j LOG + +COMMIT diff --git a/files/iptables/ip6tables.service b/files/iptables/ip6tables.service new file mode 100644 index 0000000..bb1644f --- /dev/null +++ b/files/iptables/ip6tables.service @@ -0,0 +1,15 @@ +[Unit] +Description=Packet Filtering Framework +DefaultDependencies=no +After=systemd-sysctl.service +Before=sysinit.target + +[Service] +Type=oneshot +ExecStart=/sbin/ip6tables-restore /etc/iptables/ip6tables.rules +ExecReload=/sbin/ip6tables-restore /etc/iptables/ip6tables.rules +ExecStop=/etc/iptables/flush-ip6tables.sh +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/files/iptables/iptables.rules b/files/iptables/iptables.rules new file mode 100644 index 0000000..2fc4ca4 --- /dev/null +++ b/files/iptables/iptables.rules @@ -0,0 +1,43 @@ +*filter +:INPUT DROP [0:0] +:FORWARD DROP [0:0] +:OUTPUT ACCEPT [0:0] +:TCP - [0:0] +:UDP - [0:0] +:SSH - [0:0] + +# Rate limit ping requests +-A INPUT -p icmp --icmp-type echo-request -m limit --limit 30/min --limit-burst 8 -j ACCEPT +-A INPUT -p icmp --icmp-type echo-request -j DROP + +# Accept established connections +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# Accept all traffic on loopback interface +-A INPUT -i lo -j ACCEPT + +# Drop packets declared invalid +-A INPUT -m conntrack --ctstate INVALID -j DROP + +# SSH rate limiting +-A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -j SSH +-A SSH -m recent --name sshbf --rttl --rcheck --hitcount 3 --seconds 10 -j DROP +-A SSH -m recent --name sshbf --rttl --rcheck --hitcount 20 --seconds 1800 -j DROP +-A SSH -m recent --name sshbf --set -j ACCEPT + +# Send TCP and UDP connections to their respective rules chain +-A INPUT -p udp -m conntrack --ctstate NEW -j UDP +-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP + +# Reject dropped packets with a RFC compliant responce +-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable +-A INPUT -p tcp -j REJECT --reject-with tcp-rst +-A INPUT -j REJECT --reject-with icmp-proto-unreachable + +## TCP PORT RULES +# -A TCP -p tcp -j LOG + +## UDP PORT RULES +# -A UDP -p udp -j LOG + +COMMIT diff --git a/files/iptables/iptables.service b/files/iptables/iptables.service new file mode 100644 index 0000000..f5a1e89 --- /dev/null +++ b/files/iptables/iptables.service @@ -0,0 +1,15 @@ +[Unit] +Description=Packet Filtering Framework +DefaultDependencies=no +After=systemd-sysctl.service +Before=sysinit.target + +[Service] +Type=oneshot +ExecStart=/sbin/iptables-restore /etc/iptables/iptables.rules +ExecReload=/sbin/iptables-restore /etc/iptables/iptables.rules +ExecStop=/etc/iptables/flush-iptables.sh +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target |