{"id":294,"date":"2012-05-03T10:26:00","date_gmt":"2012-05-03T08:26:00","guid":{"rendered":"http:\/\/www.opencomp.hu\/?p=294"},"modified":"2020-03-25T10:26:39","modified_gmt":"2020-03-25T09:26:39","slug":"openbsd-tuzfal-pf-ii-resz-nat-es-redirection","status":"publish","type":"post","link":"https:\/\/www.opencomp.hu\/?p=294","title":{"rendered":"OpenBSD t\u0171zfal (pf) \u2013 II. r\u00e9sz \u2013 NAT \u00e9s redirection"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Az OpenBSD&nbsp;<a href=\"http:\/\/blog.xorp.hu\/openbsd-packet-filter\">pf-r\u0151l sz\u00f3l\u00f3 els\u0151 \u00edr\u00e1sban<\/a>&nbsp;a pf r\u00f6vid t\u00f6rt\u00e9net\u00e9t, alapjait, a csomagsz\u0171r\u00e9st igyekeztem bemutatni. Eml\u00edttem azonban m\u00e1r az elej\u00e9n is az ismertet\u0151nek, hogy enn\u00e9l j\u00f3val t\u00f6bbre is k\u00e9pes a pf. Ha manaps\u00e1g t\u0171zfalr\u00f3l besz\u00e9l\u00fcnk, akkor ha csak a home-kateg\u00f3r\u00e1s routereket vessz\u00fck is alapul, biztosak lehet\u00fcnk abban, hogy rendelkezik a h\u00e1l\u00f3zati c\u00edmford\u00edt\u00e1s \u00e9s a port\u00e1t\u00edr\u00e1ny\u00edt\u00e1s (Network Address Translation (NAT) \u00e9s port forwarding) k\u00e9pess\u00e9g\u00e9vel. Nincs ez m\u00e1sk\u00e9pp a pf eset\u00e9ben sem. N\u00e9zz\u00fck meg, hogyan t\u00f6rt\u00e9nik ez \u2013 pf m\u00f3dra.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OpenBSD t\u0171zfal (pf) \u2013 II. r\u00e9sz \u2013 NAT \u00e9s redirection<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A jobb meg\u00e9rt\u00e9s kedv\u00e9\u00e9rt itt m\u00e1r musz\u00e1j volt rajzolnom egy nagyon szimpla topol\u00f3gi\u00e1t.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/Topo.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/Topo-300x141.jpg\" alt=\"\" class=\"wp-image-7087\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">PC<br>Helyi h\u00e1l\u00f3zati kapcsolat: IP: 10.0.0.2\/24 Gateway: 10.0.0.1 DNS: 192.168.55.1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenBSD:<br>em0:&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;192.168.55.13\/24<br>em1:&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;10.0.0.1\/24<br>Gateway:&nbsp;&nbsp; &nbsp;192.168.55.1<br>DNS: &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;192.168.55.1<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00edmford\u00edt\u00e1s (NAT):<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e1tjuk az \u00e1br\u00e1n, hogy a PC nev\u0171 host az OpenBSD-t t\u0171zfalat haszn\u00e1lja gatewayk\u00e9nt. Ahhoz, hogy ez a konfigur\u00e1ci\u00f3 m\u0171k\u00f6d\u0151 k\u00e9pes legyen, a pf konfigj\u00e1ban sz\u00fcks\u00e9g lesz n\u00e9mi m\u00f3dos\u00edt\u00e1sra. Ha az alapkonfigur\u00e1ci\u00f3t haszn\u00e1ljuk a pf-ben, akkor a PC nem fog tudni kommunik\u00e1lni m\u00e1s h\u00e1l\u00f3zatokkal, nem fog \u201ekil\u00e1tni\u201d az internetre sem. Ezt le is ellen\u0151rizt\u00fck a PC-r\u0151l:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/11.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/11-300x152.jpg\" alt=\"\" class=\"wp-image-7088\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Sem n\u00e9vfelold\u00e1sunk nincs (hiszen a DNS szerver is m\u00e1s h\u00e1l\u00f3zaton van a PC sz\u00e1m\u00e1ra), sem IP-t pingelve nincs v\u00e1laszunk. Azt viszont l\u00e1tjuk, hogy a gatewayunk pingelhet\u0151. Akkor a probl\u00e9ma oka nagy val\u00f3sz\u00edn\u0171s\u00e9ggel ott keresend\u0151 (fogadjuk el, hogy PC munka\u00e1llom\u00e1s h\u00e1l\u00f3zati konfigur\u00e1ci\u00f3ja helyes).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A c\u00e9lunk el\u00e9r\u00e9s\u00e9hez OpenBSD t\u0171zfalon sz\u00fcks\u00e9g lesz n\u00e9h\u00e1ny v\u00e1ltoztat\u00e1sra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1., a kernel IP stackj\u00e9nek meg kell mondanunk, hogy enged\u00e9lyezze az interf\u00e9szek k\u00f6z\u00f6tt a csomagtov\u00e1bb\u00edt\u00e1st<br>2., a pf&nbsp; konfigur\u00e1ci\u00f3j\u00e1ban l\u00e9tre kell hoznunk egy NAT szab\u00e1lyt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e9zz\u00fck, mik lesznek ezek!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># sysctl net.inet.ip.forwarding=1<br># sysctl net.inet6.ip6.forwarding=1 (ezt csak akkor, ha IPv6-ot is haszn\u00e1lunk)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/21.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/21.jpg\" alt=\"\" class=\"wp-image-7089\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ha azt szeretn\u00e9nk, hogy ez rendszerind\u00edt\u00e1s ut\u00e1n automatikusan megt\u00f6rt\u00e9njen, akkor tegy\u00fck az al\u00e1bbi sort az \/etc\/sysctl.conf fileba:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">net.inet.ip.forwarding=1<br>net.inet6.ip6.forwarding=1 (csak ha IPv6-ot is haszn\u00e1lunk)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pf konfigf\u00e1jlj\u00e1ba pedig az al\u00e1bbi sort:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pass out on em0 from 10.0.0.0\/24 to any nat-to 192.168.55.13<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ments\u00fck el a konfigur\u00e1ci\u00f3s f\u00e1jlt, \u00e9s t\u00f6lts\u00fck \u00fajra a t\u0171zfal konfigur\u00e1ci\u00f3t!<br># pfctl \u2013Fa \u2013f \/etc\/pf.conf<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ha ezt megtett\u00fck, akkor pr\u00f3b\u00e1ljuk ki \u00fajra a PC nev\u0171 hostunkr\u00f3l, hogy tudunk-e az internettel kommunik\u00e1lni!<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/31.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/31-300x84.jpg\" alt=\"\" class=\"wp-image-7090\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A sz\u00fcks\u00e9ges m\u00f3dos\u00edt\u00e1sok ut\u00e1n el\u00e9rt\u00fck, amit szerett\u00fcnk volna. Egy p\u00e1r sz\u00f3 magyar\u00e1zat tal\u00e1n sz\u00fcks\u00e9ges lehet a pf-ben t\u00f6rt\u00e9nt m\u00f3dos\u00edt\u00e1shoz:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pass out on em0 from 10.0.0.0\/24 to any nat-to 192.168.55.13<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A fenti sor egy NAT, m\u00e9gpedig egy \u00fagynevezett source-NAT szab\u00e1ly. Arra utas\u00edtja a t\u0171zfalunkat, hogy az \u00f6sszes csomagnak, mely az em0 interface-n hagyja el a t\u0171zfalat \u00e9s a 10.0.0.0\/24-es h\u00e1l\u00f3zatb\u00f3l \u00e9rkezik \u00e9s a c\u00e9lja ak\u00e1rmi, \u00edrja \u00e1t az IP fejl\u00e9c\u00e9t, \u00e9s forr\u00e1s IP-k\u00e9nt a saj\u00e1t, em0 interface-\u00e9nek az IP-j\u00e9t \u00edrja bele (192.168.55.13). Term\u00e9szetesen, ahhoz, hogy a kommunik\u00e1ci\u00f3 visszir\u00e1nyban is tudjon m\u0171k\u00f6dni, a pf-nek egy \u00e1llapott\u00e1bl\u00e1t kell fenntartani, amelyben a forr\u00e1s-c\u00e9l IP- \u00e9s port hozz\u00e1rendel\u00e9sek helyezkednek el.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Az&nbsp;<a href=\"http:\/\/www.index.hu\/\">www.index.hu<\/a>&nbsp;folyamatos pingje eset\u00e9n valami ilyesmit fogunk l\u00e1tni ebben az \u00e1llapott\u00e1bl\u00e1ban:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/41.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/41-300x25.jpg\" alt=\"\" class=\"wp-image-7091\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00f3l l\u00e1tszik benne, hogy a kommunik\u00e1ci\u00f3 a 192.168.55.13 \u00e9s a 217.20.130.97 k\u00f6z\u00f6tt zajlik, de a z\u00e1r\u00f3jelek k\u00f6z\u00f6tt ott l\u00e1tjuk az eredeti&nbsp; forr\u00e1s IP-t, ami a val\u00f3s IP-je a PC nev\u0171 hostnak.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Port-forwarding (redirection):<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e9zz\u00fck most egy p\u00e9ld\u00e1t m\u00e9g az \u00e1tir\u00e1ny\u00edt\u00e1sokra is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A teszt kedv\u00e9\u00e9rt \u00e9n most az OpenBSD-re felh\u00faztam egy abszol\u00fat alapkonfigur\u00e1ci\u00f3s&nbsp; webszervert (Apache). Egy b\u00f6ng\u00e9sz\u0151be beg\u00e9pelve az OpenBSD em1 interface-nek az IP-j\u00e9t, ezt fogjuk l\u00e1tni:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/51.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/51-300x137.jpg\" alt=\"\" class=\"wp-image-7092\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e9zz\u00fcnk meg egy redirection-t a pf-fel. Ehhez a k\u00f6vetkez\u0151 sort kell besz\u00farnunk a pf konfigur\u00e1ci\u00f3s f\u00e1jlj\u00e1ba:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pass in on em1 proto tcp from 10.0.0.0\/24 to any port 80 rdr-to 10.0.0.1 port 80<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e9zz\u00fck, ha az el\u0151bbi p\u00e9ld\u00e1ban szerepl\u0151 NAT szab\u00e1lyunkat is felhaszn\u00e1ljuk, mit l\u00e1tunk?<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/6.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/6-300x93.jpg\" alt=\"\" class=\"wp-image-7093\"\/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ha b\u00e1rmilyen weboldalt pr\u00f3b\u00e1lunk megnyitni, a saj\u00e1t OpenBSD-s webszerver\u00fcnk kezd\u0151doldala t\u00f6lt\u0151dik be. Hogy t\u00f6rt\u00e9nik ez?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A fenti sor egy NAT, m\u00e9gpedig egy \u00fagynevezett destination-NAT szab\u00e1ly: ennek magyar\u00e1zata alapj\u00e1n, ha az em1-es interf\u00e9sz\u00fcnk\u00f6n (10.0.0.1) a 10.0.0.0\/24-es h\u00e1l\u00f3zatb\u00f3l ha b\u00e1rmilyen 80-as tcp portra igyekv\u0151 csomag \u00e9rkezik,&nbsp; azt \u00e1tir\u00e1ny\u00edtja a 10.0.0.1 IP 80-as portj\u00e1ra. Ez a konfig tipikus p\u00e9ld\u00e1ja annak, amikor pl. transzparens Squid proxyt \u00e9p\u00edt\u00fcnk; ekkor az \u00f6sszes kimen\u0151 80-as c\u00e9lport\u00fa forgalom a helyi proxyszerverre lesz ir\u00e1ny\u00edtva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e9gezet\u00fcl n\u00e9zz\u00fck m\u00e9g meg az \u00e1ltal\u00e1nos &nbsp;formul\u00e1j\u00e1t &nbsp;egy NAT sornak a pf.conf f\u00e1jlban:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>match out on&nbsp;<em>interface<\/em>&nbsp;[<em>af<\/em>] from&nbsp;<em>src_addr<\/em>&nbsp;to&nbsp;<em>dst_addr<\/em>&nbsp;nat-to&nbsp;<em>ext_addr<\/em>&nbsp;[<em>pool_type<\/em>] [static-port]<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Itt ha egy csomag bej\u00e1rja a szab\u00e1lyokat \u00e9s ha &nbsp;egyez\u00e9s van egy match szab\u00e1llyal, minden opcion\u00e1lis param\u00e9ter ami az adott szab\u00e1lyban van, megjegyz\u0151dik k\u00e9s\u0151bbi felhaszn\u00e1l\u00e1sra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pass out [log] on&nbsp;<em>interface<\/em>&nbsp;[<em>af<\/em>] [proto&nbsp;<em>protocol]<\/em>&nbsp;from&nbsp;<em>ext_addr<\/em>&nbsp;[port&nbsp;<em>src_port<\/em>] to&nbsp;<em>dst_addr<\/em>&nbsp;[port&nbsp;<em>dst_port<\/em>]<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ez a szab\u00e1ly engedi a csomagok tov\u00e1bb\u00edt\u00e1s\u00e1t. Ha a csomag el\u0151z\u0151leg egy match szab\u00e1lyra illeszkedik, ahol param\u00e9terek voltak specifik\u00e1lva, ezek alkalmazva lesznek ezen a csomagon. A pass szab\u00e1lynak lehetnek saj\u00e1t, egyedi param\u00e9terei; ezek els\u0151bbs\u00e9get fognak \u00e9lvezni a match szab\u00e1lyban specifik\u00e1ltakkal szemben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Megjegyzend\u0151, hogy az OpenBSD 5.x verzi\u00f3j\u00e1ban a szab\u00e1lyok szintaktik\u00e1j\u00e1t \u00fajragondolt\u00e1k, \u00e9s a r\u00e9gebbi nat vagy rdr kezdet\u0171 szab\u00e1lyok megsz\u0171ntek. A r\u00e9gi sor \u00edgy n\u00e9zett volna ki:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>nat on em0 from 10.0.0.0\/24 to any -&gt; 192.168.55.13<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00edg az \u00faj:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pass out on em0 from 10.0.0.0\/24 to any nat-to 192.168.55.13<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00d6sszegz\u00e9s:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ak\u00e1rcsak a pf t\u00f6bbi r\u00e9sze, a NAT modul is egy\u00e9rtelm\u0171 be\u00e1ll\u00edt\u00e1si opci\u00f3kkal rendelkezik. Az el\u0151z\u0151 r\u00e9szben megismert makr\u00f3k, list\u00e1k term\u00e9szetesen itt is alkalmazhat\u00f3k. A konfigur\u00e1ci\u00f3s f\u00e1jl is ugyanaz, mint a csomagsz\u0171r\u0151 r\u00e9szben t\u00e1rgyalt. A k\u00f6vetkez\u0151 (\u00e9s egyben utols\u00f3) r\u00e9szben g\u00f3rcs\u0151 al\u00e1 vessz\u00fck a pf traffic shaping lehet\u0151s\u00e9geit, \u00e9s m\u00e9g egy keveset a pf extr\u00e1i k\u00f6z\u00fcl.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Az OpenBSD&nbsp;pf-r\u0151l sz\u00f3l\u00f3 els\u0151 \u00edr\u00e1sban&nbsp;a pf r\u00f6vid t\u00f6rt\u00e9net\u00e9t, alapjait, a csomagsz\u0171r\u00e9st igyekeztem bemutatni. Eml\u00edttem azonban m\u00e1r az elej\u00e9n is az ismertet\u0151nek, hogy enn\u00e9l j\u00f3val t\u00f6bbre is k\u00e9pes a pf. Ha manaps\u00e1g t\u0171zfalr\u00f3l besz\u00e9l\u00fcnk, akkor ha csak a home-kateg\u00f3r\u00e1s routereket vessz\u00fck is alapul, biztosak lehet\u00fcnk abban, hogy rendelkezik a h\u00e1l\u00f3zati c\u00edmford\u00edt\u00e1s \u00e9s a port\u00e1t\u00edr\u00e1ny\u00edt\u00e1s (Network Address &hellip; <a href=\"https:\/\/www.opencomp.hu\/?p=294\" class=\"more-link\"><span class=\"screen-reader-text\">&#8222;OpenBSD t\u0171zfal (pf) \u2013 II. r\u00e9sz \u2013 NAT \u00e9s redirection&#8221;<\/span> b\u0151vebben<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-294","post","type-post","status-publish","format-standard","hentry","category-blogpost"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=294"}],"version-history":[{"count":1,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/294\/revisions"}],"predecessor-version":[{"id":295,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/294\/revisions\/295"}],"wp:attachment":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}