diff options
author | Silvino Silva <silvino@bk.ru> | 2017-02-21 13:56:33 +0000 |
---|---|---|
committer | Silvino Silva <silvino@bk.ru> | 2017-02-21 14:00:24 +0000 |
commit | 3c09bd81cd3d2a9732545795fb57901181fc5ad2 (patch) | |
tree | f5acd9ac8a62b544684926270ffe1a1335a97785 | |
parent | af5a037d16e4310a45203f655866407d0e7448b4 (diff) | |
download | doc-3c09bd81cd3d2a9732545795fb57901181fc5ad2.tar.gz |
core iptables revision
-rw-r--r-- | core/conf/iptables/iptables-lan.sh | 277 | ||||
-rw-r--r-- | core/conf/iptables/rules.v4 | 227 | ||||
-rw-r--r-- | core/network.html | 4 |
3 files changed, 367 insertions, 141 deletions
diff --git a/core/conf/iptables/iptables-lan.sh b/core/conf/iptables/iptables-lan.sh new file mode 100644 index 0000000..fae7345 --- /dev/null +++ b/core/conf/iptables/iptables-lan.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +#------------------------------------------------------------------------------ +# +# File: iptables_mint17.sh +# +# http://www.hardenedlinux.org +# +# Reference: Ruslan Abuzant <ruslan@abuzant.com>, http://www.hackersgarage.com/ +# Changed by: Silvino Silva <silvino@bk.ru> +# +# License: GNU GPL (version 2, or any later version). +# +# Configuration. +#------------------------------------------------------------------------------ + +# For debugging use iptables -v. +IPTABLES="/usr/sbin/iptables" +IP6TABLES="/usr/sbin/ip6tables" +MODPROBE="/sbin/modprobe" +RMMOD="/sbin/rmmod" +ARP="/usr/sbin/arp" + +# NIC interfaces +NIC_NAME="enp8s0 wlp7s0" + +# Logging options. +#------------------------------------------------------------------------------ +LOG="LOG --log-level debug --log-tcp-sequence --log-tcp-options" +LOG="$LOG --log-ip-options" + + +# Defaults for rate limiting +#------------------------------------------------------------------------------ +RLIMIT="-m limit --limit 3/s --limit-burst 8" + + +# Unprivileged ports. +#------------------------------------------------------------------------------ +PHIGH="1024:65535" +PSSH="1000:1023" + + +# Load required kernel modules +#------------------------------------------------------------------------------ +$MODPROBE ip_conntrack_ftp +$MODPROBE ip_conntrack_irc + + +# Mitigate ARP spoofing/poisoning and similar attacks. +#------------------------------------------------------------------------------ +# Hardcode static ARP cache entries here +# $ARP -s IP-ADDRESS MAC-ADDRESS + + +# Default policies. +#------------------------------------------------------------------------------ + +# Drop everything by default. +$IPTABLES -P INPUT DROP +$IPTABLES -P FORWARD DROP +$IPTABLES -P OUTPUT ACCEPT + +# Set the nat/mangle/raw tables' chains to ACCEPT + +$IPTABLES -t mangle -P PREROUTING ACCEPT +$IPTABLES -t mangle -P INPUT ACCEPT +$IPTABLES -t mangle -P FORWARD ACCEPT +$IPTABLES -t mangle -P OUTPUT ACCEPT +$IPTABLES -t mangle -P POSTROUTING ACCEPT + +# Cleanup. +#------------------------------------------------------------------------------ + +# Delete all +$IPTABLES -F +$IPTABLES -t mangle -F + +# Delete all +$IPTABLES -X +$IPTABLES -t mangle -X + +# Zero all packets and counters. +$IPTABLES -Z +$IPTABLES -t mangle -Z + +# Completely disable IPv6. +#------------------------------------------------------------------------------ + +# Block all IPv6 traffic +# If the ip6tables command is available, try to block all IPv6 traffic. +if test -x $IP6TABLES; then +# Set the default policies +# drop everything +$IP6TABLES -P INPUT DROP 2>/dev/null +$IP6TABLES -P FORWARD DROP 2>/dev/null +$IP6TABLES -P OUTPUT DROP 2>/dev/null + +# The mangle table can pass everything +$IP6TABLES -t mangle -P PREROUTING ACCEPT 2>/dev/null +$IP6TABLES -t mangle -P INPUT ACCEPT 2>/dev/null +$IP6TABLES -t mangle -P FORWARD ACCEPT 2>/dev/null +$IP6TABLES -t mangle -P OUTPUT ACCEPT 2>/dev/null +$IP6TABLES -t mangle -P POSTROUTING ACCEPT 2>/dev/null + +# Delete all rules. +$IP6TABLES -F 2>/dev/null +$IP6TABLES -t mangle -F 2>/dev/null + +# Delete all chains. +$IP6TABLES -X 2>/dev/null +$IP6TABLES -t mangle -X 2>/dev/null + +# Zero all packets and counters. +$IP6TABLES -Z 2>/dev/null +$IP6TABLES -t mangle -Z 2>/dev/null +fi + +# Custom user-defined chains. +#------------------------------------------------------------------------------ + +# LOG packets, then ACCEPT. +$IPTABLES -N ACCEPTLOG +$IPTABLES -A ACCEPTLOG -j $LOG $RLIMIT --log-prefix "ACCEPT " +$IPTABLES -A ACCEPTLOG -j ACCEPT + +# LOG packets, then DROP. +$IPTABLES -N DROPLOG +$IPTABLES -A DROPLOG -j $LOG $RLIMIT --log-prefix "DROP " +$IPTABLES -A DROPLOG -j DROP + +# LOG packets, then REJECT. +# TCP packets are rejected with a TCP reset. +$IPTABLES -N REJECTLOG +$IPTABLES -A REJECTLOG -j $LOG $RLIMIT --log-prefix "REJECT " +$IPTABLES -A REJECTLOG -p tcp -j REJECT --reject-with tcp-reset +$IPTABLES -A REJECTLOG -j REJECT + +# Only allows RELATED ICMP types +# (destination-unreachable, time-exceeded, and parameter-problem). +# TODO: Rate-limit this traffic? +# TODO: Allow fragmentation-needed? +# TODO: Test. +$IPTABLES -N RELATED_ICMP +$IPTABLES -A RELATED_ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT +$IPTABLES -A RELATED_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT +$IPTABLES -A RELATED_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT +$IPTABLES -A RELATED_ICMP -j DROPLOG + +# Make It Even Harder To Multi-PING +$IPTABLES -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j ACCEPT +$IPTABLES -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j LOG --log-prefix PING-DROP: +$IPTABLES -A INPUT -p icmp -j DROP +$IPTABLES -A OUTPUT -p icmp -j ACCEPT + +# Only allow the minimally required/recommended parts of ICMP. Block the rest. +#------------------------------------------------------------------------------ + +# TODO: This section needs a lot of testing! + +# First, drop all fragmented ICMP packets (almost always malicious). +$IPTABLES -A INPUT -p icmp --fragment -j DROPLOG +$IPTABLES -A OUTPUT -p icmp --fragment -j DROPLOG +$IPTABLES -A FORWARD -p icmp --fragment -j DROPLOG + +# Allow all ESTABLISHED ICMP traffic. +$IPTABLES -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT +$IPTABLES -A OUTPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT + +# Allow some parts of the RELATED ICMP traffic, block the rest. +$IPTABLES -A INPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT +$IPTABLES -A OUTPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT + +# Allow incoming ICMP echo requests (ping), but only rate-limited. +$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT + +# Allow outgoing ICMP echo requests (ping), but only rate-limited. +$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT + +# Drop any other ICMP traffic. +$IPTABLES -A INPUT -p icmp -j DROPLOG +$IPTABLES -A OUTPUT -p icmp -j DROPLOG +$IPTABLES -A FORWARD -p icmp -j DROPLOG + +# Selectively allow certain special types of traffic. +#------------------------------------------------------------------------------ + +# Allow loopback interface to do anything. +$IPTABLES -A INPUT -i lo -j ACCEPT +$IPTABLES -A OUTPUT -o lo -j ACCEPT + +# Allow incoming connections related to existing allowed connections. +$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + +# Allow outgoing connections EXCEPT invalid +$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT + +# Miscellaneous. +#------------------------------------------------------------------------------ + +# We don't care about Milkosoft, Drop SMB/CIFS/etc.. +# ^ person before me; my label = psychogreedyevilsoft +$IPTABLES -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP +$IPTABLES -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP + +# Explicitly drop invalid incoming traffic +$IPTABLES -A INPUT -m state --state INVALID -j DROP + +# Drop invalid outgoing traffic, too. +$IPTABLES -A OUTPUT -m state --state INVALID -j DROP + +# If we would use NAT, INVALID packets would pass - BLOCK them anyways +$IPTABLES -A FORWARD -m state --state INVALID -j DROP + +# PORT Scanners (stealth also) +$IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP +$IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP + +# TODO: Some more anti-spoofing rules? For example: +$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP +$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP +$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROPLOG +$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROPLOG + +$IPTABLES -N SYN_FLOOD +$IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD +$IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN + +$IPTABLES -A SYN_FLOOD -j DROP + +$IPTABLES -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop sync: " --log-level 7 +$IPTABLES -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP + +$IPTABLES -A INPUT -f -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop frag: " +$IPTABLES -A INPUT -f -j DROP + + +# TODO: ICQ, MSN, GTalk, Skype, Yahoo, etc... + +# Selectively allow certain inbound connections, block the rest. +#------------------------------------------------------------------------------ + +# Allow incoming SSH requests. +$IPTABLES -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT + +# Explicitly log and reject everything else. +#------------------------------------------------------------------------------ +# Use REJECT instead of REJECTLOG if you don't need/want logging. +$IPTABLES -A INPUT -j REJECTLOG +$IPTABLES -A OUTPUT -j REJECTLOG +$IPTABLES -A FORWARD -j REJECTLOG + +# Counter hits + +for i in $NIC_NAME +do + iptables -I INPUT -p tcp -m multiport --dports 22 -i $i -m state --state NEW -m recent --set + iptables -I INPUT -p tcp -m multiport --dports 22 -i $i -m state --state NEW -m recent --update --seconds 50 --hitcount 3 -j DROP +done + +#------------------------------------------------------------------------------ +# Testing the firewall. +#------------------------------------------------------------------------------ + +# You should check/test that the firewall really works, using +# iptables -vnL, nmap, ping, telnet, ... + +# Exit gracefully. +#------------------------------------------------------------------------------ + + exit 0 diff --git a/core/conf/iptables/rules.v4 b/core/conf/iptables/rules.v4 index 419962f..5a2ffe8 100644 --- a/core/conf/iptables/rules.v4 +++ b/core/conf/iptables/rules.v4 @@ -1,158 +1,105 @@ -# Generated by iptables-save v1.6.0 on Sat Oct 15 17:20:41 2016 +# Generated by iptables-save v1.6.1 on Tue Feb 21 13:55:04 2017 *security -:INPUT ACCEPT [6:2056] +:INPUT ACCEPT [3624:2121853] :FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [6:2056] +:OUTPUT ACCEPT [3590:999020] COMMIT -# Completed on Sat Oct 15 17:20:41 2016 -# Generated by iptables-save v1.6.0 on Sat Oct 15 17:20:41 2016 +# Completed on Tue Feb 21 13:55:04 2017 +# Generated by iptables-save v1.6.1 on Tue Feb 21 13:55:04 2017 *raw -:PREROUTING ACCEPT [7:2092] -:OUTPUT ACCEPT [6:2056] +:PREROUTING ACCEPT [5432:2268406] +:OUTPUT ACCEPT [3623:1011362] COMMIT -# Completed on Sat Oct 15 17:20:41 2016 -# Generated by iptables-save v1.6.0 on Sat Oct 15 17:20:41 2016 +# Completed on Tue Feb 21 13:55:04 2017 +# Generated by iptables-save v1.6.1 on Tue Feb 21 13:55:04 2017 +*nat +:PREROUTING ACCEPT [1808:146553] +:INPUT ACCEPT [0:0] +:OUTPUT ACCEPT [322:28410] +:POSTROUTING ACCEPT [289:16068] +COMMIT +# Completed on Tue Feb 21 13:55:04 2017 +# Generated by iptables-save v1.6.1 on Tue Feb 21 13:55:04 2017 *mangle -:PREROUTING ACCEPT [7:2092] -:INPUT ACCEPT [6:2056] +:PREROUTING ACCEPT [0:0] +:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [6:2056] -:POSTROUTING ACCEPT [6:2056] +:OUTPUT ACCEPT [0:0] +:POSTROUTING ACCEPT [0:0] COMMIT -# Completed on Sat Oct 15 17:20:41 2016 -# Generated by iptables-save v1.6.0 on Sat Oct 15 17:20:41 2016 +# Completed on Tue Feb 21 13:55:04 2017 +# Generated by iptables-save v1.6.1 on Tue Feb 21 13:55:04 2017 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] -:OUTPUT DROP [0:0] +:OUTPUT ACCEPT [0:0] +:ACCEPTLOG - [0:0] +:DROPLOG - [0:0] +:REJECTLOG - [0:0] +:RELATED_ICMP - [0:0] +:SYN_FLOOD - [0:0] +-A INPUT -i wlp7s0 -p tcp -m multiport --dports 22 -m state --state NEW -m recent --update --seconds 50 --hitcount 3 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP +-A INPUT -i wlp7s0 -p tcp -m multiport --dports 22 -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource +-A INPUT -i enp8s0 -p tcp -m multiport --dports 22 -m state --state NEW -m recent --update --seconds 50 --hitcount 3 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP +-A INPUT -i enp8s0 -p tcp -m multiport --dports 22 -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource +-A INPUT -p icmp -m limit --limit 1/sec --limit-burst 2 -j ACCEPT +-A INPUT -p icmp -m limit --limit 1/sec --limit-burst 2 -j LOG --log-prefix "PING-DROP:" +-A INPUT -p icmp -j DROP +-A INPUT -p icmp -f -j DROPLOG +-A INPUT -p icmp -m state --state ESTABLISHED -m limit --limit 3/sec --limit-burst 8 -j ACCEPT +-A INPUT -p icmp -m state --state RELATED -m limit --limit 3/sec --limit-burst 8 -j RELATED_ICMP +-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 3/sec --limit-burst 8 -j ACCEPT +-A INPUT -p icmp -j DROPLOG -A INPUT -i lo -j ACCEPT --A INPUT -i br0 -j ACCEPT +-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP +-A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP +-A INPUT -m state --state INVALID -j DROP +-A INPUT -p tcp -m state --state NEW -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP +-A INPUT -p tcp -m state --state NEW -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP +-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROPLOG +-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j SYN_FLOOD -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop sync: " --log-level 7 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -f -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop frag: " -A INPUT -f -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop null: " --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP --A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop syn rst syn rs" --A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop xmas: " --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "iptables: drop fin scan: " --A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP --A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP -################################################################################# -# INPUT -# Established connections and passive -# - -# Allow established from dns server -#-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# INPUT accept passive --A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT --A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state RELATED -j ACCEPT - - -# Allow irc --A INPUT -p tcp -m tcp --sport 6667 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow xmmp --A INPUT -p tcp -m tcp --sport 5222 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT -# Allow established from https server --A INPUT -p tcp -m tcp --sport 443 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -p udp -m udp --sport 443 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT - -# Allow established from http server --A INPUT -p tcp -m tcp --sport 80 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from rsync server --A INPUT -p tcp -m tcp --sport 873 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from pop3s server --A INPUT -p tcp -m tcp --sport 995 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from smtps server --A INPUT -p tcp -m tcp --sport 465 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from ntp server --A INPUT -p udp -m udp --sport 123 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from whois server --A INPUT -p tcp -m tcp --sport 43 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -# Allow established from ftp server --A INPUT -p tcp -m tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT --A INPUT -p tcp -m tcp --sport 21 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT --A INPUT -p tcp -m tcp --sport 22 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -################################################################################## -# INPUT -# New and established connections to local servers -# - -# INPUT accept from wlp7s0 to dns server -#-A INPUT -p udp -m udp --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT - -# INPUT accept from wlp7s0 to https server --A INPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -# INPUT accept from wlp7s0 to ssh server --A INPUT -p tcp -m tcp --sport 1024:65535 --dport 2222 -m state --state ESTABLISHED -j ACCEPT --A INPUT -p tcp -m tcp --sport 1024:65535 --dport 2222 -m state --state NEW -m limit --limit 6/min --limit-burst 3 -j ACCEPT - - --A INPUT -j LOG --log-prefix "iptables: INPUT: " --log-level 7 --A FORWARD -j LOG --log-prefix "iptables: FORWARD: " --log-level 7 - -################################################################################## -# Output -# Connections to remote servers -# +-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT +-A INPUT -j REJECTLOG +-A FORWARD -p icmp -f -j DROPLOG +-A FORWARD -p icmp -j DROPLOG +-A FORWARD -m state --state INVALID -j DROP +-A FORWARD -j REJECTLOG +-A OUTPUT -p icmp -j ACCEPT +-A OUTPUT -p icmp -f -j DROPLOG +-A OUTPUT -p icmp -m state --state ESTABLISHED -m limit --limit 3/sec --limit-burst 8 -j ACCEPT +-A OUTPUT -p icmp -m state --state RELATED -m limit --limit 3/sec --limit-burst 8 -j RELATED_ICMP +-A OUTPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 3/sec --limit-burst 8 -j ACCEPT +-A OUTPUT -p icmp -j DROPLOG -A OUTPUT -o lo -j ACCEPT --A OUTPUT -o br0 -j ACCEPT - -# Allow to ssh clients --A OUTPUT -p tcp -m tcp --sport 2222 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT - -# Allow to dns -#-A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow from dns server -#-A OUTPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT - -# Allow irc --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow xmmp --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 5222 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT - - -# Allow to rsync server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to pop3s server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to smtps server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 465 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to ntp server --A OUTPUT -p udp -m udp --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to ftp server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to https server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -p udp -m udp --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -# Allow to http server --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT - -################################################################################## -# Output -# Connections from local servers -# - - --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state RELATED -j ACCEPT --A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT - - --A OUTPUT -j LOG --log-prefix "iptables: OUTPUT: " --log-level 7 -COMMIT -# Completed on Sat Oct 15 17:20:41 2016 -# Generated by iptables-save v1.6.0 on Sat Oct 15 17:20:41 2016 -*nat -:PREROUTING ACCEPT [1:36] -:INPUT ACCEPT [0:0] -:OUTPUT ACCEPT [0:0] -:POSTROUTING ACCEPT [0:0] +-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT +-A OUTPUT -m state --state INVALID -j DROP +-A OUTPUT -j REJECTLOG +-A ACCEPTLOG -m limit --limit 3/sec --limit-burst 8 -j LOG --log-prefix "ACCEPT " --log-level 7 --log-tcp-sequence --log-tcp-options --log-ip-options +-A ACCEPTLOG -j ACCEPT +-A DROPLOG -m limit --limit 3/sec --limit-burst 8 -j LOG --log-prefix "DROP " --log-level 7 --log-tcp-sequence --log-tcp-options --log-ip-options +-A DROPLOG -j DROP +-A REJECTLOG -m limit --limit 3/sec --limit-burst 8 -j LOG --log-prefix "REJECT " --log-level 7 --log-tcp-sequence --log-tcp-options --log-ip-options +-A REJECTLOG -p tcp -j REJECT --reject-with tcp-reset +-A REJECTLOG -j REJECT --reject-with icmp-port-unreachable +-A RELATED_ICMP -p icmp -m icmp --icmp-type 3 -j ACCEPT +-A RELATED_ICMP -p icmp -m icmp --icmp-type 11 -j ACCEPT +-A RELATED_ICMP -p icmp -m icmp --icmp-type 12 -j ACCEPT +-A RELATED_ICMP -j DROPLOG +-A SYN_FLOOD -m limit --limit 2/sec --limit-burst 6 -j RETURN +-A SYN_FLOOD -j DROP COMMIT -# Completed on Sat Oct 15 17:20:41 2016 +# Completed on Tue Feb 21 13:55:04 2017 diff --git a/core/network.html b/core/network.html index ebea495..bcf52f5 100644 --- a/core/network.html +++ b/core/network.html @@ -118,7 +118,9 @@ <a href="https://wiki.archlinux.org/index.php/Iptables">arch wiki</a>. You can use <a href="conf/iptables/rules.v4">/etc/iptables/rules.v4</a> - as template, replace interface by the one facing the router/gateway. + or + <a href="conf/iptables/iptables-lan.sh">/etc/iptables/iptables-lan.sh</a> + as a template, replace interfaces by correct ones. This configuration file is used at boot time by iptables-restore command, if you use a script or change the rules of running system you can use iptables-save command to save configuration to a file.</p> |