User Tools

Site Tools


pppoe_ruter_i_firewall

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pppoe_ruter_i_firewall [2017/04/28 10:25] (current)
Line 1: Line 1:
 +\\
 +\\
  
 +|Vazi za: OpenBSD Version 3.9| \\
 +|Vazi za: OpenBSD Version 4.0 |
 +
 +====== Uvod ======
 + 
 +Ovaj clanak ce vam pomoci da konfigurisete vas OpenBSD tako da on bude vas mrezni gateway / firewall / NAT ruter koristeci PPPOE konekciju do vaseg ISP. Moze se koristiti kao vodic i ne treba se citati bez osnovnog znanja o TCP/IP, i ne treba da zameni citanje OpenBSD PF prirucnika i odgovarajucih man stranica. ​
 +Za pocetak pogledajte sledece man stranice. Ne morate da razumete sve u ovim man stranicama ali bi trebalo da ih procitate tako da bi znali gde da trazite pomoc kasnije. ​
 +
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=pppoe&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|pppoe(4)]]– podrazumevana man stranica je pppoe(8) i to NIJE ova. Treba da pokrenete //man 4 pppoe//​. ​
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=hostname.if&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|hostname.if(5) ]]
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=netstart&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|netstart(8)]] ​
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=netstart&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|pf.conf(5)]] ​
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=pfctl&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|pfctl(8) ]]
 +  *[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=dhclient&​apropos=0&​sektion=0&​manpath=OpenBSD+4.0&​arch=i386&​format=html%7C|dhclient(8) ]]
 +
 +Ovaj clanak je uglavnom kompletan ali neki delovi nedostaju. Ocekujte promene dok je rad na njemu u toku tako da dostigne standarde prave openbsd dokumentacije. ​
 +
 +====== Konvencije ======
 + 
 +Da bi ovaj clanak ucinili citljivijim koristi ce mo fxp0 i rl0 kao imena za unutrasnji i spoljasnji interfejs. Naravno ovo trebate promeniti tako da odgovara vasim potrebama. ​
 +
 +  *fxp0: Unutrasnji mrezni interfejs, koji se koristi za lokalnu mrezu. ​
 +  *rl0: Ovo je pppoe strana mrezne konekcije. Ovo je javna rutabilna IP adresa vaseg firewall-a. ​
 +
 +====== Modifikacije Kernela ======
 + 
 +Prva stvar koju treba da uradimo je da omogucimo usmeravanje paketa izmedju interfejsa, tako da ce mo modifikovati /​etc/​sysctl.conf tako sto cemo ukloniti komentar sa net.inet.ip.forwarding=1 linije tako da izgleda ovako: ​
 +
 +  Konfiguracioni fajl: /​etc/​sysctl.conf ​
 +  ​
 +  net.inet.ip.forwarding=1
 +
 +Trebamo modifikovati taj fajl tako da se promene automatski primene prilikom startovanja sistema. Da promenite trenutnu vrednost bez restartovanja sistema, pokrenite sledecu komandu: ​
 +
 +  Komanda: sysctl net forwarding ​
 +  ​
 +  # sysctl net.inet.ip.forwarding=1
 +
 +====== Konfigurisanje spoljnjeg interfejsa ======
 + 
 +===== PPPoE Internet =====
 + 
 +[[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=pppoe&​sektion=4|pppoe (4)]] se nalazi u kernelu i dosao je u OpenBSD 3.7. Trebate da kreirate fajl /​etc/​hostname.pppoe0 i ubacite odgovarajuca podesavanja. Sintaksa i metoda koriscenja se promenila u pppoe(4) izmedju OpenBSD 3.9 i 4.0. Pogledajte odgovarajuce sekcije za verziju koju koristite. Mozete odrediti IP (zamenite 0.0.0.0 sa IP adresom ako imate staticku adresu). Promenite USERNAME (moze biti vasa email adresa na nalogu) i PASSWORD sa vasim korisnickim imenom i lozinkom. ​
 +
 +==== OpenBSD 3.9 ====
 + 
 +U OpenBSD 3.9, upravljanje pppoe tunelom je moguce pomocu korisnickog alata [[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=spppcontrol&​apropos=0&​sektion=0&​manpath=OpenBSD+3.9&​arch=i386&​format=html|spppcontrol]]. ​
 +
 +  Konfigurcioni Fajl: /​etc/​hostname.pppoe0 ​
 +  ​
 +  pppoedev rl0
 +  !/​sbin/​ifconfig rl0 up
 +  !/​usr/​sbin/​spppcontrol \$if myauthproto=pap myauthname=USERNAME myauthkey=PASSWORD
 +  !/​sbin/​ifconfig \$if inet 0.0.0.0 0.0.0.1 netmask 0xffffffff
 +  !/​sbin/​route add default 0.0.0.1
 +  up
 +
 +==== OpenBSD 4.0 ====
 + 
 +Od OpenBSD 4.0 konfiguracija pppoe(4) ide preko regularnog ifconfig interfejsa. ​
 +
 +  Konfigurcioni Fajl: /​etc/​hostname.pppoe0 ​
 +  ​
 +  inet 0.0.0.0 255.255.255.255 NONE pppoedev rl0 \
 +  authproto pap authname USER authkey PASSWORD up
 +  dest 0.0.0.1
 +  !/​sbin/​route add default 0.0.0.1
 +
 +Fizicka konekcija do vaseg DSL modema ce koristiti cas spoljnji interfejs za kreiranje tunela. Stvarni internet saobracaj ce teci preko PPPOE tunela. Ovo je vazno ako koristite softver kao npr. pf, u suprotnom softver ce traziti pakete na pogresnom interfejsu. ​
 +Verovatno ce te zeleti da onemogucite pristup ovom fajlu zato sto sadrzi vasu PPPoE lozniku. Da bi ovo uradili: ​
 +
 +  Komanda: onemogucavanje pristupa za /​etc/​hostname.pppoe0 ​
 +  ​
 +  # chmod go-rwx /​etc/​hostname.pppoe0
 +
 +===== Konfigurisanje fizickog mreznog interfejsa =====
 + 
 +PPPOE tunnel ce se kreirati preko regularne ethernet konekcije do vaseg DSL modema. Fizicki interfejs nema IP adresu tako da sve sto trebamo da uradimo je da se postaramo da [[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=netstart&​apropos=0&​sektion=0&​manpath=OpenBSD+3.9&​arch=i386&​format=html%7C|netstart(8)]] oznaci interfejs kao up prilikom starta sistema.
 + 
 +  Komanda: Podesavanje /​etc/​hostname.rl0 ​
 +  ​
 +  echo up > /​etc/​hostname.rl0
 +
 +Prisustvo /etc/mygate fajla moze uticati na ruting tabelu. Ovaj fajl treba da bude prazan ili da ne postoji. ​
 +
 +  Komanda: uklonite /​etc/​mygate ​
 +  ​
 +  rm -f /etc/mygate
 +
 +===== Restartovanje svih interfejsa kako bi podigli pppoe =====
 + 
 +Mozete pokrenuti sh /​etc/​netstart kako bi vasa mrezna podesavanja bila ponovo ucitana. Neka vas pf firewall bude ugasen u suprotnom PPPoE paketi nece moci da prodju. ​
 +
 +  Komanda: Restart svih mreznih interfejsa ​
 +  ​
 +  # sh /​etc/​netstart
 +
 +====== Konfigurisanje unutrsnjeg interfejsa ======
 + 
 +Trebamo konfigurisati fajl kako bi sistem mogao da podigne interfejs sa IP adresom. Licno ja volim da moji serveri koriste vece brojeve a korisici manje brojeve. Najveci broj (254) je uvek moj gateway. Biram 10.0.0.0/8 zato sto ljudi koriste redje ovaj opseg – sto znaci manje sanse za preklapanje (Ako imate 192.168.0.16 lokalno i kacite se preko VPN na lokaciju koja ima tu IP adresu dodeljenu na nekom drugom mestu onda ce te naici na probleme). ​
 +
 +  Konfigurcioni Fajl: /​etc/​hostname.fxp0 ​
 +  ​
 +  inet 10.10.2.254 255.255.255.0 NONE
 +
 +====== DHCP Server ======
 + 
 +Zelimo DHCP server na nasem LAN-u tako da kompjuteri dobijaju IP adrese automatski, zato cemo ga sad konfigurisati. Postoje dva glavna fajla: [[http://​www.openbsd.org/​cgi-bin/​man.cgi?​query=dhcpd.conf&​apropos=0&​sektion=0&​manpath=OpenBSD+Current&​arch=i386&​format=html|/​etc/​dhcpd.conf (5)]] i /​etc/​dhcpd.interfaces. Oba su jednostavna za konfigurisanje. Promenite domain-name-servers kako bi odgovarali vasim dns serverima koje vam je dao vas ISP. 
 +<​code>​
 +Konfigurcioni Fajl: /​etc/​dhcpd.conf ​
 +
 +# See dhcpd.conf(5) and dhcpd(8) for more information.
 +
 +shared-network LOCAL-NET {
 +        option ​ domain-name "​mydomain.com";​
 +        option ​ domain-name-servers 151.164.1.8,​ 206.13.28.12;​
 +
 +        subnet 10.10.2.0 netmask 255.255.255.0 {
 +                option routers 10.10.2.254;​
 +                range 10.10.2.30 10.10.2.50;
 +        }
 +}
 +</​code>​
 +Ako zelite da odredjena MAC adresa uvek dobija istu IP adresu (ako npr imate forwarding pravilo) onda dodajte mapiranje hostova. Ispod sledi primer. Naravno zamenite //​somenamehere//​ sa imenom hosta kome zelite da dodelite tu adresu. Klijentima ime ne znaci mnogo zato ga postavite kako bi vama bio od koristi. Ovaj deo je pogodan za prosledjivanje portova, ali bi trebalo da odrzavate DHCP zbog jednostavnosti (na primer imate laptop koji nosite na posao i donosite kuci; koriscenjem DHCP vas zivot ce biti malo laksi tako sto ce te imati manje fajlova za konfigurisanje). ​
 +<​code>​
 +Konfigurcioni Fajl: /​etc/​dhcpd.conf ​
 +
 +host somenamehere {
 +        hardware ethernet 00:​0C:​8D:​16:​E0:​AD;​
 +        fixed-address 10.10.2.49;
 +}
 +</​code>​
 +Sto se tice /​etc/​dhcpd.interface sve sto vam treba je jedna linija koja sadrzi ime interfejsa na kome treba da slusa, ako je vas interfejs npr '​fxp0'​ onda ce fajl izgledati ovako: ​
 +
 +  Konfigurcioni Fajl: /​etc/​dhcpd.interfaces ​
 +  ​
 +  fxp0
 +
 +Da bi startovali dhcpd editujte /​etc/​rc.conf.local i dodajte sledece: ​
 +
 +  Konfigurcioni Fajl: /​etc/​rc.conf.local ​
 +  ​
 +  dhcpd_flags=""​
 +
 +Pre nego to uradite postarajte se da vasa konfiguracija bude tacna. Ovo bi trebalo da uradite svaki put kada menjate konfiguraciju: ​
 +
 +  Komanda: Koristeci -n sa dhcpd 
 +  ​
 +  # /​usr/​sbin/​dhcpd -n -c /​etc/​dhcpd.conf
 +
 +Da bi ucitali rucno, tako da ne trebate da restartujete sistem pokrenite istu komandu kao i u /​etc/​rc.local: ​
 +
 +  Komanda: Pokretanje dhcpd 
 +  ​
 +  # /​usr/​sbin/​dhcpd fxp0
 +
 +====== DNS ======
 + 
 +Lokalni DNS server moze biti koristan iz dva razloga: ​
 +
 +  *Lokalno kesiranje
 +  *Mogcnost da koristite prosledjivanja ovde umesto da koristite PF za lokalno hostovane servere ​
 +
 +Named (verzija 9) dolazi sa OpenBSD 4.0 podrazumevano i konfigurisan je da kesira za lokalnu mrezu, sve sto treba da uradite je da ga omogucite. Da bi to uradili, unesite sledece izmene u /​etc/​rc.conf.local ​
 +
 +  Konfigurcioni Fajl: /​etc/​rc.conf.local ​
 +  ​
 +  named_flags=""​
 +
 +Da omogucite named bez restarta sistema, jednostavno ukucajte //named// kao root. 
 +
 +====== Firewall i NAT ======
 + 
 +Koristi cemo PF (4) kao nas firewall i NAT zato sto je podrazumevano ukljucen u OpenBSD instalaciji i dokazao se tokom vremena. Postoji izvanredna knjiga za [[http://​openbsd.org/​faq/​pf/​index.html||PF(4)]] koju trebate procitati pre nego pocnete da hakujete vas pf.conf. Svaki sajt ce imati razliciti pf.conf shodno situaciji. Primer koji je naveden dole ce vam biti dobra polazna tacka ali nije zamena za citanje korisnickog prirucnika. ​
 +Vazno je znati da nadjete najsvezije izmene verzije koju instalirate (ako koristite pravila iz starije verzije) kako bi znali dali trebate uneti neke izmene. Na primer, 4.0 do 4.1 izdanja sadrze dosta izmena. ​
 +pf.conf koji je naveden dole dolazi direktno iz [[http://​openbsd.org/​faq/​pf/​example1.html|korisnickog prirucnika]]. Ima veoma specificne namene: ​
 +
 +  *Dozvoli ulaz samo za SSH, Auth/Ident, i ICMP Echo zahteve ​
 +  *Podrazumevano odbijamo sve ostalo ​
 +  *Internet pristup bez ogranicenja za kompjutere na unutrasnjoj mrezi 
 +  *Prosledjivanje Porta 80 na webserver na unutrasnjoj mrezi koji se naziva comp3 
 +  *Log filter statistika ​
 +  *Podrazumevano,​ odgovori sa TCP RST ili ICMP unreachable porukama. ​
 +  *Biti jednostavan. ​
 +
 +|**Beleska:​** Trebate omoguciti PF *nakon* sto ste osnovali PPPoE konekciju, u suprotnom PF ce je blokirati; ako neko zna pravila koja ovo dozvoljavaju,​ postujte na stranici za raspravu |
 +|**Beleska:​** Ako koristite DSL: Dodajte "scrub out on $extIF max-mss 1440" u vas pf.conf, u suprotnom sajtovi kao digg.com, myspace.com,​ i neki online games nece raditi ispravno |
 +|**Beleska:​** Kada koristite pppoe0, trebate koristiti taj interfejs u pf.conf umesto vaseg fizickog interfejsa. |
 +
 +Opet ponavljamo da trebate razumeti pf sto je to vise moguce pre nego sto krenete da ga koristite. ​
 +<​code>​
 +Konfigurcioni Fajl: /​etc/​pf.conf ​
 +
 +# macros
 +ext_if="​pppoe0"​
 +int_if="​fxp0"​
 +
 +tcp_services="​{ 22, 113 }"
 +icmp_types="​echoreq"​
 +
 +comp3="​192.168.0.3"​
 +
 +# options
 +set block-policy return
 +set loginterface $ext_if
 +
 +set skip on lo
 +
 +# scrub
 +scrub in
 +
 +# nat/rdr
 +nat on $ext_if from !($ext_if) -> ($ext_if:0)
 +nat-anchor "​ftp-proxy/​*"​
 +rdr-anchor "​ftp-proxy/​*"​
 +
 +rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
 +rdr on $ext_if proto tcp from any to any port 80 -> $comp3
 +
 +# filter rules
 +block in
 +
 +pass out keep state
 +
 +anchor "​ftp-proxy/​*"​
 +antispoof quick for { lo $int_if }
 +
 +pass in on $ext_if inet proto tcp from any to ($ext_if) \
 +   port $tcp_services flags S/SA keep state
 +
 +pass in on $ext_if inet proto tcp from any to $comp3 port 80 \
 +    flags S/SA synproxy state
 +
 +pass in inet proto icmp all icmp-type $icmp_types keep state
 +
 +pass quick on $int_if
 +</​code>​
 +
 +
 +\\
 +\\
 +Originalan link: http://​www.openbsd-wiki.org/​index.php?​title=PPPoE_Router_and_Firewall
 +
 +\\
 +
 +
 +soxxx@dalibor
 +\\
pppoe_ruter_i_firewall.txt · Last modified: 2017/04/28 10:25 (external edit)