Je kan iptables starten, stoppen of herstarten met de volgende commando's:
# service iptables start # service iptables stop # service iptables restart
# service iptables status
iptables starten tijdens boot process
Met chkconfig wordt de iptables service gestart tijdens het booten van de machine:
# chkconfig iptables on
Voor een overzicht van services:
# chkconfig --list
Voor een overzicht van actieve firewall regels:
# iptables -L -v
Exporteren van de actieve regels:
iptables-save > firewall-config
Wijzigen van de regels:
nano firewall-config
In alle voorbeelden dient x.x.x.x te worden vervangen door het gewenste IP-adres.
De standaard is interface eth0 echter, op mijn VPS omgeving is dit echter venet0. Zie ifconfig.
# DEFAULT POLICY (Deze staat standaard op ACCEPT, letop: dit weigert alle toegang, uitzonderingen moeten worden toegevoegd!) -P INPUT DROP -P FORWARD DROP -P OUTPUT DROPPING
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
PING (uitgaand)
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
Toegang weigeren van één bepaald IP-adres:
-A INPUT -s x.x.x.x -j DROP
Toegang weigeren van IP-bereik:
-A INPUT -m iprange --src-range x.x.x.x-x.x.x.x -j DROP
Toegang weigeren van een IP-adres uit een bepaald subnet:
-A INPUT -s x.x.x.x/24 -j DROP
SSH
-A INPUT -i eth0 -p tcp -s x.x.x.x --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
SSH (uitgaand)
-A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
SSH (uitgaand)
-A OUTPUT -o eth0 -p tcp -d x.x.x.x/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
FTP
-A INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
FTP (Active)
-A INPUT -i eth0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -o eth0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
FTP (Passive)
-A INPUT -i eth0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
HTTP
-A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
HTTP (uitgaand)
-A OUTPUT -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
HTTPS
-A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
HTTPS (uitgaand)
-A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Remote MySQL connectie
-A INPUT -i eth0 -p tcp -s x.x.x.x --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
SMTP
-A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
IMAP en IMAP2
-A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
IMAPS
-A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
POP3
-A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
POP3S
-A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
Overschijven van de actieve regels:
iptables-restore < firewall-config
service iptables save
Op mijn VPS omgeving is de module ip_conntrack_ftp niet geladen in de kernel, daarom kan ik deze niet toevoegen in /etc/sysconfig/iptables-config:
IPTABLES_MODULES="ip_conntrack_ftp"
Download: iptables.sh
Meer informatie: HowTos/Network/IPTables - CentOS Wiki | 42.9. IPTables