( polyp | 2007. 08. 06., h – 16:55 )

Bocs az új topikért, de amikor nekem kellett help, szanaszét találtam mindent.

Nem a saját agyszüleményem a szkript amit ide beollózok, hanem több hozzáértő ötletét próbáltam összeszedni. Kérlek nézzétek át, és szívesen venném az érdemi hozzászólásokat.
Igyekeztem a hasznos portokat is beleírni, akinek az a protokoll kell, kommentezze ki.
Köszike

#!/bin/bash

#innentol nem szabad a ctrl-c-nek mukodnie
trap "" INT

## otthoni tűzfal

## megkeressük az iptables -t
IPTABLES=`which iptables`
IP6TABLES=`which ip6tables`
IFCONFIG=`which ifconfig`
## megadjuk a modulkönyvtárat:
MODKT=/lib/modules/`uname -r`/kernel/net/ipv4/netfilter
## megkeressük a modprobe parancsot
MODPROBE=`which modprobe`
## kivesszük az ipcímünket:
IFACE=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print }'`
IP_LOCAL="`ifconfig ppp0 | grep inet\ addr | cut -f2 -d: | cut -f1 -d\ `"
LOG_LIMIT='2/min'
echo
echo "=========================================="
echo "| :: TŰZFAL BEÁLLÍTÁSA :: |"
echo "=========================================="

echo $IP_LOCAL

## először törlünk minden szabályt.
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES --flush
$IPTABLES --delete-chain
$IPTABLES -t nat -F
$IPTABLES -t nat --delete-chain

echo "Minden szabály törlése .............[ OK ]"

## felállítjuk az alap policyt.
## mindent tiltunk, amit külön nem engedélyezünk.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IP6TABLES -P INPUT DROP
$IP6TABLES -P OUTPUT DROP
$IP6TABLES -P FORWARD DROP
echo "Alap szabályok beállítása ..........[ OK ]"

modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe iptable_filter
echo "Modulok betöltése ..................[ OK ]"

## figyeljük a syn sütiket
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "Anti-synflood védelem ..............[ OK ]"

## bekapcsoljuk a forráscímhitelesítést.
#echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
for spoofing in /proc/sys/net/ipv4/conf/default/rp_filter; do
echo "1" > $spoofing
done
echo "Anti-spoofing védelem ..............[ OK ]"

$IPTABLES -A INPUT -i lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.

$IPTABLES -N security
$IPTABLES -N dosattack

$IPTABLES -A INPUT -i IFACE -s 192.168.0.0/16 -j REJECT ## igaz , hogy a forráscímhitelesítés be van kapcsolva,
$IPTABLES -A INPUT -i IFACE -s 172.16.0.0/12 -j REJECT
$IPTABLES -A INPUT -i IFACE -s 10.0.0.0/8 -j REJECT ## de azért biztosra megyünk. A hamis IP címeket kiszűrjük.
$IPTABLES -A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Hamis IP forrás (INPUT)"
$IPTABLES -A INPUT -s 255.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Hamis IP forrás (INPUT)"
$IPTABLES -A INPUT -s 0.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 127.0.0.0/8 -j LOG --log-prefix "Hamis IP forrás (INPUT)"
$IPTABLES -A INPUT -s 127.0.0.0/8 -j DROP
##$IPTABLES -A INPUT -s $IP_LOCAL -j LOG --log-prefix "Hamistott IP forrás (INPUT)"
##$IPTABLES -A INPUT -s $IP_LOCAL -j DROP
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Letap. kísérlet? (INP)"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A security -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "Xmas-tree scan? (INPUT)" #Portscan & PoD loggolas
$IPTABLES -A security -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A security -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "FW: Null scan! (INPUT)"
$IPTABLES -A security -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A security -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A security -p icmp --icmp-type echo-request -j LOG --log-prefix "Ping of Death attack? (INPUT)"
$IPTABLES -A security -p icmp --icmp-type echo-request -j DROP
$IPTABLES -A security -p tcp --syn -m limit --limit 2/s --limit-burst 10 -j RETURN #syn storm
$IPTABLES -A dosattack -p tcp --syn -m limit --limit 8/s -j RETURN #DoS & agressziv Port scan kivedesere
$IPTABLES -A dosattack -p tcp --syn -m limit --limit $LOG_LIMIT -j LOG --log-prefix "FW: Syn-Flood attack? (INP)"
$IPTABLES -A dosattack -p tcp --syn -j DROP

## INPUT szabályok.
##$IPTABLES -A INPUT -p icmp -j ACCEPT --icmp-type echo-request ## kintről "ping" mehet.
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## engedélyezzük befele, ami tőlünk származik.
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -m limit --limit $LOG_LIMIT -j LOG --log-prefix 'FW-HIDDEN-SCAN? ' # uj kapcsolat
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #syn-nel kezdodik, kulonben esetleg tamadas
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT -m state --state NEW ## kintről http hozzáférést akarunk.
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT -m state --state NEW ## kintről https hozzáférést akarunk.
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT -m state --state NEW ## kintről ssh hozzáférést akarunk.
$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT -m state --state NEW ## kintről ftp control hozzáférést akarunk.
$IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT -m state --state NEW ## kintről ftp data hozzáférést akarunk.
##$IPTABLES -A INPUT -p tcp --dport 5900 -j ACCEPT-m state --state NEW ## kintről vnc hozzáférést akarunk. (távoli asztal)

$IPTABLES -A INPUT -j LOG --log-prefix "Alapért. elutasítva (INP): " ## ami jönne, azt loggoljuk:
$IPTABLES -A INPUT -j DROP ## utána eldobjuk.
echo "INPUT szabályok beállítása .........[ OK ]"

## OUTPUT szabályok.
##$IPTABLES -A OUTPUT -p icmp -j ACCEPT --icmp-type echo-request ##kifele menő "ping" -re szükség lehet.
$IPTABLES -A OUTPUT -o lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## jóváhagyott kapcsolatok engedélyezése.
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT ## a DNS -re szükség van.
$IPTABLES -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 123 -j ACCEPT ## ntp mehet
$IPTABLES -A OUTPUT -p tcp --dport 123 -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT ## http mehet.
$IPTABLES -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT ## https mehet
$IPTABLES -A OUTPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT ## ssh mehet.
$IPTABLES -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp control mehet
$IPTABLES -A OUTPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp data mehet
##$IPTABLES -A OUTPUT -p tcp --dport 989 -m state --state NEW,ESTABLISHED -j ACCEPT ## FTPs data mehet
##$IPTABLES -A OUTPUT -p udp --dport 989 -m state --state NEW,ESTABLISHED -j ACCEPT ## FTPs data mehet
##$IPTABLES -A OUTPUT -p tcp --dport 990 -m state --state NEW,ESTABLISHED -j ACCEPT ## FTPs control mehet
##$IPTABLES -A OUTPUT -p udp --dport 990 -m state --state NEW,ESTABLISHED -j ACCEPT ## FTPs control mehet
$IPTABLES -A OUTPUT -p tcp --dport 587 -m state --state NEW,ESTABLISHED -j ACCEPT ## SMTP subsession mehet
$IPTABLES -A OUTPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés SMTP
$IPTABLES -A OUTPUT -p tcp --dport 587 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés SMTP
$IPTABLES -A OUTPUT -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés POP3
$IPTABLES -A OUTPUT -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés IMAP4s
$IPTABLES -A OUTPUT -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés POP3s
##$IPTABLES -A OUTPUT -p tcp --dport 220 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés IMAP3
$IPTABLES -A OUTPUT -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés IMAP4
##$IPTABLES -A OUTPUT -p udp --dport 1241 -m state --state NEW,ESTABLISHED -j ACCEPT ## Nessus Security Scanner
##$IPTABLES -A OUTPUT -p tcp --dport 1241 -m state --state NEW,ESTABLISHED -j ACCEPT ## Nessus Security Scanner
##$IPTABLES -A OUTPUT -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT ## vnc mehet (Távoli asztal)
##$IPTABLES -A OUTPUT -p tcp --dport 604 -m state --state NEW,ESTABLISHED -j ACCEPT ## TUNNEL
##$IPTABLES -A OUTPUT -p tcp --dport 901 -m state --state NEW,ESTABLISHED -j ACCEPT ## Samba
$IPTABLES -A OUTPUT -p tcp --dport 6668 -m state --state NEW,ESTABLISHED -j ACCEPT ## bnc mehet
$IPTABLES -A OUTPUT -p tcp --dport 37 -m state --state NEW,ESTABLISHED -j ACCEPT ## rdate mehet

$IPTABLES -A OUTPUT -p tcp --dport 1755 -m state --state NEW,ESTABLISHED -j ACCEPT ## MMS, ms-streaming
$IPTABLES -A OUTPUT -p udp --dport 1755 -m state --state NEW,ESTABLISHED -j ACCEPT ## MMS, ms-streaming
$IPTABLES -A OUTPUT -p tcp --dport 554 -m state --state NEW,ESTABLISHED -j ACCEPT ## RTSP Real Time Streaming Protocol
$IPTABLES -A OUTPUT -p udp --dport 554 -m state --state NEW,ESTABLISHED -j ACCEPT ## RTSP Real Time Streaming Protocol
$IPTABLES -A OUTPUT -p udp --dport 5004 -m state --state NEW,ESTABLISHED -j ACCEPT ## RTP Real-time Transport Protocol
$IPTABLES -A OUTPUT -p udp --dport 5005 -m state --state NEW,ESTABLISHED -j ACCEPT ## RTP Real-time Transport Protocol
$IPTABLES -A OUTPUT -p tcp --dport 3689 -m state --state NEW,ESTABLISHED -j ACCEPT ## Apple’s iTunes
$IPTABLES -A OUTPUT -p udp --dport 7070 -m state --state NEW,ESTABLISHED -j ACCEPT ## RealAudio
$IPTABLES -A OUTPUT -p tcp --dport 8000 -m state --state NEW,ESTABLISHED -j ACCEPT ## rádió mehet SHOUTcast

$IPTABLES -A OUTPUT -p tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT ## msn
$IPTABLES -A OUTPUT -p tcp --dport 6891 -m state --state NEW,ESTABLISHED -j ACCEPT ## msn file transfer
$IPTABLES -A OUTPUT -p tcp --dport 6901 -m state --state NEW,ESTABLISHED -j ACCEPT ## msn hang
##$IPTABLES -A OUTPUT -p tcp --dport 5050 -m state --state NEW,ESTABLISHED -j ACCEPT ## yahoo mehet
##$IPTABLES -A OUTPUT -p tcp --dport 531 -m state --state NEW,ESTABLISHED -j ACCEPT ## AOL irc mehet
##$IPTABLES -A OUTPUT -p udp --dport 531 -m state --state NEW,ESTABLISHED -j ACCEPT ## AOL irc mehet
##$IPTABLES -A OUTPUT -p tcp --dport 5190 -m state --state NEW,ESTABLISHED -j ACCEPT ## ICQ and AOL Instant Messenger
##$IPTABLES -A OUTPUT -p tcp --dport 6346 -m state --state NEW,ESTABLISHED -j ACCEPT ## gnutella mehet
##$IPTABLES -A OUTPUT -p tcp --dport 6347 -m state --state NEW,ESTABLISHED -j ACCEPT ## gnutella mehet
##$IPTABLES -A OUTPUT -p tcp --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT ## irc mehet

##$IPTABLES -A OUTPUT -p tcp --dport 6880 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
$IPTABLES -A OUTPUT -p tcp --dport 6881 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
$IPTABLES -A OUTPUT -p udp --dport 4444 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent

$IPTABLES -A OUTPUT -j LOG --log-prefix "Alapért. elutasítva (OUT): "
$IPTABLES -A OUTPUT -j DROP

echo "OUTPUT szabályok beállítása ........[ OK ]"
echo "Kész!! Tűzfal: OK! .................[ OK ]"
echo "=========================================="
echo

Én a külső IP címet a ppp0 interfészről szedem, ha valaki más interfészt használ, írja át az elején az IP_LOCAL sort!
Ha valaki használ swatch-ot naplóelemzésre, a .swatchrc fájlba a logüzeneteket beillesztve gyorsan kikereshető a fontos rész. !?