IpTables nemtommi

 ( btunyo | 2006. április 3., hétfő - 18:12 )

Hali

A gondom az hogy van egy jo kis iptables scriptem ami tűzfalnak tök jo lenne csak ha elinditom akkor valami hihetetlen hibát generál:
nem tudok grafikus felületre (GDM) bejelentkezni...
Bejön a logo de már alul a kis ikonok amik jeleznék a töltési folyamatot már meg sem jelennek.
Ha grafikus login után futtatom akkor semmi gond.

a rendszert debian sarge 2.4 kernellel hajtja

A segitséget előre is kösz!!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A Script:

#
#MyFirewall shell script V 0.3
#
# Beállítások
#
LANIFACES="bnep0 eth0"
INPUTTCP="ssh smtp imap http https"
INPUTUDP=""
LOG="off"

PORTSCAN="ALL_ALL ALL_NONE ALL_FIN,URG,PSH ALL_SYN,RST,ACK,FIN,URG SYN,RST_SYN,RST SYN,FIN_SYN,FIN FIN,RST_FIN,RST ACK,FIN_FIN ACK,PSH_PSH ACK,URG_URG"
BLACKLIST="10.0.0.0/8 172.16.0.0/16 224.0.0.0/4 240.0.0.0/5"

###############################################################
## Innentől csak akkor módosíts ha tudod hogy mit csinálsz!! ##
###############################################################

#
#A passziv ftphez szukseges modul betoltese
#
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

#
#Valtozok definialasa
#
NETIFACE=eth1
NETIP=`ifconfig $NETIFACE | grep inet | cut -d : -f 2 | cut -d \  -f 1`
NETMASK=`ifconfig $NETIFACE | grep Mask | cut -d : -f 4`
NETBCAST=`ifconfig $NETIFACE | grep inet | cut -d : -f 3 | cut -d \  -f 1`

for i in $LANIFACES; 
do
LANIP="$LANIP `ifconfig $i | grep inet | cut -d : -f 2 | cut -d \  -f 1`";
LANMASK="$LANMASK `ifconfig $i | grep Mask | cut -d : -f 4`";
LANBCAST="$LANBCAST `ifconfig $i | grep inet | cut -d : -f 3 | cut -d \  -f 1`";
done

#
#Alapallapot visszaallitasa...
#

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
#
#Uj Lancok letrehorasa
#
CHAINS="ILLEGAL PSDROP ILDROP LANINPUT LANOUTPUT NETINPUT NETOUTPUT"

for i in $CHAINS
do
iptables -N $i;
iptables -F $i;
done

#
#Csomag osztályozás
#
iptables -A INPUT -j ILLEGAL

for i in $LANIFACES;
do
        iptables -A INPUT -i $i -j LANINPUT;
        iptables -A OUTPUT -o $i -j LANOUTPUT; 
done

iptables -A INPUT -i $NETIFACE -j NETINPUT
iptables -A OUTPUT -o $NETIFACE -j NETOUTPUT



#TCP/IP szures


#Syn flood szures
iptables -A ILLEGAL -p tcp --syn -m limit ! --limit 3000/s -j ILDROP
# Lehetseges Port Scanneles 
iptables -A ILLEGAL -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

for i in $PORTSCAN
do
iptables -A ILLEGAL -p tcp --tcp-flags `echo $i | sed -e 's/\_/\ /g'` -j PSDROP;
done

# Blacklist IP címek tiltasa 

for i in $BLACKLIST
do
iptables -A ILLEGAL -i $NETIFACE -s $i -j PSDROP;
done

iptables -A ILLEGAL -j RETURN

#A lehetséges portscanner logolása

if [ "$LOG" = "on" ];then
echo "Tiltott csomagok naplózása: PSDROP";
iptables -A PSDROP -j LOG --log-level warn --log-prefix "Portscan?: ";
fi
iptables -A PSDROP -j DROP

#IP szűrés logolása

if [ "$LOG" = "on" ];then
echo "Tiltott csomagok naplózása: ILDROP";
iptables -A ILDROP -j LOG --log-level warn --log-prefix "Illegalis csomag: ";
fi

iptables -A ILDROP -j DROP

#
#Frogalom LAN -> FW
#

iptables -A LANINPUT -j ACCEPT

#
#Frogalom FW -> LAN
#

iptables -A LANOUTPUT -j ACCEPT

#
#Frogalom NET -> FW
#

for i in $INPUTTCP;
do
iptables -A NETINPUT -m state --state NEW,ESTABLISHED -p tcp --dport $i -j ACCEPT;
done

for i in $INPUTUDP;
do
iptables -A NETINPUT -m state --state NEW,ESTABLISHED -p udp --dport $i -j ACCEPT;
done

if [ "$LOG" = "on" ];then
echo "Tiltott csomagok naplózása: NETINPUT";
iptables -A NETINPUT -m limit --limit 5/s -j LOG --log-level warn --log-prefix "Tiltott csomag NET->FW: " ;
fi

iptables -A NETINPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A NETINPUT -j DROP

#
#Frogalom FW -> NET
#

iptables -A NETOUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#
#Forwarding
#
#Forgalom LAN -> NET
#

for i in $LANIFACES;
do
iptables -A FORWARD -i $i -o $NETIFACE -j ACCEPT;
done

#
# Forgalom NET -> LAN
#

for i in $LANIFACES;
do
iptables -A FORWARD -i $NETIFACE -o $i -m state --state ESTABLISHED,RELATED -j ACCEPT;
done

#
# Maszkolas
#

iptables -t nat -A POSTROUTING -o $NETIFACE -j MASQUERADE

Ujabb gond:

nem lehet ssh-zni a belső hálóról(laninput)

Milyen interneted van?

Miért nem indulsz el egy alaptól és szűkíted, bűvíted arra amire szükséged van.

már mindkét irányból megprobáltam de valahogy nem akar összejönni... nem sikerül behatárolni hogy hol a gond

Esetleg exportáld ki az iptables szabályláncokat és abból talán kiderül, hogy sikerült esetleg felélesednie olyasminek, amit nem szerettél volna.

iptables-save >rules.txt

Engem anno az adsl konfiguráló script kergetett őrületbe fedorán azzal, hogy
létrehozott default néhány szabályt (pl. blokkolta az 1024 és afeletti portokat), aztán a saját tűzfal scriptem meg hiába okoskodott, mégsem úgy ment ahogy kellett volna neki.
A ténylegesen futó szabályok exportálása és elemezgetése segített a dolgot felfedni.

Egy misét megér ...

Üdv,
t

Szerintem ebben semmi disznóság nincs, de javitsatok ki ha nem igy van

# Generated by iptables-save v1.2.11 on Wed Apr  5 07:24:14 2006
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Apr  5 07:24:14 2006
# Generated by iptables-save v1.2.11 on Wed Apr  5 07:24:14 2006
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:ILDROP - [0:0]
:ILLEGAL - [0:0]
:LANINPUT - [0:0]
:LANOUTPUT - [0:0]
:NETINPUT - [0:0]
:NETOUTPUT - [0:0]
:PSDROP - [0:0]
-A INPUT -j ILLEGAL 
-A INPUT -i bnep0 -j LANINPUT 
-A INPUT -i eth0 -j LANINPUT 
-A INPUT -i eth1 -j NETINPUT 
-A FORWARD -i bnep0 -o eth1 -j ACCEPT 
-A FORWARD -i eth0 -o eth1 -j ACCEPT 
-A FORWARD -i eth1 -o bnep0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -o bnep0 -j LANOUTPUT 
-A OUTPUT -o eth0 -j LANOUTPUT 
-A OUTPUT -o eth1 -j NETOUTPUT 
-A ILDROP -j DROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 3333/sec -j ILDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags FIN,ACK FIN -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags PSH,ACK PSH -j PSDROP 
-A ILLEGAL -p tcp -m tcp --tcp-flags ACK,URG URG -j PSDROP 
-A ILLEGAL -s 10.0.0.0/255.0.0.0 -i eth1 -j PSDROP 
-A ILLEGAL -s 172.16.0.0/255.255.0.0 -i eth1 -j PSDROP 
-A ILLEGAL -s 224.0.0.0/240.0.0.0 -i eth1 -j PSDROP 
-A ILLEGAL -s 240.0.0.0/248.0.0.0 -i eth1 -j PSDROP 
-A ILLEGAL -j RETURN 
-A LANINPUT -j ACCEPT 
-A LANOUTPUT -j ACCEPT 
-A NETINPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT 
-A NETINPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 25 -j ACCEPT 
-A NETINPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 143 -j ACCEPT 
-A NETINPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 80 -j ACCEPT 
-A NETINPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 443 -j ACCEPT 
-A NETINPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A NETINPUT -j DROP 
-A NETOUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A PSDROP -j DROP 
COMMIT
# Completed on Wed Apr  5 07:24:14 2006
# Generated by iptables-save v1.2.11 on Wed Apr  5 07:24:14 2006
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE 
COMMIT
# Completed on Wed Apr  5 07:24:14 2006

szerintem keresd meg, melyik lanccal van a baj, ugy, hogy egyenkent a lancok elejere beraksz egy accept-et.

Elég érdekes iptables script.. ezzel igy ilyen formán
alaposan meg fogod szivni előbb utóbb, mert elég rosszul
bontod fel, láncokra.
Ami az ssh-t illeti..
.. az input láncnál engedélyezed az látszik, viszont miután arról
átkerül a frordward lácra nem engedélyezed és a default policy drop
lép érvénybe.
-A INPUT -i bnep0 -j LANINPUT
->
-A LANINPUT -j ACCEPT
->
FORWARD DROP [0:0]
Nincs engedélyezve csak a
-A FORWARD -i bnep0 -o eth1 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
hiányzik a
-A FORWARD -i bnep0 -o eth0 -j ACCEPT

Persze lehet rosszul olvasom.. kicsit tömör.

Fri

Nem igazán értem hogy miért mondod hogy rosszul bontom fel??
Ha kicsit bővebben kifejtenéd...

1. Ami az ssh-t illeti..
Kizárólag akkor használom ha nem vagyok otthon és csak a fw-ra, így jelen tudásom szerint soha nem fog még csak bekacsintani sem a forward láncba igy ezzel nem lesz gond...

2. a forwardban azért nem engedélyeztem a két alháló közti átjárást mert azok a laptopomnak vannak fenntartva, és az vagy az egyiken vagy a másikon van, fölösleges szabályt meg ha nem muszály nem gépelek mert lusta vagyok...

Bocs, akkor tényleg félreolvastam.. rosszul értelmeztem a honnan-hovát.
A rossz-t ugy értettem elsősorban, hogy például ezek teljesen feleslegesek, ezt berakhatod a kuldo helyukre is.
iptables -A LANINPUT -j ACCEPT
iptables -A LANOUTPUT -j ACCEPT
Vagy, hogy két LOG láncot csináltál, mert nem hiszem, hogy elemezni fogod a logolt csomagokat, azokra vannak progik.. a portscanre is.
Vagy az INPUTTCP helyett használj inkább multiport-ot.
Vagy pölö, ez.. de ezt nem is értem bevallom az output láncon..
iptables -A NETOUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
De azt is emlithetném, hogy az INPUT elején rögtön elküldöd az ILLEGAL lancba, ami persze nem baj, de sok értelme nincs jelen esetben, hisz kevés szabályod van az INPUT láncban.. viszont a láncaid burjánoznak igy.
Fri

Egyetértek felelsegesek... ez egy régi script kicsit felujitva és gondoltam igy számomra egyszerübb bőviteni, ha esetleg nem bíznék meg saját magamban :-)

azért tettem elé egy if-t mert azt csak néha használom amikor elemezgetni akarok... szoval szinte soha :-)

a multiportot megnézem még nem használtam de biztosan hasznos

a output lánc... ez a szabály azt jelenti hogy minden csomag mehet aminek a state-je a felsoroltak egyike

ez csak azért van mert én mindig a saját fejem után megyek és nekem ugy tetszik hogy a default láncokban nagyonnagyon kevés a szabály, és csak osztályozás van

A helyedben az OUTPUT policy-t ACCEPT-re raknám. Ezen kívül pedig a lo interfészről induló vagy oda tartó forgalmat teljesen átengedném.

Ha az INPUT láncban mindent lekorlátozol, amit nem akarsz beengedni, akkor is külön lo interfész dolgait engedélyezni kellene. Hasonlóképpen a FORWARD-nál is a lo dolgait át kéne engedni.

Ha az INPUT és FORWARD láncokban a kintről jövő forgalmat elsődlegesen szűröd, akkor egyszerűen lehet mindent a lo-ra, -ról engedélyezni, hiszen kintről csak az jöhet, amit engedsz.

Szerintem a lo interfész blokkolgatása okozhat gondot a GDM-es induláskor. Fene tudja, hogy mi-mindent kommunikálgat(na) socketeken, amíg feláll(na).

OFF
Amennyiben érdekel, elküldhetem neked a saját firewall script csomagomat. Igaz, hogy az most fedorára lett lőve, de RedHat 9 óta minden verzión kifogástalanul megy. Igen ... mindenki a saját lovát dicséri :)))
ON

Üdv,
t

Az output policy-t ugyan tehetném accept-re de nekem igy jobban tetszik... és még soha nem okozott gondot, pedig már vagy 4 éve irogatok iptables scripteket.

Az lo-val kapcsolatban lehet hogy igazad van, ezt meg is fogadom, viszont a lényegi problémámon sajna nem segít, mert a GDM ugyanúgy nem indul (hozzátenném hogy tudomásom szerint a lo-nak semmi köze a forward lánchoz)+(az x-röl ugy tudom hogy ha localhost-on használod elvileg *.sock-on keresztül kommunikál nem net-es socketen, de ebben nem vagyok biztos)

Az fw scripted szivesen fogadom, mindenből lehet tanulni...

Hova küldhetem?

btunyo_AT_freemail_DOT_hu

Mail ment.
Ha kell segítség a kutyulmányaim értelmezéséhez, csak szólj.

Üdv,
t

esetleg:
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I OUTPUT 1 -o lo -j ACCEPT
?

nem segit sajna

Én guarddoggal konfigoltam be a tűzfalat ez létrehozott egy rc.firewall scriptet ezt belinkeltem az rd.d-be és remekül megy.