sample iptables for CAS N+S H16 master
authorHansjürg Wenger <wgh1@bfh.ch>
Tue, 28 Mar 2017 16:11:46 +0000 (18:11 +0200)
committerHansjürg Wenger <wgh1@bfh.ch>
Tue, 28 Mar 2017 16:11:46 +0000 (18:11 +0200)
sf-host-fw-pscan/iptables-host-stateful-ps-rules.v4 [new file with mode: 0644]
sf-host-fw/ip6tables-host-stateful-rules.v6 [new file with mode: 0644]
sf-host-fw/iptables-host-stateful-v1-rules.v4 [new file with mode: 0644]
sf-host-fw/iptables-host-stateful-v2-rules.v4 [new file with mode: 0644]
sf-net-fw-tproxy/iptables-tproxy-rules.v4 [new file with mode: 0644]
sf-net-fw-tproxy/squid.conf [new file with mode: 0644]
sf-net-fw/ip6tables-net-stateful-rules.v6 [new file with mode: 0644]
sf-net-fw/iptables-net-stateful-rules.v4 [new file with mode: 0644]
sl-host-fw/iptables-host-stateless-rules.v4 [new file with mode: 0644]

diff --git a/sf-host-fw-pscan/iptables-host-stateful-ps-rules.v4 b/sf-host-fw-pscan/iptables-host-stateful-ps-rules.v4
new file mode 100644 (file)
index 0000000..e7dd69d
--- /dev/null
@@ -0,0 +1,24 @@
+#
+# iptables host firewall example (stateful)
+#
+# iptables-save format
+# restore using iptables-restore < rules.v4
+#
+# (c) BFH, WGH1 2017
+#
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+:PSCAN - [0:0]
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "accept incomming RELATED and ESTABLISHED connections"
+-A INPUT -m conntrack --ctstate NEW -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT -m comment --comment "accept new local traffic"
+-A INPUT -p tcp -m conntrack --ctstate NEW,INVALID -m multiport --dports 21,23,25,80,443,587,993,995 -m comment --comment "sniff on unused tcp .." -j PSCAN
+-A INPUT -p udp -m conntrack --ctstate NEW,INVALID -m multiport --dports 53,67,69,111,123,161 -m comment --comment ".. and udp WKS ports to detect port scans" -j PSCAN
+-A INPUT -p udp -m udp --dport 68 -j ACCEPT -m comment --comment "DHCP configuration: bootps -> bootpc"
+-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 1024:65535 --dport 22 -j ACCEPT -m comment --comment "accept incomming ssh connections"
+-A INPUT -j REJECT --reject-with icmp-host-prohibited -m comment --comment "RFC-friendly reject any other incomming connection"
+-A PSCAN -m recent --set --name PSCAN --rsource -m comment --comment "set/write match to recent table PSCAN (see /proc/net/xt_recent/PSCAN)"
+-A PSCAN -m recent --update --seconds 60 --hitcount 5 --rttl --name PSCAN --rsource -m limit --limit 5/min -m comment --comment "log unwanted packets when more then 5 per minute arrive, limit the number of log entries" -j LOG --log-prefix "ipt_pscan:"
+-A PSCAN -m recent --update --seconds 60 --hitcount 5 --rttl --name PSCAN --rsource -m comment --comment "and drop them" -j DROP
+COMMIT
diff --git a/sf-host-fw/ip6tables-host-stateful-rules.v6 b/sf-host-fw/ip6tables-host-stateful-rules.v6
new file mode 100644 (file)
index 0000000..8b586ed
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# ip6tables host firewall example (stateful)
+#
+# ip6tables-save format
+# restore using ip6tables-restore < rules.v6
+#
+# (c) BFH, WGH1 2017
+#
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -p icmpv6 -j ACCEPT -m comment --comment "could be more sophisticated see https://www.cert.org/downloads/IPv6/ip6tables_rules.txt"
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "accept incomming RELATED and ESTABLISHED connections"
+-A INPUT -m conntrack --ctstate NEW -i lo -j ACCEPT -m comment --comment "accept new local traffic"
+-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 1024:65535 --dport 22 -j ACCEPT -m comment --comment "accept incomming ssh connections"
+-A INPUT -j REJECT --reject-with adm-prohibited -m comment --comment "RFC-friendly reject any other incomming connection"
+COMMIT
diff --git a/sf-host-fw/iptables-host-stateful-v1-rules.v4 b/sf-host-fw/iptables-host-stateful-v1-rules.v4
new file mode 100644 (file)
index 0000000..ffec580
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# iptables host firewall example (stateful)
+#
+# iptables-save format
+# restore using iptables-restore < rules.v4
+#
+# (c) BFH, WGH1 2017
+#
+*filter
+:INPUT DROP [0:0]
+:FORWARD DROP [0:0]
+:OUTPUT DROP [0:0]
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "accept incomming RELATED and ESTABLISHED connections"
+-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "accept outgoing RELATED and ESTABLISHED connections"
+# accept local traffic
+-A INPUT -m conntrack --ctstate NEW -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT -m comment --comment "accept new local traffic"
+-A OUTPUT -m conntrack --ctstate NEW -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -j ACCEPT -m comment --comment "accept new local traffic"
+# allow configuration using bootp/dhcp
+-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT -m comment --comment "DHCP: bootps -> bootpc"
+-A OUTPUT -p udp -m udp --sport 68 --dport 67 -j ACCEPT -m comment --comment "DHCP: bootpc -> bootps"
+# allow outgoing ping
+-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -m comment --comment "accept outgoing ping"
+# allow incomming ssh
+-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 1024:65535 --dport 22 -j ACCEPT -m comment --comment "accept incomming ssh connections"
+# allow DNS queries over udp and tcp
+-A OUTPUT -p udp -m udp -m conntrack --ctstate NEW --sport 1024:65535 --dport 53 -j ACCEPT -m comment --comment "accept DNS-queries over udp"
+-A OUTPUT -p tcp --dport 53 -m conntrack --ctstate NEW -m tcp --sport 1024:65535 -j ACCEPT -m comment --comment "accept DNS-queries over tcp"
+# allow outgoing ftp, ssh, smtp, http, pop3, imap, https, submission, imaps, pop3s
+-A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 22,25,80,110,143,443,587,993,995 -m tcp --sport 1024:65535 -j ACCEPT -m comment --comment "accept outgoing ssh, smtp, http, pop3, imap, https, submission, imaps, pop3s"
+-A OUTPUT -p tcp -m conntrack --ctstate NEW --dport 21 -m tcp --sport 1024:65535 -j ACCEPT -m comment --comment "accept outgoing ftp, to support RELATED module nf_conntrack_ftp must be present i.e. modprobe nf_conntrack_ftp"
+COMMIT
diff --git a/sf-host-fw/iptables-host-stateful-v2-rules.v4 b/sf-host-fw/iptables-host-stateful-v2-rules.v4
new file mode 100644 (file)
index 0000000..624ca2c
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# iptables host firewall example (stateful)
+#
+# iptables-save format
+# restore using iptables-restore < rules.v4
+#
+# (c) BFH, WGH1 2017
+#
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "accept incomming RELATED and ESTABLISHED connections"
+-A INPUT -m conntrack --ctstate NEW -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT -m comment --comment "accept new local traffic"
+-A INPUT -p udp -m udp --dport 68 -j ACCEPT -m comment --comment "DHCP configuration: bootps -> bootpc"
+-A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 1024:65535 --dport 22 -j ACCEPT -m comment --comment "accept incomming ssh connections"
+-A INPUT -j REJECT --reject-with icmp-host-prohibited -m comment --comment "RFC-friendly reject any other incomming connection"
+COMMIT
diff --git a/sf-net-fw-tproxy/iptables-tproxy-rules.v4 b/sf-net-fw-tproxy/iptables-tproxy-rules.v4
new file mode 100644 (file)
index 0000000..581fb32
--- /dev/null
@@ -0,0 +1,67 @@
+#
+# iptables network firewall example (stateful, with transparent http proxy on router)
+# for net n148.nslab.ch 193.5.86.224/27
+#
+# iptables-save format (with comments)
+# restore using "iptables-restore < rules.v4"
+#
+# this variant uses a combination of iptables (to mark packets) and
+# iproute2 rules and tables to route them in dependence of their mark
+# this variant is fully transparent for the client and the proxy
+# contacted webservers get the ip of the originating client (from the proxy)
+#
+# be aware that you have to setup policy routing to
+# redirect http traffic to the local "squid" proxy 
+# according to http://wiki.squid-cache.org/Features/Tproxy4
+#
+# this commands worked for my setup:
+# ip -f inet rule add fwmark 1 lookup 100
+# ip -f inet route add local default dev lo table 100
+# echo 1 > /proc/sys/net/ipv4/ip_forward
+# echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
+# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+# echo 0 > /proc/sys/net/ipv4/conf/int/rp_filter
+#
+# (c) BFH, WGH1 2017
+#
+*mangle
+:PREROUTING ACCEPT [0:0]
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+:POSTROUTING ACCEPT [0:0]
+:DIVERT - [0:0]
+-A PREROUTING -p tcp -m socket -m comment --comment "jump to DIVERT if packet is from local socket" -j DIVERT
+-A PREROUTING -s 193.5.86.224/27 -p tcp -m tcp --dport 80 -m comment --comment "redirect matching packets to local squid port using fwmark 1 and policy routing" -j TPROXY --on-port 3129 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1
+-A DIVERT -m comment --comment "remove fwmark 1 and .." -j MARK --set-xmark 0x1/0xffffffff
+-A DIVERT -m comment --comment ".. accept packet" -j ACCEPT
+COMMIT
+# reset nat table in case of remains from previous excercises
+*nat
+:PREROUTING ACCEPT [0:0]
+:INPUT ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+:POSTROUTING ACCEPT [0:0]
+COMMIT
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -i lo -m comment --comment "allow local loopback traffic" -j ACCEPT
+-A INPUT -p icmp -m comment --comment "allow any incomming ICMP packet" -j ACCEPT
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.5/32 -p ospf -m comment --comment "allow opsf all routers multicasts" -j ACCEPT
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.6/32 -p ospf -m comment --comment "allow opsf DR multicasts" -j ACCEPT
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.9/32 -p udp -m udp --dport 520 -m comment --comment "allow rip multicasts" -j ACCEPT
+-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH access" -j ACCEPT
+-A INPUT -s 193.5.86.224/27 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 80,3128,3129 -m conntrack --ctstate NEW -m comment --comment "allow incomming access to Squid proxy" -j ACCEPT
+-A INPUT -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with icmp-admin-prohibited
+-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT
+-A FORWARD -s 193.5.86.224/27 -m conntrack --ctstate NEW -m comment --comment "allow NEW outgoing connections from our net" -j ACCEPT
+-A FORWARD -d 193.5.86.224/27 -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH connections to our net" -j ACCEPT
+-A FORWARD -d 193.5.86.226 -p tcp -m tcp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over tcp to our nameserver" -j ACCEPT
+-A FORWARD -d 193.5.86.226 -p udp -m udp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over udp to our nameserver" -j ACCEPT
+-A FORWARD -d 193.5.86.227 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 25,587,993,995 -m conntrack --ctstate NEW -m comment --comment "allow incomming mail connections to our mailserver" -j ACCEPT
+-A FORWARD -d 193.5.86.227 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 80,443 -m conntrack --ctstate NEW -m comment --comment "allow incomming Web connections to our webserver" -j ACCEPT
+-A FORWARD -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with icmp-admin-prohibited
+COMMIT
diff --git a/sf-net-fw-tproxy/squid.conf b/sf-net-fw-tproxy/squid.conf
new file mode 100644 (file)
index 0000000..06c533e
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# modified squid.conf for for net n148.nslab.ch 193.5.86.224/27
+#
+# this squid.conf allows access to port 3128 (for configured browsers)
+# and port 3129 (transparent/tproxy) from IPv4 network of group n148
+#
+# (c) BFH, WGH1 2017
+#
+
+#
+# Recommended minimum configuration:
+#
+
+# Example rule allowing access from your local networks.
+# Adapt to list your (internal) IP networks from where browsing
+# should be allowed
+#acl localnet src 10.0.0.0/8   # RFC1918 possible internal network
+#acl localnet src 172.16.0.0/12        # RFC1918 possible internal network
+#acl localnet src 192.168.0.0/16       # RFC1918 possible internal network
+#acl localnet src fc00::/7       # RFC 4193 local private network range
+#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
+
+# local network (n148)
+acl localnet src 193.5.86.224/27 
+
+acl SSL_ports port 443
+acl Safe_ports port 80         # http
+acl Safe_ports port 21         # ftp
+acl Safe_ports port 443                # https
+acl Safe_ports port 70         # gopher
+acl Safe_ports port 210                # wais
+acl Safe_ports port 1025-65535 # unregistered ports
+acl Safe_ports port 280                # http-mgmt
+acl Safe_ports port 488                # gss-http
+acl Safe_ports port 591                # filemaker
+acl Safe_ports port 777                # multiling http
+acl CONNECT method CONNECT
+
+#
+# Recommended minimum Access Permission configuration:
+#
+# Deny requests to certain unsafe ports
+http_access deny !Safe_ports
+
+# Deny CONNECT to other than secure SSL ports
+http_access deny CONNECT !SSL_ports
+
+# Only allow cachemgr access from localhost
+http_access allow localhost manager
+http_access deny manager
+
+# We strongly recommend the following be uncommented to protect innocent
+# web applications running on the proxy server who think the only
+# one who can access services on "localhost" is a local user
+#http_access deny to_localhost
+
+#
+# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
+#
+
+# Example rule allowing access from your local networks.
+# Adapt localnet in the ACL section to list your (internal) IP networks
+# from where browsing should be allowed
+http_access allow localnet
+http_access allow localhost
+
+# And finally deny all other access to this proxy
+http_access deny all
+
+# Squid normally listens to port 3128
+http_port 3128
+# Also listen (transparent/tproxy) on port 3129
+http_port 3129 tproxy
+
+# Uncomment and adjust the following to add a disk cache directory.
+#cache_dir ufs /var/spool/squid 100 16 256
+
+# Leave coredumps in the first cache dir
+coredump_dir /var/spool/squid
+
+#
+# Add any of your own refresh_pattern entries above these.
+#
+refresh_pattern ^ftp:          1440    20%     10080
+refresh_pattern ^gopher:       1440    0%      1440
+refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
+refresh_pattern .              0       20%     4320
+
+#
+# URL rewrite using squidGuard
+# uncomment if squidGuard is configured
+#
+#url_rewrite_program /usr/bin/squidGuard
diff --git a/sf-net-fw/ip6tables-net-stateful-rules.v6 b/sf-net-fw/ip6tables-net-stateful-rules.v6
new file mode 100644 (file)
index 0000000..9ae4286
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# ip6tables network firewall example (stateful)
+# for net n148.nslab.ch 2001:620:500:ff30::/64
+#
+# ip6tables-save format (with comments)
+# restore using "ip6tables-restore < rules.v6"
+#
+# (c) BFH, WGH1 2017
+# 
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -i lo -m comment --comment "allow local loopback traffic" -j ACCEPT 
+-A INPUT -p icmpv6 -m comment --comment "allow any incomming ICMPv6, could be more sophisticated, see https://www.cert.org/downloads/IPv6/ip6tables_rules.txt" -j ACCEPT 
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT 
+-A INPUT -s fe80::0/64 -d ff02::5 -p ospf -m comment --comment "allow opsf all routers multicasts" -j ACCEPT
+-A INPUT -s fe80::0/64 -d ff02::6 -p ospf -m comment --comment "allow opsf DR multicasts" -j ACCEPT
+-A INPUT -s fe80::0/64 -d ff02::9 -p udp -m udp --dport 521 -m comment --comment "allow ripng multicasts" -j ACCEPT
+-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH access" -j ACCEPT 
+-A INPUT -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with adm-prohibited
+-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT 
+-A FORWARD -s 2001:620:500:ff30::/64 -m conntrack --ctstate NEW -m comment --comment "allow NEW outgoing connections from our net" -j ACCEPT 
+-A FORWARD -d 2001:620:500:ff30::/64 -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH connections to our net" -j ACCEPT 
+-A FORWARD -d 2001:620:500:ff30::20 -p tcp -m tcp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over tcp to our nameserver" -j ACCEPT 
+-A FORWARD -d 2001:620:500:ff30::20 -p udp -m udp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over udp to our nameserver" -j ACCEPT 
+-A FORWARD -d 2001:620:500:ff30::30 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 25,587,993,995 -m conntrack --ctstate NEW -m comment --comment "allow incomming mail connections to our mailserver" -j ACCEPT 
+-A FORWARD -d 2001:620:500:ff30::30 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 80,443 -m conntrack --ctstate NEW -m comment --comment "allow incomming Web connections to our webserver" -j ACCEPT 
+-A FORWARD -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with adm-prohibited
+COMMIT
diff --git a/sf-net-fw/iptables-net-stateful-rules.v4 b/sf-net-fw/iptables-net-stateful-rules.v4
new file mode 100644 (file)
index 0000000..ff98fd8
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# iptables network firewall example (stateful)
+# for net n148.nslab.ch 193.5.86.224/27
+#
+# iptables-save format (with comments)
+# restore using "iptables-restore < rules.v4"
+#
+# (c) BFH, WGH1 2017
+# 
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -i lo -m comment --comment "allow local loopback traffic" -j ACCEPT 
+-A INPUT -p icmp -m comment --comment "allow any incomming ICMP packet" -j ACCEPT 
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT 
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.5/32 -p ospf -m comment --comment "allow opsf all routers multicasts" -j ACCEPT
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.6/32 -p ospf -m comment --comment "allow opsf DR multicasts" -j ACCEPT
+-A INPUT -s 193.5.80.0/24 -d 224.0.0.9/32 -p udp -m udp --dport 520 -m comment --comment "allow rip multicasts" -j ACCEPT
+-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH access" -j ACCEPT 
+-A INPUT -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with icmp-admin-prohibited 
+-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow ESTABLISHED and RELATED connections first (better performance)" -j ACCEPT 
+-A FORWARD -s 193.5.86.224/27 -m conntrack --ctstate NEW -m comment --comment "allow NEW outgoing connections from our net" -j ACCEPT 
+-A FORWARD -d 193.5.86.224/27 -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW -m comment --comment "allow incomming SSH connections to our net" -j ACCEPT 
+-A FORWARD -d 193.5.86.226 -p tcp -m tcp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over tcp to our nameserver" -j ACCEPT 
+-A FORWARD -d 193.5.86.226 -p udp -m udp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW -m comment --comment "allow incomming DNS queries over udp to our nameserver" -j ACCEPT 
+-A FORWARD -d 193.5.86.227 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 25,587,993,995 -m conntrack --ctstate NEW -m comment --comment "allow incomming mail connections to our mailserver" -j ACCEPT 
+-A FORWARD -d 193.5.86.227 -p tcp -m tcp --sport 1024:65535 -m multiport --dports 80,443 -m conntrack --ctstate NEW -m comment --comment "allow incomming Web connections to our webserver" -j ACCEPT 
+-A FORWARD -m comment --comment "reject any other packet and send back ICMP admin prohibited" -j REJECT --reject-with icmp-admin-prohibited 
+COMMIT
diff --git a/sl-host-fw/iptables-host-stateless-rules.v4 b/sl-host-fw/iptables-host-stateless-rules.v4
new file mode 100644 (file)
index 0000000..091dfcf
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# iptables host firewall example (stateless) 
+#
+# iptables-save format 
+# restore using iptables-restore < rules.v4
+#
+# (c) BFH, WGH1 2017
+#
+*filter
+:INPUT DROP [0:0]
+:FORWARD DROP [0:0]
+:OUTPUT DROP [0:0]
+# accept local traffic
+-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
+-A OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -j ACCEPT
+# allow configuration using bootp/dhcp
+-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
+-A OUTPUT -p udp -m udp --sport 68 --dport 67 -j ACCEPT
+# allow outgoing ping
+-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
+-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
+# allow incomming ssh
+-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -j ACCEPT
+-A OUTPUT -p tcp -m tcp --sport 22 --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+# allow DNS queries over udp and tcp
+-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
+-A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -j ACCEPT
+-A INPUT -p tcp --sport 53 -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+-A OUTPUT -p tcp --dport 53 -m tcp --sport 1024:65535 -j ACCEPT
+# allow outgoing ssh, smtp, http, pop3, imap https, submission, imaps, pop3s
+-A INPUT -p tcp -m multiport --sports 22,25,80,110,143,443,587,993,995 -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+-A OUTPUT -p tcp -m multiport --dports 22,25,80,110,143,443,587,993,995 -m tcp --sport 1024:65535 -j ACCEPT
+# ftp command session
+-A INPUT -p tcp -m tcp --sport 21 -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+-A OUTPUT -p tcp -m tcp --dport 21 -m tcp --sport 1024:65535 -j ACCEPT
+# ftp data session (active mode)
+-A INPUT -p tcp -m tcp --sport 20 -m tcp --dport 1024:65535 -j ACCEPT
+-A OUTPUT -p tcp -m tcp --dport 20 -m tcp --sport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+# ftp data session (passive mode)
+-A INPUT -p tcp -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
+-A OUTPUT -p tcp -m tcp --sport 1024:65535 -j ACCEPT
+COMMIT