Browse Source

Create iptables-simple.sh

Håvard O. Nordstrand 5 năm trước cách đây
mục cha
commit
8e6f272f21
1 tập tin đã thay đổi với 74 bổ sung0 xóa
  1. 74 0
      config/linux-server/files/iptables/iptables-simple.sh

+ 74 - 0
config/linux-server/files/iptables/iptables-simple.sh

@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# Simple IPTables script for servers.
+
+set -eu
+
+command -v iptables 1>/dev/null || (echo "Please install iptables." 1>&2 && exit -1)
+command -v netfilter-persistent 1>/dev/null || (echo "Please install iptables-persistent and netfilter-persistent." 1>&2 && exit -1)
+
+## Helper functions
+
+ipt4() {
+    iptables "$@" || return $?
+}
+
+ipt6() {
+    ip6tables "$@" || return $?
+}
+
+ipt46() {
+    ipt4 "$@" || return $?
+    ipt6 "$@" || return $?
+}
+
+ipt_save() {
+    netfilter-persistent save || return $?
+}
+
+## Policies
+ipt46 -P INPUT DROP
+ipt46 -P FORWARD DROP
+ipt46 -P OUTPUT DROP
+
+## Clear all
+ipt46 -F
+ipt46 -X
+ipt46 -t nat -F
+ipt46 -t nat -X
+ipt46 -t mangle -F
+ipt46 -t mangle -X
+ipt46 -t raw -F
+ipt46 -t raw -X
+ipt46 -t security -F
+ipt46 -t security -X
+
+## Input Basic
+# Connection tracking
+ipt46 -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+ipt46 -A INPUT -m conntrack --ctstate INVALID -j DROP
+# Localhost
+ipt46 -A INPUT -i lo -j ACCEPT
+# Ping
+ipt4 -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
+ipt6 -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+# NDP
+ipt6 -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
+ipt6 -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
+ipt6 -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT
+ipt6 -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT
+# DHCPv6 client and server
+ipt6 -A INPUT -p udp --dport 546 -j ACCEPT
+ipt6 -A INPUT -p udp --dport 547 -j ACCEPT
+
+## Input Special
+# SSH
+ipt46 -A INPUT -p tcp --dport 22 -j ACCEPT
+
+## Output
+# Accept all
+ipt46 -A OUTPUT -j ACCEPT
+
+## Save
+ipt_save
+echo "Done"