J’ai fait comme toi avec mon iptables pour mon serveur. Je suis sur qu’il ne doit pas être parfait, mais ça te donnera une petite comparaison avec le tien :
[code]#!/bin/sh
BEGIN INIT INFO
Provides: PareFeux
Required-Start: $local_fs $network
Required-Stop: $local_fs $remote_fs
Default-Start: S
Default-Stop: 0 1 6
Short-Description: Wireless & LAN Access Point Controller
Description: Script met en place un firewall avec partage la connexion internet
END INIT INFO
Script de démarrage qui lance l’interface réseau internet,
met en place un firewall et un partage de connexion
#Déclaration des interfaces :
interface_WAN=eth0
interface_LAN=eth1
interface_WLAN=wlan0
WAN_Adress=192.168.168.250
start() {
init du la périphérique internet (ici derriere une freebox)
/sbin/ifup $interface_WAN
echo “activation de l’interface WAN”
#vidage des chaines
iptables -F
echo “vidage des chaines”
#destruction des chaines personnelles
iptables -X
echo “destruction des chaines personnelles”
#stratégies par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
echo “mise en place de la stratégie par défault (INPUT et FORWARD = DROP et OUTPUT = DROP)”
#init des tables NAT et MANGLE
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
echo “initialisation des tables NAT et MANGLE”
Acceptation de toutes les connexions en local (un process avec l’autre)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo “Acceptation de toutes les connexions en local”
#########################################################################################################
########################################## INPUT ##################################################
#########################################################################################################
=== anti scan ===
iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
echo “mise en route de l’anti-scan”
#pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/ip_filter ] ;
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo > 1 $filtre
done
fi
echo “[mise en route de l’anti-spoofing]”
#pas de synflood tcp
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ;
then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
echo “[mise en route de l’anti-synflood]”
=== Netoyage des Paquets particuliers ===
Make sure NEW incoming tcp connections are SYN packets
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
Packets with incoming fragments
iptables -A INPUT -f -j DROP
echo “Netoyage des Paquets particuliers”
iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
#iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog # Ceci active la resistance au Flood SYN
#Blocage de l’icmp sur le WAN du serveur
iptables -A INPUT -i $interface_WAN -p icmp -m conntrack --ctstate NEW,UNTRACKED,INVALID -j DROP
echo “blocage du ping (ICMP) sur l’interface WAN”
#drop des broadcast
iptables -A INPUT -i $interface_WAN -m pkttype --pkt-type broadcast -j DROP
Connection serveur SSH
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix ‘[SSH_INPUT]:’
iptables -A INPUT -p tcp -i $interface_WAN --dport 22 -j ACCEPT
echo “connection SSH sur le serveur ok & log”
On bloque toute tentative de connection non solicitée
iptables -A INPUT -i $interface_WAN -s 0.0.0.0/0 -d $WAN_Adress -m conntrack --ctstate NEW,UNTRACKED,INVALID -j DROP
On fait confiance au réseau local et wifi et VPN
iptables -A INPUT -i $interface_LAN -j ACCEPT
iptables -A OUTPUT -o $interface_LAN -j ACCEPT
iptables -A INPUT -i $interface_WLAN -j ACCEPT
iptables -A OUTPUT -o $interface_WLAN -j ACCEPT
#########################################################################################################
##############################################################################################################
###############################################FORWARD########################################################
##############################################################################################################
#redirection requetes vers dansguardian ( port 8080 )
iptables -t nat -A POSTROUTING -o $interface_WAN -j MASQUERADE
iptables -t nat -A PREROUTING -i $interface_LAN -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i $interface_WLAN -p tcp --dport 80 -j REDIRECT --to-port 8080
#permet de rediriger les requetes vers 3128 (proxy squid) inutile si redirection danguardian faite!
#iptables -t nat -A POSTROUTING -o $interface_WAN -j MASQUERADE
#iptables -t nat -A PREROUTING -i $interface_LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
#############################################################################################################
#########################################################################################################
################################################## OUTPUT #########################################
#########################################################################################################
=====================================================
=== TENTATIVE pour SORTIE (OUTPUT)Pour le SERVEUR ===
=====================================================
==== On accepte la sortie de certains protocoles ====
iptables -A OUTPUT -o $interface_WAN -p UDP --dport 123 -j ACCEPT # Port 123 (Time ntp udp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 123 -j ACCEPT # Port 123 (Time ntp tcp)
iptables -A OUTPUT -o $interface_WAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 587 -j ACCEPT # Port 587 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 5055 -j ACCEPT # Port #5055 (Ssh)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 22 -j ACCEPT # Port 22 (SSH)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn messenger)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 5900 -j ACCEPT #port bureau distant
=== OUTPUT générique ? ===
On autorise les connexions deja etablies ou relatives à une autre connexion a sortir
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
echo “Aceptation de certain protocole en sortie pour le serveur”
#Autoriser le ping sur des IP externes
iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
#########################################################################################################
#########################################################################################################
################################### Partage de la connexion internet ##############################
#########################################################################################################
#création d’une nouvelle règle pour partage internet
iptables -N MAregle
############# SORTIE LAN ###############
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p UDP --dport 123 -j ACCEPT # Time ntp udp
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 123 -j ACCEPT # Time ntp tcp
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
#iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
#iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 587 -j ACCEPT # Port 587 (Smtp)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 5055 -j ACCEPT # Port #5055 (Ssh)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 22 -j ACCEPT # Port 22 (SSH)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn msg)
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
#iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 11443 -j ACCEPT # connection routeur
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 554 -j ACCEPT # port vlc
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 9200 -j ACCEPT #port play-the.net
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p TCP --dport 5900 -j ACCEPT #port bureau distant
iptables -A MAregle -i $interface_LAN -o $interface_WAN -p UDP --dport 1194 -j ACCEPT # OpenVPN
###############################################
################ SORTIE WLAN ##################
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p UDP --dport 123 -j ACCEPT # Time ntp udp
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 123 -j ACCEPT # Time ntp tcp
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
#iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
#iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 587 -j ACCEPT # Port 587 (Smtp)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport ftp-data -j ACCEPT # Port 20(Ftp Data)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport ftp -j ACCEPT # Port 21(Ftp)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 5055 -j ACCEPT # Port #5055 (Ssh)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 22 -j ACCEPT # Port 22 (SSH)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn msg)
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
#iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 11443 -j ACCEPT # connection routeur
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 554 -j ACCEPT #port vlc
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 9200 -j ACCEPT #port play-the.net
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p TCP --dport 5900 -j ACCEPT #port bureau distant
iptables -A MAregle -i $interface_WLAN -o $interface_WAN -p UDP --dport 1194 -j ACCEPT # OpenVPN
######################################
iptables -A MAregle -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A MAregle -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A MAregle -m conntrack --ctstate UNTRACKED,INVALID -j DROP
#application de la règle au partage de connexion
iptables -A INPUT -j MAregle
iptables -A FORWARD -j MAregle
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $interface_WAN -j MASQUERADE
echo “Mise en place du partage de connextion internet”
########################################################################################################
#########################################################################################################
################################################## LOG ##################################################
#########################################################################################################
#Log tous ce qui qui n’est pas accepter par une règles précédente
prés requit : sudo apt-get install sysklogd
echo ‘kern.warning /var/log/iptables.log’ > /etc/syslog.conf
iptables -A OUTPUT -j LOG --log-level 4 --log-prefix '[OUTPUT DROP]:'
iptables -A INPUT -j LOG --log-level 4 --log-prefix '[INPUT DROP]:'
iptables -A FORWARD -j LOG --log-level 4 --log-prefix '[FORWARD DROP]:'
echo "############ <START> ##############"
iptables -L -n -v # commanter pour desactiver l'affichage des règles en cours
echo "############ </START> ##############"
########################################################################################################
}
stop() {
echo 0 >/proc/sys/net/ipv4/ip_forward
ifdown $interface_WAN
}
case “$1” in
start)
start
echo “firewall IPv4 démarré”
;;
stop)
stop
echo “firewall IPv4 stopé”
;;
restart)
stop && start
echo “firewall IPv4 redémarré”
;;
status)
status
/sbin/iptables -L -n -v
/sbin/iptables -t nat -L -n -v
RETVAL=?
;;
*)
echo "Usage $0 {start|stop|restart|status}"
exit 1
esac
exit 0[/code]
A savoir que j’ai 2 cartes réseaux et 1 wifi ( en point d’accès ).
En résumé, ma petite usine à gaz à moi 