Este documento describe reglas para iptables configurables para un servidor con las siguientes políticas y condiciones:
- La interfaz de red interna es eth0
- La interfaz de red externa es eth1
- Se puede hacer ping desde y hacia la máquina
- No hay restricción en la LAN
- Se seleccionan algunos puertos para recibir conexiones TCP de WAN
- Se puede conectar desde la máquina a WAN
Script
Llame al siguiente script securefw.sh, ubíquelo en /usr/local/bin
#!/bin/sh
# Internet Address
WAN_IP="XXX.XXX.XXX.XXX"
WAN_IT="eth1"
# Internal Information
LAN_IP="YYY.YYY.YYY.YYY"
LAN_IT="eth0"
# Accepted Incoming ports
INC_PORTS="22,80,443,14000,8080"
# Flushing all rules
iptables -F
iptables -X
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Allow unlimited traffic on loopback and internal interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i $LAN_IT -j ACCEPT
iptables -A OUTPUT -o $LAN_IT -j ACCEPT
# Allow selected incoming ports
PORTS=$(echo $INC_PORTS | tr "," "\n")
for PORT in $PORTS
do
iptables -A INPUT -p tcp -s 0/0 -d $WAN_IP --dport $PORT -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $WAN_IP -d 0/0 --sport $PORT -m state --state ESTABLISHED -j ACCEPT
done
# make sure we can go out from this SERVER
iptables -A INPUT -i $WAN_IT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $WAN_IT -j ACCEPT
# Allow ping
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $WAN_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -s $WAN_IP -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -s $WAN_IP -d 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d $WAN_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
Deploy
- Asegúrese de que no hay un corriendo como /etc/init.d/iptables para que no sobrelape las reglas
En /etc/rc.local al final del archivo añada la línea sh /usr/local/bin/securefw.sh para que se ejcute al arranque
Pruebas
A continuación encuentra un script para hacer limpieza de las reglas de firewall, nómbrelo como openfw.sh y ubíquelo en /usr/local/bin, para darle uso y probar reglas de securefw.sh aplique el siguiente comando:
/usr/local/bin/openfw.sh & /usr/local/bin/securefw.sh
#!/bin/sh #open firewall sleep 1m iptables -F iptables -t nat -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

