iptables
iptables starten en stoppen

Je kan iptables starten, stoppen of herstarten met de volgende commando's:

# service iptables start
# service iptables stop
# service iptables restart

iptables status controleren
# 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

iptables wijzigingen

Exporteren van de actieve regels:

iptables-save > firewall-config

Wijzigen van de regels:

nano firewall-config

voorbeelden

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 DROP

# PING
-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

iptables wijzigingen opslaan

Overschijven van de actieve regels:

iptables-restore < firewall-config
service iptables save

File Transfer Protocol en Plesk VPS

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