voila mon fw en integralite :
#! /bin/sh
echo "Starting Firewall Ruleset..."
# Bon, d'abord, on met tout dans des petites variables, pour
# faciliter les modifs...
exti="eth0" # Interface externe (connectée au net)
loopi="lo" # Interface de loopback
loci="eth1" # Interface Interne (LAN)
#extip="`/sbin/ifconfig eth0|grep inet|awk '{print $2}'|awk -F":" '{print $2}'`" # your IP address
localnet="192.168.1.0/24" # IP locales (classe)
rule="DENY" # ce qu'on fait des paquets qu'on rejete
# normalement (CAD les services fermés)
# Cette règle est appliquée aux polices
# par défaut des règles input.
rulez="REJECT" # ce qu'on fait des paquets MECHANTS
# qu'on vire, CAD tout ce qui est spoof,
# trojans, ...
# On attaque méchant : on flushe, puis on bloque tout
ipchains -F
ipchains -P input $rule
ipchains -P output $rule
ipchains -P forward $rule
echo "[FW] : Flushing last Rules........................................... ok"
# On accepte tout en local... bah oui kwa, la machine locale, elle
# est gentille, nan?
ipchains -A input -i $loopi -j ACCEPT
ipchains -A output -i $loopi -j ACCEPT
# Pareil pour le réseau local... Si on est en DMZ... sinon, on vire
# tout ca, et on fait du cas par cas... mais là, on est sur
# une passerelle
ipchains -A input -i $loci -s $localnet -j ACCEPT
ipchains -A output -i $loci -d $localnet -j ACCEPT
# Comme on est en DMZ et que y'a que des gentils dans cette DMZ,
# on vas accepter de sortir tout... mouais ;( Alors faites gaffe à
# tous les programmes zindoz qui sont méchants et qui tentent de
# dire à tt le mde ce que vous avez dans votre bécane... essayez
# @guard pour empécher ces vilains pas bo de cafarder
# J'ai laissé $rule plus haut pour laisser la possibilité de
# customiser le script
ipchains -A output -j ACCEPT
echo "[FW] : Accepting local connections................................... ok"
# Bon, on vas tout de suite activer des trucs sexy du kernel,
# genre SYN cookies, always_defrag, ...
# Active la protection 'TCP SYN Cookie'
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# always defrag
echo 1 > /proc/sys/net/ipv4/ip_always_defrag
# broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# bad error message Protection
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# IP spoofing protection
# (active la Source Address Verification)
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
# desactive les ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
# desactive Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
# Log Spoofed Packets, Source Routed Packets, Redirect Packets,...
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 0 > $f
done
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr #rajouter par moi
echo 1 > /proc/sys/net/ipv4/ip_masq_udp_dloose #rajouter par moi
echo 1 > /proc/sys/net/ipv4/ip_masq_debug #rajouter par moi
echo "[FW] : Tunnig proc fs................................................ ok"
# On vas optimiser un chtoute ti peut les connection, et pour ca,
# les TOS sont tes amis!
ipchains -A output -i $exti -p TCP -d 0.0.0.0/0 21:23 -t 0x01 0x10
ipchains -A output -i $exti -p TCP -d 0.0.0.0/0 8686 -t 0x01 0x10
ipchains -A output -i $exti -p TCP -d 0.0.0.0/0 20 -t 0x01 0x08
ipchains -A output -i $exti -p TCP -d 0.0.0.0/0 119 -t 0x01 0x02
echo "[FW] : optimizing TOS................................................ ok"
# bloquer tout ce qui est spoofing, genre IP publiques de classes
# A,B,C,D, les broadcasts, les multicasts, les classes E, ...
# Et toutes ces merdes sont logguées!
ipchains -A input -i $exti -s 10.0.0.0/8 -j $rulez -l
ipchains -A input -i $exti -s 172.16.0.0/12 -j $rulez -l
ipchains -A input -i $exti -s 192.168.0.0/16 -j $rulez -l
ipchains -A input -i $exti -s 255.255.255.255 -j $rulez -l
ipchains -A input -i $exti -d 0.0.0.0 -j $rulez -l
ipchains -A input -i $exti -s 224.0.0.0/4 -j $rulez -l
ipchains -A input -i $exti -s 240.0.0.0/5 -j $rulez -l
ipchains -A input -i $exti -s 127.0.0.0/8 -j $rulez -l
ipchains -A input -i $exti -s 169.254.0.0/16 -j $rulez -l
ipchains -A input -i $exti -s 192.0.2.0/24 -j $rulez -l
ipchains -A input -i $exti -s 224.0.0.0/3 -j $rulez -l
echo "[FW] : Antispoof rules............................................... ok"
# Là, important, on vas accepter certaines choses, genre les
# services offertes par la machine vers le net.
# client DNS : ouais, parceque les IP, ca vas 5 minutes, mais...
ipchains -A input -i $exti -p UDP -s 0.0.0.0/0 53 -d 0.0.0.0/0 1024:65535 -j ACCEPT
ipchains -A input -i $exti -p TCP ! -y -s 0.0.0.0/0 53 -d 0.0.0.0/0 1024:65535 -j ACCEPT
# icq, c'est bien ;op
#ipchains -A input -i $exti -p UDP -s 0.0.0.0/0 53 -d 0.0.0.0/0 1024:65535 -j ACCEPT
#ipchains -A input -i $exti -p UDP -s 0.0.0.0/0 4000 -d 0.0.0.0/0 1024:65535 -j ACCEPT
# Serveur HTTPS
# ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 1024:65535 -d 0.0.0.0/0 443 -j ACCEPT
# Serveur Imap
#ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 1024:65535 -d 0.0.0.0/0 143 -j ACCEPT
# Serveur FTP
#ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 1024:65535 -d 0.0.0.0/0 21 -j ACCEPT
# serveur SSH
#ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 513:65535 -d 0.0.0.0/0 23 -j ACCEPT
# serveur AUTH (identd est _votre_ ami )
#ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 1024:65535 -d 0.0.0.0/0 113 -j ACCEPT
# Cà, c'est pour FakeBO
ipchains -A input -i $exti -p TCP -s 0.0.0.0/0 1024:65535 -d 0.0.0.0/0 12345 -j ACCEPT -l
echo "[FW] : Openning services............................................. ok"
# bon...
# Tant qu'on autorise des choses, on vas autoriser les requètes
# DHCP sortante... et les réponses que ca amène
ipchains -A input -i $exti -p udp -s 0.0.0.0/0 67 -d 0.0.0.0/0 68 -j ACCEPT
ipchains -A input -i $exti -p udp -s 0.0.0.0/0 67 -d 0.0.0.0/0 68 -j ACCEPT
ipchains -A input -i $exti -p udp -s 0.0.0.0/0 67 -d 0.0.0.0/0 68 -j ACCEPT
ipchains -A input -i $exti -p udp -s 0.0.0.0/0 67 -d 0.0.0.0/0 68 -j ACCEPT
echo "[FW] : DHCP client................................................... ok"
# Vala... maintenant, on vas bloquer tous les troyans, et les
# trucs pas beaux! PS : on bloque, on logue, et tout et tout!
#Attention, j'en ait mis pas mal, alors c'est long...
#-----------------------------------------------------------------
# on bloque Dmsetup
ipchains -A input -p TCP -d 0.0.0.0/0 58 -j $rulez -l
# FireHotcker...
ipchains -A input -p TCP -d 0.0.0.0/0 5321 -j $rulez -l
# RASmin ...
ipchains -A input -p TCP -d 0.0.0.0/0 531 -j $rulez -l
# Steath Spy Trojan...
ipchains -A input -p TCP -d 0.0.0.0/0 555 -j $rulez -l
# Dark Shadow Trojan...
ipchains -A input -p TCP -d 0.0.0.0/0 911 -j $rulez -l
# Silencer Trojan...
ipchains -A input -p TCP -d 0.0.0.0/0 1001 -j $rulez -l
# NetSpy Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1024 -y -j $rulez -l
# Extreme Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1090 -y -j $rulez -l
# Ultor's Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1234 -y -j $rulez -l
# Whack-a-mole Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 12361:12363 -y -j $rulez -l
# WhackJob Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 12631 -y -j $rulez -l
# FTP99CMP Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1492 -y -j $rulez -l
# Shiva Burka Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1600 -y -j $rulez -l
# Spy Sender
ipchains -A input -p TCP -d 0.0.0.0/0 1807 -y -j $rulez -l
# ShockRave Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1981 -y -j $rulez -l
# BackDoor Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1999 -y -j $rulez -l
# Remote Explorer Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2000 -y -j $rulez -l
# Trojan Cow
ipchains -A input -p TCP -d 0.0.0.0/0 2001 -y -j $rulez -l
# Ripper Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2023 -y -j $rulez -l
# Bugs Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2115 -y -j $rulez -l
# Striker & WincrashTrojan
ipchains -A input -p TCP -d 0.0.0.0/0 2583 -y -j $rulez -l
# Phinneas Phucker Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2801 -y -j $rulez -l
# Rat Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2989 -y -j $rulez -l
# Filenail Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 4567 -y -j $rulez -l
# Sockets de troie v1.
ipchains -A input -p TCP -d 0.0.0.0/0 5000:5001 -y -j $rulez -l
# Blade Runner Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 5400:5402 -y -j $rulez -l
# SERV-Me Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 5555 -y -j $rulez -l
# BO-Facil Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 5556:5557 -y -j $rulez -l
# Robo-Hack
ipchains -A input -p TCP -d 0.0.0.0/0 5569 -y -j $rulez -l
# The 'thing' Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 6400 -y -j $rulez -l
# Indoctrination Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 6939 -y -j $rulez -l
# GateCrasher, Priority Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 6969:6970 -y -j $rulez -l
# Net Monitor
ipchains -A input -p TCP -d 0.0.0.0/0 7300:7309 -y -j $rulez -l
# ICKiller
ipchains -A input -p TCP -d 0.0.0.0/0 7789 -y -j $rulez -l
# Portal of DOOM Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 9872:9875 -y -j $rulez -l
# iNi Killer Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 9989 -y -j $rulez -l
# Acid Shivers Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 10520 -y -j $rulez -l
# COMA Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 10607 -y -j $rulez -l
# Sienna Spy
ipchains -A input -p TCP -d 0.0.0.0/0 11000 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 13000 -y -j $rulez -l
# Progenic Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 11223 -y -j $rulez -l
# Gjammer Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 12076 -y -j $rulez -l
# Keylogger Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 12223 -y -j $rulez -l
# Proziack
ipchains -A input -p TCP -d 0.0.0.0/0 22222 -y -j $rulez -l
# Evil/Ugly FTP Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 23456 -y -j $rulez -l
# Delta Source Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 26274 -y -j $rulez -l
# Sub-7 2.1 Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 27374 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 27573 -y -j $rulez -l
# Back-Orifice 2000 Trojan
# Merde, c'est quoi le port de BO?
# ipchains -A input -p TCP -d 0.0.0.0/0 -y -j $rulez -l
# GirlFriend Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 21554 -y -j $rulez -l
# Wincrash Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2583 -y -j $rulez -l
# BackDoor Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 6713 -y -j $rulez -l
# Netsphere Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 30100:30102 -y -j $rulez -l
# Doly Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 1011:1012 -j $rulez -l
# NetBus Trojan
# Heuu... celui là, je le laisse ouvert parceque j'ai un FakeBO
# qui tournes alors virer le # et #ez la ligne d'après!
ipchains -A input -p TCP -d 0.0.0.0/0 12345:12346 -y -j $rulez -l
#ipchains -A input -p TCP -d 0.0.0.0/0 12345:12346 -y -l
# DeepThoat Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 2140 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 3150 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 41 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 60000 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 6670 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 6771 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 999 -y -j $rulez -l
# putain, il forke celui là
# Hack 'A' Tack Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 31785 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 31789:31791 -y -j $rulez -l
# Master Paradise Trojan
ipchains -A input -p TCP -d 0.0.0.0/0 3129 -y -j $rulez -l
ipchains -A input -p TCP -d 0.0.0.0/0 40421:40426 -y -j $rulez -l
# Ouf... c'est tout pour le moment
# on en rajouteras plus tard si on en trouves!
#-----------------------------------------------------------------
echo "[FW] : Blocking troyans.............................................. ok"
# Bon, on vas restricted des trucs qu'on veut jms que les gents
# s'y connectent depuis le net (netbios, NFS, X, socks, ...)
# Netbios
ipchains -A input -p TCP -i $exti -d 0.0.0.0/0 137:139 -j $rulez -l
ipchains -A input -p UDP -i $exti -d 0.0.0.0/0 137:139 -j $rulez -l
ipchains -A output -p TCP -i $exti -d 0.0.0.0/0 137:139 -j $rulez -l
ipchains -A output -p UDP -i $exti -d 0.0.0.0/0 137:139 -j $rulez -l
# NFS
ipchains -A input -i $exti -p TCP -y -d 0.0.0.0/0 2049 -j $rulez -l
ipchains -A input -i $exti -p UDP -d 0.0.0.0/0 2049 -j $rulez -l
# X
ipchains -A input -i $exti -p TCP -y -d 0.0.0.0/0 6000:6063 -j $rulez -l
# OpenWindows
ipchains -A input -i $exti -p TCP -y -d 0.0.0.0/0 2000 -j $rulez -l
# Socks
ipchains -A input -i $exti -p TCP -y -d 0.0.0.0/0 1080 -j $rulez -l
# Finger : enlève ton doigt
ipchains -A input -i $exti -p TCP -d 0.0.0.0/0 79 -j $rulez -l
# UDP traceroute : "ho trace ta route bouffon!"
ipchains -A input -i $exti -p udp --source-port 32769:65535 --destination-port 33434:33523 -j $rulez -l
echo "[FW] : Blocking bad services......................................... ok"
# Bon, voila une bonne chose de faite... Maintenant, on vas
# chopper tous les paquets ICMP qu'on veut bien, et les autres
# seront jetées.
ipchains -A input -i $exti -p icmp --icmp-type echo-reply -j ACCEPT
ipchains -A input -i $exti -p icmp --icmp-type destination-unreachable -j ACCEPT
ipchains -A input -i $exti -p icmp --icmp-type source-quench -j ACCEPT
ipchains -A input -i $exti -p icmp --icmp-type time-exceeded -j ACCEPT
ipchains -A input -i $exti -p icmp --icmp-type parameter-problem -j ACCEPT
ipchains -A output -i $exti -p icmp --icmp-type fragmentation-needed -j ACCEPT
ipchains -A output -i $exti -p icmp --icmp-type source-quench -j ACCEPT
ipchains -A output -i $exti -p icmp --icmp-type echo-request -j ACCEPT
ipchains -A output -i $exti -p icmp --icmp-type parameter-problem -j ACCEPT
echo "[FW] : Restricting ICMP.............................................. ok"
# Sinon, tout ca qu'est TCP, mais pas des connection, et qui est
# sur un port non privilégié, bah on accepte (parceque ce £?µù de
# ipchains il est pas statefull ;(
ipchains -A input -i $exti -p TCP ! -y -d 0.0.0.0/0 1024:65535 -j ACCEPT
# Ca, c'est pour le FTP-data (retour de connection, pour éviter
# de passer en PASV
ipchains -A input -i $exti -p TCP -d 0.0.0.0/0 20 -j ACCEPT
echo "[FW] : Stateless ;(.................................................. ok"
# Enfin, on logue tout ce qui est pas passé par aucune règle
# d'avant, mais qui parait louche...
ipchains -A input -i $exti -p udp -j $rulez -l
ipchains -A input -i $exti -p icmp --icmp-type 5 -j $rulez -l
ipchains -A input -i $exti -p icmp --icmp-type 13:255 -j $rulez -l
echo "[FW] : Logging obscurs packets....................................... ok"
# Et, in fine, Masquerading est ton ami
echo 1 > /proc/sys/net/ipv4/ip_forward
ipchains -M -S 7200 10 60
/sbin/depmod -a
modprobe ip_masq_ftp
modprobe ip_masq_irc
modprobe ip_masq_raudio ports=554,7070,7071,6970,6971
modprobe ip_masq_quake 26000,27000,27910,27960 #rajouter par moi
modprobe ip_masq_vdolive #rajouter par moi
modprobe ip_masq_user #rajouter par moi
modprobe ip_masq_cuseeme #rajouter par moi
ipchains -A forward -i exti -s $localnet -d 0.0.0.0/0 -j MASQ #rajouter par moi
#echo $extip
# /usr/sbin/ipmasqadm portfw -f
# /usr/sbin/ipmasqadm portfw -a -P tcp -L $extip 27015 -R 192.168.1.1 27010
# /usr/sbin/ipmasqadm portfw -a -P tcp -L $extip 27010 -R 192.168.1.1 27015
echo "[FW] : Setting up Masquerading....................................... ok"
# bon, on lance portsentry, passke ca rulez
killall portsentry
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
echo "[FW] : Setting up scan Detection..................................... ok"
echo "Firewall successfully installed!"