Tűzfal

Fórumok

Iptables, firestarter...

Hozzászólások

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. !?

Az output tábla ilyen beállításainak iptablessel nem sok értelmét látom, mert ha mondjuk egy gonosz virus, vagy akármi ki akar menni akkor tcp: 53,80,443 vagy hasonló porton fog probálkozni és te kiengeded. Ha ilyen szabályokat akarsz akkor és úgy, hogy értelme is legyen akkor applicaiton firewall kell pl zorp.

--
A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station

Ez jogos, bár ha mindent lezárok és az input szabályokat be akarom állítani, akkor az OUT szabályokat is be kell lőnöm. Sok gépelés, de mégmindig jobb, mintha az összes OUT kaput kinyitom.
Az mennyire vált be, ha a be forgalmat INPUT-tal, a ki forgalmat zorp-pal lövöm be? A zorp-nak utánanézek! Köszike

Remek pelda arra, hogyan lehet latszolag jo, de valosagban hibas konfigot osszerakni. Elsore is szurja az ember szemet pl. az IFACE $IFACE helyett, de amilyen szinten eldobalod az ICMP csomagokat, az mutatja, hogy ez a konfig bizony masszivan bugos. Emellett a security es a dosattack lancok sosem kerulnek meghivasra. Az rp_filter hasznalata sem celszeru, a spoofing ellen ugyan hatasos, de ismerten lassu 1-1 route lookup a mezei csomagszuro szabalyokhoz kepest.

Mint mondottam volt, nem a saját agyszülemény, tehát a grat sem nekem jár. De azért teccik... :-)

Azt már nem tudom, hogy hány millió oldalt néztám át két nap alatt, és honnan jöttek a részletek.

Az IFACE hiba jogos, javítva. Wildy észrevételeit nem mondom, hogy nem értem, viszont a javításhoz kicsinyke vagyok még. Ha betennéd a javított szkriptet. Nem azért, hogy nekem legyen jó, hanem hogy másnak ne kelljen nagymesternek lenni ha valaki egy klassz kiinduló szkriptet keres.

thanks

a sajat lancok bekapcsolasa az aramlasba egyszeru
-j sajat lanc modszerrel a csomagaramlast atdobod a megfelelo lancra.
Pl:

iptables -A INPUT -j security

es persze mehet bele minden mas szuresi feltetel is , ugy akkor csak a megfelelo csomagok kerulnek a lancra.

A zorp , pedig fizetos ha jol tudom

Köszi az írást! Egy része nagyon ismerős. Véletlenül nem a slackware fórumon találtad nagy részét? Én ott kaptam segítséget Zooltól valamint Csabitól, és kísértetiesen hasonlít a scriptünk. :)

-- pgergely --