OldGentooWiki:Utilisation de Iptables pour un serveur Web qu'on a loué sur internet
De Gentoo-Quebec.
Indes des trucs et astuces avancés
De nos jours, il est de plus abordable de louer un serveur sur le web pour héberger directement nos contenu web.
Voici le script qui va servir d'exemple tout au long de ce wiki.
Enfin, nous allons gérer tous les ports autant en entrée qu'en sortie manuellement.
Cette configuration laisse passer les pages webs(80), serveur ftp(20,21,1024),ssh(6188),rsync(873) ainsi que les requêtes DNS(53) en sortie.
Sommaire |
Installation de Iptables
Configuration du noyau pour Iptables
Network Support
--> Networking options
[*] Network packet filtering framework (Netfilter) --->
[*] Advanced netfilter configuration (NEW)
Core Netfilter Configuration --->
<M> Netfilter LOG over NFNETLINK interface
<M> Netfilter connection tracking support
<M> Connection mark tracking support
[*] Connection tracking events
<M> UDP-Lite protocol connection tracking support
<M> FTP protocol support
<M> IRC protocol support
<M> Connection tracking netlink interface
<M> Netfilter Xtables support (required for ip_tables)
<M> "CONNMARK" target support
<M> "MARK" target support
<M> "connmark" connection mark match support
<M> "conntrack" connection tracking match support
<M> "iprange" address range match support
<M> "length" match support
<M> "limit" match support
<M> "mark" match support
<M> "multiport" Multiple port match support
<M> "pkttype" packet type match support
<M> "recent" match support
<M> "state" match support
<M> "string" match support
<M> "tcpmss" match support
IP: Netfilter Configuration --->
<M> IPv4 connection tracking support (required for NAT)
[*] proc/sysctl compatibility with old connection tracking (NEW)
<M> IP tables support (required for filtering/masq/NAT)
<M> "addrtype" address type match support
<M> "ah" match support
<M> "ecn" match support
<M> "ttl" match support
<M> Packet filtering
<M> REJECT target support
<M> LOG target support
<M> ULOG target support
<M> Full NAT
<M> MASQUERADE target support
<M> NETMAP target support
<M> REDIRECT target support
<M> Basic SNMP-ALG support
<M> Packet mangling
<M> CLUSTERIP target support (EXPERIMENTAL)
<M> ECN target support
<M> "TTL" target support
<M> raw table support (required for NOTRACK/TRACE)
<M> ARP tables support
<M> ARP packet filtering
<M> ARP payload mangling
Configuration de Iptables
#!/bin/bash
IPT=/sbin/iptables
IPTS="/sbin/iptables-save"
IPTR="/sbin/iptables-restore"
WAN_IFACE="eth0"
lOOP_IFACE="lo"
LOOP_IP="127.0.0.1"
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT -A INPUT -p ALL -i $lOOP_IFACE -j ACCEPT
$IPT -A INPUT -i $WAN_IFACE -m state --state INVALID -j DROP
$IPT -A INPUT -i $WAN_IFACE -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $WAN_IFACE -p tcp -m state --state NEW -m multiport --dports 20,21,80,873,1024,6188 -j ACCEPT
$IPT -A INPUT -i $WAN_IFACE -p udp --destination-port 53 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p ALL -s $LOOP_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $WAN_IFACE -j ACCEPT
$IPT -A OUTPUT -p tcp -o $WAN_IFACE -m state --state NEW -m multiport --dports 20,21,80,873,1024,6188 -j ACCEPT
$IPT -A OUTPUT -p udp -o $WAN_IFACE -m state --state NEW -m multiport --dports 53 -j ACCEPT
Cheminement par défaut des packets
À l’arrivée d’un paquet (après décision de routage) : 1. Si le paquet est destiné à l’hôte local Alors 2. il traverse la chaîne INPUT. 3. Si il n’est pas rejeté Alors 4. il est transmis au processus impliqué. 5. Sinon 6. Si le paquet est destiné à un hôte d’un autre réseau Alors 7. il traverse la chaîne FORWARD 8. Si il n’est pas rejeté Alors 9. il poursuit alors sa route 10. Si le packet a traversé la chaîne FORWARD lors d'un échange LAN --> WAN, celui-ci va passer par la chaîne OUTPUT pour sortir définitivement du firewall et s'en aller vers l'internet.
Enfin, la clause FORWARD est utilisée seulement par le firewall et si celui-ci gère des adresses IP sous lui.
De plus, la clause FORWARD est utilisée pour faire transiger le trafic entre le LAN et le WAN.
Pour les autres périphériques, c'est la clause OUTPUT qui est utilisée.
Mise en place du Firewall
Vous devez enregistrer ce fichier dans le répertoire /root
Par la suite, vous devez lancer les commandes suivantes pour activer le firewall :
# cd /root # chmod +x iptables.sh # ./iptables.sh # iptables -L -v # iptables-save # /etc/init.d/iptables save # rc-update add iptables default # /etc/init.d/iptables start
