FreeBSD láma tűzfal kérdés

Fórumok

FreeBSD láma tűzfal kérdés

Hozzászólások

nah még pár link:
:idea:
http://www.jimarnold.org/geekinfo/template.php?id=28
http://www.onlamp.com/pub/a/bsd/2001/04/25/FreeBSD_Basics.html
http://forums.feis.herts.ac.uk/topic.asp?TOPIC_ID=641
http://blogs.geekdojo.net/andy/articles/1807.aspx
http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO
http://www.fwbuilder.org/

nah ezekből már kisütsz valamit. :lol:

Nagyon, köszi, ezeket most átfutottam. :)
Én a FreeBSD Handbookból néztem a példákat, meg az AbsoluteBSD könyvből is, de már az a kettő ellentmondott egymásnak. Amit Te bemásoltál abban meg találtam harmadik verziót is. :) Nah, majd csal elszórakozok vele, aztán kitalálom mi van.

[quote:edd4175b8d="Beanie"]Jah, és persze így sem megy semmi. :(
Már nagyon kezdek bekattanni miatta.

Es ha az out rule-okat igy irod?

[code:1:edd4175b8d]
pass out quick on re0 proto tcp from any to any keep state
pass out quick on re0 proto udp from any to any keep state
pass out quick on re0 proto icmp from any to any keep state
block out quick on re0 all
[/code:1:edd4175b8d]

Tehat ahol neked a pass out quick all van, oda biggyeszd be ezt a negy sort. Tobb otletem nekem sincs sajna. Mar csak egy linket tudok felajanlani egy ipfilter gyarto scripthez:

http://roq.com/bsd/index.html

Szerintem ipfw-t es ipf-et ne hasznalj egyszerre. Minek ket kulon csomagszuro? Ugyan elfutnak egymas mellett de csak bonyolitod vele a dolgod. Valaszd ki az egyiket (en az ipf-et javaslom mert utana nem lesz gondod Solarison meg HPUX-on sem ahol szinten ipf csomagszurest lehet hasznalni), nezegesd meg az example fajlokat az /usr/share alatt, ertsd meg, tanuld meg es jolesz :)

Hát igen, többen akartak lebeszélni a dologról, de azért szeretném így, mert ha az egyiket kilövik, akkor még mindig ott a másik, meg ipf egyszerűbbnek tűnik nekem, viszont ipfw alatt meg ott van pl a dummynetes bw control, ami ipf alatt nincs. Amugy asszem pont ipf-el van gondom. Megcsináltam egy rules fájlt, ahogyan a handbook írta. Az rc.conf-ban ez van:

ipfilter_enable="NO"
ipfilter_program="/sbin/ipf"
ipfilter_rules="/etc/ipf.rules"

ipmon_enable="yes"
ipmon_program="/sbin/ipmon"
ipmon_flags="-D /var/log/ipflog"

Az ip.rules pedig a handbook logikája szerint így néz ki:

/sbin/ipf -Fa -f - << EOF

pass in all
pass out all

EOF

Ezt csak ilyen tesztelésre csináltam, hogy működik-e a deny policy mellett, de vmi parse errort ír. Aztán az AbsoluteBSD könyv szerinti módszerrel megcsináltam, hogy az ipf.rules csak ennyi volt:

/sbin/ipf -Fa
/sbin/ipf -f /etc/ipf.conf

ipf.conf pedig:

pass in all
pass out all

Ezek után megint parse error. Az ipfw nem errorozik, ahhoz a beállítások rc.conf-ban:

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_script="/etc/ipfw.rules"

ipfw.rules pedig:

ipfw -q -f flush
cmd="ipfw -q add"

$cmd 00010 allow ip from any to any

Szóval úgy gondolom az ipf a ludas, nem akartam plusz kétszer kernelt fordítani és megnézni őket külön. :? [/code]

Elírtam persze, ipfilter_enable="YES" volt, csak utána tiltottam le, hogy nem ment. Még így sem tud senki tanácsolni vmit? :? Akkor asszem le kell mondanom az ipf-ről :(

A pf-et nem veszed be a buliba harmadiknak? :)
Hasznalj pf-et, ott ervenyesul mindketto jo tulajdonsaga, az ipf szeru konfig + kernel szintu natolas, es shape-elni is tudsz. Ja es ez fejlodik jelenleg a legjobban.
Meg meg valami: tobb ertelme van egy packet filtert hasznalni, es tobb alkalmazas proxy-t, mint tobb packet filtert...

[quote:3745323e6c="Beanie"]
ipfilter_enable="NO"
ipfilter_program="/sbin/ipf"
ipfilter_rules="/etc/ipf.rules"

ipmon_enable="yes"
ipmon_program="/sbin/ipmon"
ipmon_flags="-D /var/log/ipflog"

Az ip.rules pedig a handbook logikája szerint így néz ki:

/sbin/ipf -Fa -f - << EOF

pass in all
pass out all

EOF

Ezt csak ilyen tesztelésre csináltam, hogy működik-e a deny policy mellett, de vmi parse errort ír.

Ha jol hiszem, akkor ezzel az a baj, hogy ha az rc.conf-ban adod meg az ipfilter rulesetjet, akkor annak nem ilyen formaban kell lennie. Nem kell bele a /sbin/ipf -Fa -f - << EOF sor. Meg persze az EOF sem a vegere. Szerintem :)

Egyebkent meg tenyleg felesleges egyszerre ketfelet hasznalni. Hasznalj egyet, ismerd meg es akkor jo lesz neked.

[quote:1d92998f17="bekeny"]A pf-et nem veszed be a buliba harmadiknak? :)
Hasznalj pf-et, ott ervenyesul mindketto jo tulajdonsaga, az ipf szeru konfig + kernel szintu natolas, es shape-elni is tudsz. Ja es ez fejlodik jelenleg a legjobban.
Meg meg valami: tobb ertelme van egy packet filtert hasznalni, es tobb alkalmazas proxy-t, mint tobb packet filtert...

Mondassz valamit :D Na, jó, viccet félretéve, :) pf-et annyira sem ismerem mint a másik kettőt.

[quote:1d92998f17="shan"]Ha jol hiszem, akkor ezzel az a baj, hogy ha az rc.conf-ban adod meg az ipfilter rulesetjet, akkor annak nem ilyen formaban kell lennie. Nem kell bele a /sbin/ipf -Fa -f - << EOF sor. Meg persze az EOF sem a vegere. Szerintem Smile

Erre én is gondoltam, de a handbookban pont így van ahogy csináltam. Kipróbáltm, hogy csak felsorolom a szabályokat és azt töltöm be. De se az rc.conf, sem az ipf parancssorból futtatva nem töltötte be. Amúgy ha választani kéne ipf és ipfw közt, akkor ipf-et választanám a fenti érvek miatt, de az a baj, hogy a kettő közül ugy tűnik pont az nem megy.

[quote:ac557da8f2="shan"][quote:ac557da8f2="Beanie"]Jah, és persze így sem megy semmi. :(
Már nagyon kezdek bekattanni miatta.

Es ha az out rule-okat igy irod?

[code:1:ac557da8f2]
pass out quick on re0 proto tcp from any to any keep state
pass out quick on re0 proto udp from any to any keep state
pass out quick on re0 proto icmp from any to any keep state
block out quick on re0 all
[/code:1:ac557da8f2]

Tehat ahol neked a pass out quick all van, oda biggyeszd be ezt a negy sort. Tobb otletem nekem sincs sajna. Mar csak egy linket tudok felajanlani egy ipfilter gyarto scripthez:

http://roq.com/bsd/index.html

Nagyon köszi, megy. :D Úgy ahogy írtad, ez kellett neki ahelyett az egy sor helyett. Mellette fenn van már ipfw is, az is megy, vígan fut mindkettő. :D

[quote:8eadd193b6="Beanie"]
Erre én is gondoltam, de a handbookban pont így van ahogy csináltam. Kipróbáltm, hogy csak felsorolom a szabályokat és azt töltöm be. De se az rc.conf, sem az ipf parancssorból futtatva nem töltötte be. Amúgy ha választani kéne ipf és ipfw közt, akkor ipf-et választanám a fenti érvek miatt, de az a baj, hogy a kettő közül ugy tűnik pont az nem megy.

Leirom nalam, hogy mukodik az ipfilter, hatha segit:

rc.conf-ban:

gateway_enable="YES" #cimfordito gep
ipfilter_enable="YES"
ipnat_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipmon_enable="YES"
ipmon_flags="-Dv -P /var/run/ipmon.pid /var/log/firewall.log"
ipfs_enable="YES"
icmp_drop_redirects="YES"

Ezek azok a reszek az rc.conf-bol, amik a tuzfallal kapcsolatosak.

Az ipf.rules file-ban pedig soronkent egy-egy ipf rule. A rule file vegere ne felejtsd el bedobni ezt a kettot a loopback miatt:

pass in quick on lo0 all
pass out quick on lo0 all

Nalam igy teljesen jol mukodik. Van meg egy ipfrestart script, amit akkor hasznalok, ha valtoztatok valamit, es ujra be akarom tolteni a szabalyokat:

/sbin/ipf -Fa -f /etc/ipf.rules
ipnat -CF -f /etc/ipnat.rules

Ennyi lenne.

Köszi így megy is, a gateway_enable, meg az ipnat_enable meg az ipfs_enable nélkül természetesen, mert nekem nem kell nat csak sima tűzfal. A dhcp fel is veszi az IP címet, csak utána az sshd nem indul. Csak megjelenik a Starting sshd felirat és vár... amíg ctrl-c -t nem nyomok neki. Meg a dns sem megy. Bemásolom a rulesetemet, hátha tudtok segíteni. Én abszolút nem értem mért van, hiszen iptables-ben egy ennek megfelelő szabályokkal ment minden tökéletesen.

[code:1:6983875702]
block in log quick from any to any with ipopt
block in log quick proto tcp from any to any with short
pass in quick on lo0 all
pass out quick all
pass in quick proto udp from any to any port = 68 keep state
pass in quick proto tcp/udp from any to any port = 22 keep state
pass in quick proto udp from any to any port = 53 keep state
[/code:1:6983875702]

És ezután jön az smtp, stb pass szabálya. Ez amúgy egy szerver lesz, csak most egy otthoni kábelnetről fut tesztüzemben ezért kell dhcp.[/code]

Probald ki igy: (nem tudom milyen halokartyad van, ezert most realtekkel irom le)

[code:1:f7372c79df]

#kifele nem korlatozunk (lehetne)
pass out quick on rl0 proto tcp from any to any keep state
pass out quick on rl0 proto udp from any to any keep state
pass out quick on rl0 proto icmp from any to any keep state
block out quick on rl0 all

#befele csak az adott portokat engedjuk
pass in quick on rl0 proto tcp/udp from any to any port = 53 keep state keep frags
pass in quick on rl0 proto tcp from any to any port = 22 flags S keep state
#ide a tobbi befele jovo rule (smtp, web, stb.)

#itt meg trukkozunk egy kicsit, hogy az egyeb tcp, udp csomagokat port unreacheble uzenettel dobja el, es logolja oket
block return-rst in log quick on rl0 proto tcp from any to any
block return-icmp-as-dest(port-unr) in log quick on rl0 proto udp from any to any
block in quick on rl0 all

#es vegul a loppback:
pass in quick on lo0 all
pass out quick on lo0 all

[/code:1:f7372c79df]

Szerintem igy jonak kell lennie...

[quote:edb463b208="Beanie"] A dhcp fel is veszi az IP címet, csak utána az sshd nem indul. Csak megjelenik a Starting sshd felirat és vár... amíg ctrl-c -t nem nyomok neki. Meg a dns sem megy.

Ez az "áll és vár" , tipikusan névfeloldási probléma. Mi lenne, ha egyszer hagynád mondjuk 5-10 percig futni (névfeloldásonként asszem 75 sec a timeout), és ha olyankor továbbmegy, akkor ebben az irányban érdemes továbbmenni, azaz először azt jól belőni. Mellesleg ha én nem értenék a csomagszűrőm beállításához, akkor először megcsinálnám egy oly szabályhalmazzal, ami csak egy darab mindent szabad, majd egy daram mindent tilt szabályból állna, és utána egyesével finomítanám - persze értelmesen, tehát ipf-nél pl.
pass in quick from any to any
pass out quick from any to any
block in quick from any to any
block out quick from any to any
stílusban (mert ugye ha elhagyom a quick -et, akkor azipf-nél az utolsó érvényesül, ellentétben az ipfw -vel)

(pl. a finomítást úgy értem, hogy akkor amikor ez már megy, akor _elé_ szúrnám a:
pass in quick on lo0 from any to any
pass out ...
sorokat, ha így is megy (ipfstat kimenetében az látszik, hogy ezekhez a szabályokhoz tartozó számlálók nőnek), akkor lehet a lo0 -s és a pass in quick _közé_ szúrogatni szépen egyesével a megfelelő szabályokat. (dns, dhcp, mittudoménmi). Persze ehhez mindhez nem kell mindig újrabutulni, futtában is lehet egy szabályt egy adott helyre berakni. (tipp: szabály előtt @1 - ez lesz az első szabály)

Igen, úgy tűnik tényleg névfeloldási probléma van. Shan, köszi a példát, félig működik. Ezt csináltam a példád alapján:

[code:1:679163240f]
pass in quick on rl0 proto udp from any to any port = 68 keep state
pass in quick proto tcp/udp from any to any port = 53 keep state keep frags
pass in quick on rl0 proto tcp from any to any port = 22 flags S keep state
pass in quick on rl0 proto tcp from any to any port = 25 keep state
pass in quick on rl0 proto tcp from any to any port = 21 keep state
pass in quick on rl0 proto tcp from any to any port = 20 keep state
pass in quick on rl0 proto tcp from any to any port = 80 keep state

block return-rst in log quick on rl0 proto tcp from any to any
block return-icmp-as-dest(port-unr) in log quick on rl0 proto udp from any to any
block in quick on rl0 all

pass in quick on lo0 all
pass out quick on lo0 all
[/code:1:679163240f]

De sajnos ezzel a névszerver nem ment, sem a dhcp által kiosztott, sem a local. A local névszerver ilyen hibaüziket írt a /var/log/messages -be:

Jan 16 13:59:35 server named[1028]: starting BIND 9.3.0 -u named -t /usr/local/named -c /etc/named.conf
Jan 16 13:59:35 server named[1028]: could not listen on UDP socket: address in use
Jan 16 13:59:35 server named[1028]: creating IPv4 interface re0 failed; interface ignored
Jan 16 13:59:35 server named[1028]: could not listen on UDP socket: address in use
Jan 16 13:59:35 server named[1028]: creating IPv4 interface lo0 failed; interface ignored
Jan 16 13:59:35 server named[1028]: not listening on any interfaces
Jan 16 13:59:35 server named[1028]: /etc/named.conf:14: couldn't add command channel 127.0.0.1#953: address in
use
Jan 16 13:59:35 server named[1028]: could not listen on UDP socket: permission denied
Jan 16 13:59:35 server named[1028]: creating IPv4 interface re0 failed; interface ignored
Jan 16 13:59:35 server named[1028]: could not listen on UDP socket: permission denied
Jan 16 13:59:35 server named[1028]: creating IPv4 interface lo0 failed; interface ignored

Az rndc még nem is baj, hogy nem megy, de egyáltalán nem listenel. Zahy, igen, én is fokozatosan kezdtem próbálgatni, dhcp már oké, arra rájöttem, hogy megy, ki is osztja az ip-t meg a nameservereket beírja resolv.conf-ba, de egyszerűen ezzel a dns-el nem bírok megbirkózni. Amugy már az ssh is elindul rendesen, csak először flag S nélkül csináltam, lehet azért.[/code]

Hali,

most ismerkedem a FreeBSD csomagszűrőivel, az ipf és ipfw porgramokat szeretném használni együtt, deny policyval. A szervert minél előbb meg kéne csinálnom helyben, utána távolról ráérek szarakodni a beállításokkal, csak egyelőre nagyon nem vágom ezeket a filtereket pedig elolvastam a doksijukat rendesen. Tudnátok nekem valami olyan példa ipf.rules és ipfw.rules fájlt gyártani, ami mindent enged? Csak hogy ott tudjam hagyni a gépet az új kernellel, amibe bele van forgatva az ipf és ipfw. Tudom, hogy modulból is lehet, de bele szeretném rakni.

[quote:137f25d107="Beanie"]Igen, úgy tűnik tényleg névfeloldási probléma van. Shan, köszi a példát, félig működik. Ezt csináltam a példád alapján:

[code:1:137f25d107]
pass in quick on rl0 proto udp from any to any port = 68 keep state
pass in quick proto tcp/udp from any to any port = 53 keep state keep frags
pass in quick on rl0 proto tcp from any to any port = 22 flags S keep state
pass in quick on rl0 proto tcp from any to any port = 25 keep state
pass in quick on rl0 proto tcp from any to any port = 21 keep state
pass in quick on rl0 proto tcp from any to any port = 20 keep state
pass in quick on rl0 proto tcp from any to any port = 80 keep state

block return-rst in log quick on rl0 proto tcp from any to any
block return-icmp-as-dest(port-unr) in log quick on rl0 proto udp from any to any
block in quick on rl0 all

pass in quick on lo0 all
pass out quick on lo0 all
[/code:1:137f25d107]

De sajnos ezzel a névszerver nem ment, sem a dhcp által kiosztott, sem a local.

Nem latok a konfigodban pass out sorokat az rl0-n. Nem lehet, hogy ez a baj?

Ja, es a /var/log/messages reszlet alapjan az interfaced neve nem rl0, hanem re0 :)

[quote:c1902d0d56="shan"]Ja, es a /var/log/messages reszlet alapjan az interfaced neve nem rl0, hanem re0 :)

Bahh, hogy mekkora állat vagyok. :lol:
Itthon rl0 az interfész, és úgy emlékeztem, hogy a szerveren is. Na, most akkor kipróbálom...

Nah, megcsináltam, de megint kizártam magam ssh-n, utána nem tudtam visszamenni. Jah, az out-ra is volt amugy pass csak azt előbb kifelejtettem, most a teljes ruleset így néz ki:

[code:1:6d061419cb]server# less /etc/ipf.rules2
pass out quick all
#pass in quick all

pass in quick on re0 proto udp from any to any port = 68 keep state
pass in quick on re0 proto tcp/udp from any to any port = 53 keep state keep frags
pass in quick on re0 proto tcp/udp from any to any port = 42 keep state keep frags
pass in quick on re0 proto tcp from any to any port = 22 flags S keep state
pass in quick on re0 proto tcp from any to any port = 25 keep state
pass in quick on re0 proto tcp from any to any port = 21 keep state
pass in quick on re0 proto tcp from any to any port = 20 keep state
pass in quick on re0 proto tcp from any to any port = 80 keep state

#block return-rst in log quick on re0 proto tcp from any to any
#block return-icmp-as-dest(port-unr) in log quick on re0 proto udp from any to any
#block in quick on re0 all

pass in quick on lo0 all
pass out quick on lo0 all
[/code:1:6d061419cb]

Jah, és persze így sem megy semmi. :(
Már nagyon kezdek bekattanni miatta.