Jelenlegi hely
firewall script
Van otthoni gepre egy kis firewall scriptem amit en vadasztam ossze. Ezzel kapcsolatban kernem a segitsegeteket, hogy van-e meg valami amire erdemes figyelni. A script tehat:
#!/bin/sh
firewall_start() {
#iptables helye
IPTABLES="/usr/sbin/iptables"
#az alap hogy mindenbejovot vag, forward vag, kimenot enged
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
#engedelyez mindent sajat magamtol
$IPTABLES -A INPUT -i lo -j ACCEPT
#engedelyez ftp, http, ICMP a belso halorol
$IPTABLES -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 -m multiport --dport 21,80 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p ICMP -s 192.168.0.0/24 -j ACCEPT
#engedelyez ssh, ftp, http, ICMP a cegtol
$IPTABLES -A INPUT -i eth1 -p TCP -s CEGIP -m multiport --dport 21,22,80 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -p ICMP -s CEGIP -j ACCEPT
#engelyez ftp C7obs-bol
$IPTABLES -A INPUT -i eth1 -p TCP -s C7OBSIP --dport 21 -j ACCEPT
#engedelyez torrent a kulso halorol
$IPTABLES -A INPUT -i eth1 -p TCP -m state --state NEW --dport 10000 -j ACCEPT
#engedelyez minden belyovo mar felepitett kapcsolatot
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#vag minden uj es invalid kacsolatot
$IPTABLES -A INPUT -m state --state NEW,INVALID -j DROP
#Syn-flood, portscan, halal pingje elleni védelem:
$IPTABLES -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
}
firewall_stop() {
#iptables helye
IPTABLES="/usr/sbin/iptables"
$IPTABLES -F
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
}
case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_stop
sleep 1
firewall_start
;;
*)
echo "usage $0 start|stop|restart" ;;
esac
- A hozzászóláshoz regisztráció és belépés szükséges

RE: tűzfalscript
Szevasztok
Egy pár észrevétel, meg kérdés.
Nem kötözködés, csak lehet hogy rosszul értelmezem.
Hol vannak az OUTPUT, meg a FORWARD szabályok?
Itt csak az INPUT láncon vannak szabályok, többire nem szűrsz?
IPTABLES -P OUTPUT ACCEPT
Én ezt is DROP -ra teszem, aztán ami kell, azt engedem csak ki.
$IPTABLES -A INPUT -i lo -j ACCEPT
Itt meg az OUTPUT -ot is kell engedélyezni, loopback interface -en, különben, sok alkalmazás nem fog menni.
( Persze, csak ha az OUTPUT policy -d DROP )
Pl: CUPS nem fog menni, meg még sok minden más ( pl: X )).
#engedelyez ftp, http, ICMP a belso halorol
$IPTABLES -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 -m multiport --dport 21,80 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p ICMP -s 192.168.0.0/24 -j ACCEPT
Ha ez belső hálós gépekre vonatkozik, akkor ezzel a tűzfalgéped belső lábára irányítod az ftp, http forgalmat.
Proxyhoz kell, vagy kifele az internetre belső hálózatnak?
#engedelyez ssh, ftp, http, ICMP a cegtol
$IPTABLES -A INPUT -i eth1 -p TCP -s CEGIP -m multiport --dport 21,22,80 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -p ICMP -s CEGIP -j ACCEPT
Ez a cég, ez kívülről jön?
Mert ha igen, akkor csak akkor jó, ha a bejövő ftp, http -ket redirect -eled belső ftp, vagy http szerverekre.
Annak nincs szabálya?
A belső hálóról kimenő csomagok, mondjuk az internetre, a forward láncon utaznak, feltéve, ha nem proxy szolgáltatja a netet.
Én be szoktam kapcsolni a csomaghamisítás elleni védelmet ( rp_filter ), plusz a syncookies védelmet, plusz IP cím hamisítás, meg broadcast csomagok ellen dobom az összes csomagot.
Plusz én szoktam azért logolni is, hogy tudjam hogy ki garázdálkodik.
De be szoktam kapcsolni a X-mas csomagok elleni védelmet is.
Igaz, hogy a MAC address -t is lehet hamisítani, de én azért az interface -hez szoktam párosítani a MAC address szűrést is.
FTP -hez betöltöm az ip_conntrack_ftp modult is, az meg húzza magával a többit, hogy belső hálós ftp -k is működjenek.
Be szoktam állítani, hogy a bejövő kapcsolatok --syn bittel kezdődjenek.
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROPPlusz van még egy pár dolog ( ssh engedélyezés, brute-force elleni védelem, string opció, stb.. ), de én paranoi típus vagyok, lehet, hogy ezek neked nem kellenek.
Plusz azt se felejtsd el, hogy a netfilter fentről lefele olvassa a szabályokat és ha talál egyezést, akkor nem vizsgál tovább.
Ezért, ha a végén van a ping elleni védelem szabálya, de az elején engedélyezted az ICMP csomagot, akkor az lesz a gáz, hogy a netfilter beengedi az icmp csomagot a felső szabály alapján és nem foglalkozik vele tovább.
Ekkor el sem jut a ping elleni védelemig, oszt akkor jöhet a halál pingje, nem lesz ellene szabály.
( Vagyishát lesz, csak a netfilter nem fogja szűrni ).
Úgy kell megcsinálni a szabályokat, hogy először a védelemre vonatkozó szabályokat állítsd be, utána meg engedélyezhetsz.
Hát röviden ennyi, ha valamit rosszul értelmeztem, akkor bocsi.
Szevasztok
Slackware 12.0 kernel 2.6.22
tuzfal
Koszonom az eszreveteleket.
En nem mondtam el pontosan a helyzetet.
Tehat ftp/http szerverek ezen a gepen futnak.
Belso halozat nincsen. Az elozo helyen ahol laktam en osztottam tovabb a netet, onnan maradt a belso halo elnevezes. De az interface megvan, azaz 2 halokartya van. Akkor aktivalva volt a forwardolas es a maszkolas, valamint megvoltak a szabalyok a forward lancon is. De most hogy mar nem osztok kivettem oket. A belso halos szabaly azert maradt meg, hogy ha esetleg jon valaki laptop-al, es bekoti magat akkor erje el a gepemet ftp-n, http-n masolas celjabol. Pinget azert hagytam, hogy ellenorizheto legyen hogy latja-e a gepem.
Az output-on azert engedelyezek mindent, mert mivel egyedul csak az en gepem general kimeno forgalmat, es mivel linux nem valoszinu hogy virus/spyware/bot gondom lenne.
Amit emlitettel a vege fele, a brute force elleni vedelem erdekelne. Az a string opcio az mi? Esetleg ha van meg egyebb ilyen paranoid szabalyod azok is erdekelnenek.
Szerk:
Azaz eth0 interface-en (ugymond belso halo) annyi kell, hogy ftp-n, http-n elerheto legyen a gep. Azert hogy ha netan jon valaki mikor nem vagyok otthon, akkor ne kelljen firewall-t scriptben matatni.
Az eth1-en jon be a net. Itt annyi kell, hogy bejovo kapcsolatot barkitol csak a 10000-es porton fogadjon torrent miatt. Valamint a munkahelyemrol elerhessem ftp-n, http-n, ssh-n, Es C7obs-bol (kolesz, vannak ott ismerosok) ftp-n lehessen elerni.
Ezeket osszehozom en ugy hogy mukodjenek. Ami igazan erdekelne azok a kulonfele tamadasok elleni vedelmek. Nem vagyokm nagyon paranojas, de biztos ami biztos, elfernek ott.
-----------------------------------
Sic Transit Gloria Mundi
kukukknak tűzfalscript....
Szevasztok
Üdv kukukk
Csináltam egy kis egyszerűbb tűzfalscriptet, a Te gépedre
Szempontok:
Mindent tiltunk, még az OUTPUT láncon is.
Ez azért is kell, mert ha esetleg valaki bejut a gépedre, ne tudjon más helyekre bármilyen porton csomagot küldeni.
Forráscímhamisítást bekapcsoltam, de azért a hamis IP csomagokat szűrtem.
Broadcast csomagok eldobva.
Készítettem két táblát, az egyik a logolást segíti, a másik a synflood ellen véd.
sshbrute force elleni szabály is benn van.
syn bittel kezdődhetnek csak csomagok, plusz az xmas elleni védelem is benne van.
Az icmp kérések csak echo-request -et engedélyeznek, azok is limitálva vannak.
Torrent porton engedélyeztem az udp -t ( nem udp -t használ? )
Belső hálóról az ftp http icmp jöhet be.
Minden mást eldobtam
Kifele a DNS kell, meg beállítottam, hogy a rendszert tudd ftp -n http -n keresztül frissíteni.
A belső hálóra tudsz pingetni teszt céljából.
Minden mást dobtam
A CEGIP, meg a C7OBSIP változót állíts be, annak a címét nemtom.
Próbáld ki, nézd át, mert csak így gyorsba dobtam össze.
#!/bin/sh
###egyszeru tuzfalszabaly egygepes rendszerre kukukk -nak :-)
##iptables
IPT=/usr/sbin/iptables
##modulok helye
MODKT=/lib/modules/`uname -r`/kernel/net/ipv4/netfilter
##modprobe parancs
MPROB=/sbin/modprobe
##kulso interface
EXTIF=eth1
##belso lab amit ritkan hasznalsz
INTIF=eth0
##cegipcim
CEGIP=
##C7obs tartomany
C7OBSIP=
##toroljuk a chain -eket, uritjuk a szabalyokat, nullazzuk a szamlalot
$IPT -F
$IPT -X
$IPT -Z
#mindent tiltunk ki, be, keresztul
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
## megnézzük vannak -e modulok, amiket betöltünk.
## az ftp követő modul, betölti majd a többi modult.
if [ -f $MODKT/ip_conntrack_ftp.ko ] ;
then MOD=ip_conntrack_ftp ;
$MODPROB $MOD
fi
## figyeljuk a syn sutiket
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
## bekapcsoljuk a forrascimhitelesitest.
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
##INPUT szabalyok
##loopback -en mindent engedunk befele
$IPT -A INPUT -i lo -j ACCEPT
##keszitunk ket lancot
##egyik synflood ellen, masik logolasra es eldobasra
$IPT -N LOGDROP
$IPT -A LOGDROP -j LOG
$IPT -A LOGDROP -j DROP
$IPT -N SYNFLOOD
$IPT -A SYNFLOOD -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j DROP
$IPT -A SYNFLOOD -p tcp --syn -j SYNFLOOD
##naplozzuk es dobjuk a hamis IP cimu csomagokat
$IPT -A INPUT -i $EXTIF -s 192.168.0.0/16 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 172.16.0.0/12 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 10.0.0.0/8 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 127.0.0.0/8 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 255.0.0.0/8 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 0.0.0.0/8 -j LOGDROP
$IPT -A INPUT -i $EXTIF -s 255.255.255.255/32 -j DROP
##bejovo kapcsolatok csak SYN bittel kezdodhetnek
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
##xmas es portscan ellen
$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j LOGDROP
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j LOGDROP
##korabban elfogadott csomagok beengedese
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
##ssh brute force ellen
$IPT -A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --update --seconds 120 --name SSHBFORCE --rsource -j LOGDROP
$IPT -A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name SSHBFORCE --rsource -j ACCEPT
#johet az ftp, http, ICMP a cegtol
$IPT -A INPUT -i $EXTIF -p tcp -s $CEGIP --dport 21 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $EXTIF -p tcp -s $CEGIP --dport 80 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $EXTIF -p icmp --icmp-type echo-request -s $CEGIP -m limit --limit 1/s -j ACCEPT
#johet az ftp, http, ICMP a belso halorol
$IPT -A INPUT -i $INTIF -p tcp --dport 21 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $INTIF -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $INTIF -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#johet ftp C7obs-bol
$IPT -A INPUT -i $EXTIF -p tcp -s $C7OBSIP --dport 21 -m state --state NEW -j ACCEPT
#johet torrent kivulrol ( nem udp -n megy a torrent? )
$IPT -A INPUT -i $EXTIF -p tcp --dport 10000 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $EXTIF -p udp --dport 10000 -m state --state NEW -j ACCEPT
##minden mast logolunk es dobunk
$IPT -A INPUT -j LOGDROP
##OUTPUT szabalyok
##loopback -en mindent engedunk kifele
$IPT -A OUTPUT -o lo -j ACCEPT
#elfogadott csomagok mehetnek ki
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
##dns mehet ki
$IPT -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
##rendszert frissitunk ( swut, swaret, slapt-get ) ftp -n http -n
$IPT -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
##pingeljuk a belso halot, ha mukodik ( dhcp -hez is kell )
$IPT -A OUTPUT -o $INTIF -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
##minden mast logolunk es dobunk
$IPT -A OUTPUT -j LOGDROP
Szevasztok
Slackware 12.0 kernel 2.6.22
re: kukukk tuzfalscript
Koszonom szepen, tetszik!
Kiprobalom. ha valami gond lenne szolok.
Szerk:
A synflood elleni reszt nem igazan ertem.
Az $IPT -N SYNFLOOD csinal egy lancot.
A kovetkezo sor beallitja, hogy mennyi kapcsolat utan kezdje el dobni a csomagokat.
De a harmadik sor $IPT -A SYNFLOOD -p tcp --syn -j SYNFLOOD nem azt csinalja, hogy hozzaad a SYNFLOOD lanchoz egy szabalyt ami alapjan a syn bitel rendelkezo tcp kapcsolatokat atadja a SYNFLOOD lancnak? Nem az kellene helyette, hogy $IPT -A INPUT -p tcp --syn -j SYNFLOOD?
Elnezest ha rosszul ertettem.
-----------------------------------
Sic Transit Gloria Mundi
Igazad van rosszul írtam....
Szevasztok
Üdv kukukk
Igazad van elírtam, ( mondtam hogy gyorsan csináltam :-))))))
Tehát a helyes szabály így lesz:
$IPT -N SYNFLOOD
$IPT -A SYNFLOOD -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j DROP
$IPT -A INPUT -p tcp --syn -j SYNFLOOD
De csinálhatod így is a synflood védelmet:
$IPT -N SYNFLOOD
$IPT -A SYNFLOOD -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j RETURN
$IPT -A SYNFLOOD -j DROP
$IPT -A INPUT -p tcp --syn -j SYNFLOOD
Köszi, hogy szóltál.
Szevasztok
Slackware 12.0 kernel 2.6.22
tűzfal
Hali!
Szia tamas.csabi !
Nagyon tetszik a tűzfal amit kukukk -nak írtál. Azt szeretném kérdezni, hogy nem segítenél nekem is összehozni egy jó kis tűzfalat? Az az igazság, hogy régóta keresgélek a neten a témában, de nem sokra jutottam (lehet, hogy tényleg meg kéne tanulnom már rendesen angolúl). Egyébként nem tudnál ajánlani, valami jó irodalmat? Sajonos nekem a Firewall-HOWTO kicsit bonyolúlt (, bár lehet, hogy csak azért mert angolúl van).
Egyébként a neten csak 1 gép van. Csak böngészésre, msn -ezésre, rádióhallgatásra és letöltésre használom. És nem akarom, hogy bárki is fel tudjon kapcsolódni a gépemre sem ssh -val, sem ftp -val, sem máshogy. Szóval csak egy egyszerű desktop -ra kéne nekem tűzfal.
Re: tűzfal
Szevasztok
Üdv Criss
Persze segítek, nagyon szívesen.
Dobj egy mail -t, írd bele mit szeretnél a gépen engedélyezni, tiltani, stb...
Megírom, oszt ha kell valami hozzá, vagy változtatni szeretnél rajta, akkor módosítjuk.
A mail -be írd bele, mi az interface neve ( eth* ), saját kernel, vagy gyári, modulba raktad -e az iptables cuccait ( ip_conntrack, syncookies, stb ), meg a többi apróságot.
Szevasztok
Slackware 12.0 kernel 2.6.22
re: re tűzfal
Hali!
Szia Csabi!
Nos elkűldtem az e-mailt, vagy 2 napja, de eddig még nem kaptam választ tőled. Félre ne érts, nem sűrgetni akarlak, vagy ilyesmi, csak azt szeretném tudni, hogy megkaptad az e-mail -em?
RE:RE:RE: Tűzfal
Szevasztok
Üdv Criss
Igen megkaptam, nemsokára megcsinálom, csak egy kis türelmet kérek, mert dolgozom ma is, nemtom mikor érek haza.
Szevasztok
Slackware 12.0 kernel 2.6.22
Sewastok! Fwbuilder
Sewastok!
Fwbuilder segítségével próbálok gyakorlatot szerezni az iptables működését illetően és belefutottam egy furcsaságba.
Csináltam két tűzfal scriptet, különféle szabályokkal, de mindkettőben van ssh brute force elleni védelem. Mindkét tűzfalscriptben teljesen ugyanúgy épül fel a szabály, azonban amikor legyártja az fwbuilder az iptables scriptet ott van egy kis különbség.
$IPTABLES -N ssh_brute_force
$IPTABLES -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ssh_brute_force
test -n "$i_eth0" && $IPTABLES -A ssh_brute_force -i + -p tcp -m tcp -d $i_eth0 --dport 22 -m limit --limit 4/minute -j In_RULE_4_0
$IPTABLES -A In_RULE_4_0 -j LOG --log-level info --log-prefix "SSH_BRUTE_FORCE"
$IPTABLES -A In_RULE_4_0 -j DROP
$IPTABLES -N ssh_brute_force
$IPTABLES -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ssh_brute_force
$IPTABLES -N Cid46D5622229614.0
$IPTABLES -A ssh_brute_force -i eth0 -p tcp -m tcp --dport 22 -m limit --limit 4/minute -j Cid46D5622229614.0
$IPTABLES -N In_RULE_4_0
test -n "$i_eth0" && $IPTABLES -A Cid46D5622229614.0 -d $i_eth0 -j In_RULE_4_0
$IPTABLES -A Cid46D5622229614.0 -d 192.168.1.0 -j In_RULE_4_0
$IPTABLES -A In_RULE_4_0 -j LOG --log-level info --log-prefix "SSH_BRUTE_FORCE"
$IPTABLES -A In_RULE_4_0 -j DROP
Mint látható, a második script esetében bekerült egy véletlenszerű névvel ellátott plusz tábla, és nem értem miért, mi célból.
Közben rájöttem, hogy ez
Közben rájöttem, hogy ez a szabály nem jó. :)
Sikerült csinálnom egy olyat, ami 4 próbálkozás után elutasít "host elérhetetlen" üzenettel, azonban ha tovább próbálkozom, akkor kb. a 7-8. próbálkozást ismét beengedi. Próbáltam googlezni, de nem találtam brute force elleni megoldást, amit fwbuilderrel lehetne kivitelezni.
Tűzfal Criss -nek....
Szevasztok
Előszöris bocsi Criss, de két okból sem készült el a tűzfalscript.
Sajna az e-mail címedet megette a Matrox merevlemezem.
( Hardware hiba :-( )
A másik, hogy nagyon be voltam havazva.
De most már kész van, légyszi dobj mégegy mail -t és elküldöm.
A script egyszerű, azt mondtad, egygépes, nem kell semmi extra.
Azt viszont még meírhatnád, hogy használsz -e olyan programokat, amikhez kell nyitni portokat.
Pl:
webcamera, amsn, ekiga, hangátvitel, stb...
Most egyenlőre úgy van, hogy az 1024 feletti portokat kiengedi, ( be nem :-) ), hogy tudjad használni ezeket a programokat.
Torrentezni szoktál?
Ahhoz is külön kellene szabály.
Kifele engedélyezve van a web, ftp, ssh, https, levelezés, ( 25, 110 ) dns.
Ezenkívül ha valami kell még, akkor beleírom azt is.
Mégegyszer elnézést kérek, ha dobsz egy mail -t, holnap már küldöm is.
Szevasztok
Slackware 12.0 kernel 2.6.22
PPoe
Szia,
Nekem a szolgaltatom PPoe protokollal szolgaltatja a netet. Megcsinaltam, hogy menjen az internet. Kerdesem az volna, hogy lehetne ugy kitiltani mondjuk az eth1-rol az osszes csomagot ugy, hogy azert a ppoe meg atmenjen rajta?
Masik kerdes, hogy a jol megszokott iptables opciok ugyanugy mukodnek-e ppp0 interfacen mint mondjuk az eth1-en?
RE: pppoe
Szevasztok
Az eth1 az egy másik háló, vagy arra épül fel a ppp0 interface?
Ha arra épül a ppp0, akkor nem kell külön tiltani eth1 -re.
Átírod a scriptet eth1 helyett ppp0 -ra, oszt annyi.
Én az MTU -t át szoktam állítani adsl -nél.
Szevasztok
eth1-re epul ppp0. Azert nem
eth1-re epul ppp0. Azert nem kell szurni azt automatan csinalja a kernel? Valamelyik szomszed nem huncutkodhat rajta? :D
(masok is paranojasok)