Outils pour utilisateurs

Outils du site


garruk_iptables

Iptables

De l'utilité d'un firewall

Quelques règles iptables régissent les flux de paquets dans le local asso. Le principal intérêt est de faire du NAT vers le serveur VPN.

D'autres règles permettent de refuser certaines connexions sur la passerelle (mais bon elles sont plus là pour le fun que parce qu'elles servent vraiment (personne dans le réseau interne ne va l'attaquer)).

Mais ces règles ouvrent la possibilité d'une gestion plus fine, comme certaines options de bannissement d'ip.

Script d'init

Un script d'init permet le lancement automatique du firewall après un rebooot par exemple :

$ cat /etc/init.d/firewall
#! /bin/sh
stop() {
/etc/firewall/firewall-stop
}
start() {
/etc/firewall/firewall-start
}

case $1 in
"start")
start
;;
"stop")
stop
;;
"restart")
stop
start
;;
esac
$ cat /etc/firewall/firewall-start
#! /bin/sh

####################
# Variables
####################
# Macros
i="iptables -A INPUT"
o="iptables -A OUTPUT"
f="iptables -A FORWARD"
n="iptables -t nat -A POSTROUTING"
a="-j ACCEPT"
m="-j MASQUERADE"
d="-j DROP"

touch /tmp/fw

# Constantes
ip_asso="192.168.42.0/24"
bans=""
inet="tun0"
ilan="eth1"
teeworlds="8303"
ftp_ports="50000:65534"

####################
# Clearing
####################
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

####################
# Regles par defaut
####################
# On autorise tout sauf en entree
#iptables -P INPUT DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

####################
# Chaine INPUT
####################
# Les IP bannies sont juste rejetees
if [ ! -c $bans ];
then $i -s $bans $d
fi

# Connections etablies
$i -m state --state RELATED,ESTABLISHED $a

# Tout autorise sur l'interface de loopback
$i -i lo $a

# ICMP, IGMP autorise
$i -p icmp $a
$i -p igmp $a

# Services usuels
$i -p tcp --dport ssh $a
$i -p tcp --dport ftp $a
$i -p tcp --dport $ftp_ports $a
$i -p tcp --dport domain $a
$i -p udp --dport domain $a

$i -p udp --dport $teeworlds $a

# Rejets
# la ligne du dessous générait trop de logs
# $i -j LOG --log-prefix "Unattended IPv4 packet"
$i -j REJECT

####################
# Chaine OUTPUT
####################
# Le serveur n'est pas amene a se conncter
# mais on interrompt pas les connections
$o -m state --state RELATED,ESTABLISHED $a

####################
# Traduction d'adresses
####################
# Le role de passerelle tient en une ligne...
$n -o $inet $m

# Redirection de ports (exemple)
#iptables -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.12:80

Les commentaires et une connaissance minime de iptables devraient suffire.

$ cat /etc/firewall/firewall-start
#! /bin/sh

####################
# Clearing
####################
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

####################
# Regles par defaut
####################
# On autorise tout
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Ce script d'arrêt se contente de vider les chaînes iptables.

garruk_iptables.txt · Dernière modification: 2017/10/10 11:27 par deldel