Ubuntu/iptables
- iptables
- allows you to configure network ports and more
Note: iptables rules are processes sequentially with the proceeding rules taking precedence over following rules.
lookup current active rules
iptables -L -n -v
remove a rule from IP Tables. Make sure to include the comment if a comment exists.
iptables -D INPUT 1 or iptables -D INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT or iptables -D INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT -m comment --comment "limit ssh access"
specify policy default
-P INPUT DROP
allow anything from itself (loopback)
-A INPUT -i lo -j ACCEPT
allow connection from specific address, inbound, using only TCP on a specific port
-A INPUT -s ip.address -p tcp --dport 22 -j ACCEPT
allow a range of ports
-A INPUT -s ip.address -p tcp –dport 30000:20000 -j ACCEPT
add a comment to the iptables rule
-m comment --comment "limit ssh access"
allow related and established
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
prevent packets from forwarding (like a router)
iptables -P FORWARD DROP
delete chain from iptables
iptables -X chain.name
reject everything without an ICMP specific message, just a generic "port unreachable"
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
save current IP Tables config
sudo sh -c "iptables-save > /etc/iptables.rules"
restore IP Tables config (also add this line to /etc/rc.local for it to auto run during boot)
iptables-restore < /etc/iptables.rules
Contents |
CVE-2015-7547
attempt to mitigate glibc vuln.
~$ sudo iptables -A INPUT -p udp -m length --length 512:0xffff --dport 53 -j DROP -m comment --comment "mitigate CVE-2015-7547"
Init.d startup script
Below is a method designed in hopes of a reliable auto-load of iptable rules on bootup. adding entry to rc.local entry was not 100% reliable.
Create startup script under /etc/init.d
~$ sudo vi /etc/init.d/iptables.rules
Script
#!/bin/sh
### BEGIN INIT INFO
# Provides: iptables.rules
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start iptables.rules at boot time
# Description: Load iptable rules at startup, provide flushing (stop) or flush and reload (restart) of rules.
### END INIT INFO
#startup function
start_iptables_rules() {
printf "\nRestoring iptable rules ..."
iptables-restore < /etc/iptables.rules > /dev/null 2>&1 &
printf "\n... restored.\n"
}
#stopping function that flushes iptables
stop_iptables_rules () {
printf "\nFlushing iptable rules ..."
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
printf "\n... flushed.\n"
}
#restarting function that stops and starts iptables.rules
restart_iptables_rules () {
printf "\nFlushing and reloading iptable rules ..."
stop_iptables_rules
start_iptables_rules
}
#list iptable rules currently configured
status_iptables_rules () {
iptables -L -n -v
}
#save current iptable rules to iptables.rules file
save_iptables_rules () {
printf "\nSaving current iptable rules ..."
iptables-save > /etc/iptables.rules
printf "\n... saved.\n"
}
case "$1" in
start)
start_iptables_rules
;;
stop)
stop_iptables_rules
;;
restart)
restart_iptables_rules
;;
status)
status_iptables_rules
;;
save)
save_iptables_rules
;;
*)
printf "Usage: /etc/init.d/iptables.rules {start|stop|restart|status|save}"
exit 1
;;
esac
exit 0
Permissions and Boot
Add permissions to execute
~$ chmod 755 /etc/init.d/iptables.rules
Enable dependency based boot sequence
~$ update-rc.d iptables.rules defaults