Citation :
#! /bin/sh #----------------------------------------------------------------- # Ping's Firewall, emproved by Poseidon. # Classified as 'Strong Firewall Ruleset' # Copyleft 2001 _PinG_ ping@root42 #----------------------------------------------------------------- echo "_PinG_'s strong Firewall Ruleset..." # Bon, d'abbord, on met tout dans des petites variables, pour # faciliter les modifs... exti="eth1" # Interface externe (connectée au net) loopi="lo" # Interface de loopback loci="eth0" # Interface Interne (LAN) localnet="192.168.0.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 1 > $f done 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] ptimizing 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 offerts par la machine vers le net. # client DNS : ouais, parce que 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 22 -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 ipchains -A input -p TCP -d 0.0.0.0/0 12345:12346 -y -j $rulez -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 pakets........................................ ok" # Et, in fine, Masquerading est ton ami echo 1 > /proc/sys/net/ipv4/ip_forward ipchains -M -S 7200 10 60 modprobe ip_masq_ftp modprobe ip_masq_irc modprobe ip_masq_quake modprobe ip_masq_raudio ports=554,7070,7071,6970,6971 ipchains -A forward -s $localnet -j MASQ echo "[FW] : Setting up Masquerading....................................... ok" # bon, on lance portsentry, passke ca rulez #killall portsentry #/usr/psionic/portsentry/portsentry -atcp #/usr/psionic/portsentry/portsentry -audp #echo "[FW] : Setting up scan #Detection..................................... ok" echo "Firewall successfully installed!"
|