#!/bin/sh
Start/stop/restart/status firewall:
red="\033[01;31m"
whi="\033[0m"
firewall_start() {
echo “[Démarrage du firewall]”
############################### REGLES PAR DEFAUT ###########################
echo "[Initialisation de la table filter]"
iptables -F
iptables -X
echo “[Politique par défaut de la table filter]”
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
############################### LOCALNET ###########################
iptables -N localnet
iptables -A localnet -m state --state NEW -i ! br0 -j ACCEPT
iptables -A localnet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j localnet
iptables -A FORWARD -j localnet
############################### LES TABLES NAT ET MANGLE #############################
echo “[Initialisation 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
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
#################################### LE MASQUERADING ########################################
echo "[Mise en place du masquerading]"
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
################################# ACTIVATION DE LA PASSERELLE ##################
echo "[Activation de la passerelle]"
echo 1 > /proc/sys/net/ipv4/ip_forward
################################# PAS DE SPOOFING ############################
echo "[Pas de spoofing]"
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
########################## PAS DE SYNFLOOD ####################
echo "[Pas de synflood]"
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
################################## PING ###############################
commenter les 6 lignes suivantes, pour autoriser les pings sur la passerelle
#echo “[Pas ping]”
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#fi
############################ Fonctionnalités serveurs #####################################
echo "[autorisation pour ssh(22) …]"
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
echo "[autorisation du serveur smtp(25) …]"
iptables -A INPUT -p tcp --dport smtp -j ACCEPT
echo "[autorisation du serveur http(80) …]"
iptables -A INPUT -p tcp --dport www -j ACCEPT
#echo “[autorisation du serveur https(443) …]”
#iptables -A INPUT -p tcp --dport https -j ACCEPT
#echo “[autorisation du serveur DNS(53) …]”
#iptables -A INPUT -p udp --dport domain -j ACCEPT
#iptables -A INPUT -p tcp --dport domain -j ACCEPT
#echo “[autorisation du serveur irc(6667) …]”
#iptables -A INPUT -p tcp --dport ircd -j ACCEPT
#echo “[autorisation du serveur cvs (2401) …]”
#iptables -A INPUT -p tcp --dport cvspserver -j ACCEPT
echo "[autorisation du serveur FTP(21 et 20) …]"
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
iptables -A INPUT -p tcp --dport ftp-data -j ACCEPT
#echo “[autorisation du serveur Mon_truc(10584) …]”
#iptables -A INPUT -p tcp --dport 10584 -j ACCEPT
echo -e $red "-[ firewall activ\uffff ]-"
echo -e “$whi”
}
firewall_stop() {
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
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
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
echo " [firewall descativé! ]"
}
firewall_restart() {
firewall_stop
sleep 2
firewall_start
}
case “$1” in
’start’)
firewall_start
;;
‘stop’)
firewall_stop
;;
‘restart’)
firewall_restart
;;
‘status’)
iptables -L
iptables -t nat -L
iptables -t mangle -L
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
esac