User Tools

Site Tools


kućni_router_sa_firewall-om_baziran_na_openbsd

This is an old revision of the document!


Imate u podrumu neko smece od kompjutera koje se zove PII i dvoumite se dali da ga date djubretarima. Mi vam predlazemo puno bolju opciju. Dodajte par LAN karti na taj PII i napravite od njega NAT router sa firewall-om prefesionalnog kvaliteta koji se prodaje za stotine dolara.

Pretpostvka ovog clanka je da imate ideju o routable i non-routable adresama. Ako to nije slucaj procitajte clanak na Wikipedi-ji. Da bi se PII koristio kao NAT router moramo iskonfigurisati dve stvari. Prvi je server dhcpd koji ce izdavati non-routable adresu kompjuterima koji su na vasem lokalnom LAN-u u istom duhu u kome dobijate routable adresu od svog ISP. Druga komponenta je cuveni PF.

Predpostavimo da je PII povezan za spoljanji Internet preko interface-a rl0 dok je jeadn od unutrasnji interface-a age0 za koji cete nakaciti svoj kucni racunar. Da bi PII uopste mogao da propusta pakete morate da editujete /etc/sysctl.conf i izbrisete povisilicu ispred sledece linije.

net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of IPv4 packets

Konfiguracija dhcpd servera

Prvo konfigurisemo interface na kome ce server slusati za kliente. Editujte /etc/dhcpd.interfaces i dodajte

age0

Zatim editujemo file hostname.age0 i upisemo adresu naseg novog routera. U ovom primeru ja cu predpostaviti da nas lokalni LAN 192.168.3.1/24 i gde cu adresu 192.168.3.1 rezervisati za sam router. Sada cu tu adresu dodeliti interface-u age0.

inet 192.168.3.1 255.255.255.0 NONE

Napomonjem pre nego sto iskonfigurisemo sam dhcpd server da cemo u ovom primeru predpostaviti da koristite OpenDNS za svoj DNS server zato sto je pouzdaniji i sigurniji od DNS server-a vaseg ISP. U starnosti pozeljno je da imate sopstveni DNS server. Adresa OpenDNS servera je 208.67.222.222 i 208.67.220.220 Napokon konfigurisemo sam server editovanjem /etc/dhcpd.conf

$ more /etc/dhcpd.conf
#       $OpenBSD: dhcpd.conf,v 1.2 2008/10/03 11:41:21 sthen Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#

# Network:              192.168.3.0/255.255.255.0
# Domain name:          my.domain
# Name servers:         208.67.222.222 i 208.67.220.220
# Default router:       192.168.3.1
# Addresses:            192.168.3.2 - 192.168.1.24
#
shared-network LOCAL-NET { 
option  domain-name "my.domain";
option  domain-name-servers 208.67.222.222, 208.67.220.220; 

subnet 192.168.3.0 netmask 255.255.255.0 {
                option routers 192.168.3.1;
                range 192.168.3.2 192.168.3.24;
        }
}

Znacenje linija u ovom fajlu vise manje je ocigledno iz mojih komentara. Specificirali smo domain-name, DNS servere (domain-name-servers). Specificirali smo nas subnet i masku kao i adresu 192.168.3.1 naseg age0 routera. Klienti ce dobijati adrese u rangu od 192.168.3.2 do 192.168.3.24.

Gotovo smo spremni da pokrenemo dhcpd sever. Da bi server startovao prilikom boot-a editujemo /etc/rc.conf.local dopisemo

dhcpd_flags=

Kad smo vec kod tog fajla proverite da je PF ukljucen.

pf=YES

Da nebi ste morali da reboot-ijete startujte dhcpd server i PF

/usr/sbin/dhcpd age0
pfctl -f /etc/pf.conf

PF pravila ili sto bi Bora Djordjevic rekao “pravila, pravila da bi nas udavila”

Osta je nam samo da ispisemo pravila za filtriranje. Evo jednog primerka pf.conf fajla za tipicnu kucnu upotrebu koja podrazumeva surfanje Internet-a, proveru email-a kao i ssh na file server na nasem poslu.

ext_if="rl0"
int_if="age0"
lan_net = "192.168.3.1/24"

tcp_services = "{ssh, sftp, imap, imaps, pop3s, smtp, 587,domain, ntp, www, https}"
udp_services= "{domain, ntp}"

set require-order yes
set block-policy return
set optimization normal
set skip on lo
set loginterface $ext_if

scrub all random-id fragment reassemble 


nat on $ext_if from !($ext_if) -> ($ext_if:0) # Ovo je Network translacija

block log all
antispoof quick for { lo $int_if $ext_if }

pass out on $ext_if proto udp to any port $udp_services
pass out on $ext_if proto tcp to any port $tcp_services

pass in  on $int_if from $lan_net to any
pass out on $int_if from any to $lan_net

Konfiguracija OpenBSD klienta, ako koristite Windows na Desktop-u snadjite se sami

Da bi clienti mogli da koriste gornji router dovoljno je povezati ih sa PII ili direktno sa cross over kablom ili normalnim Internet kablom ako koristimo switch. Ako ste ranije konfigurisali svoj dhclient da koristi OpenDNS server nikakva dodatna konfiguracija vam nije potrebna. Ako niste evo dhclient.conf fajla za one koji zele da koriste OpenDNS server.

initial-interval 1;
send host-name "oko";
supersede domain-name-servers 208.67.222.222, 208.67.220.220;
request subnet-mask, broadcast-address, routers, domain-name,
         host-name;

A evo i /etc/resolv.conf.tail

lookup file bind
nameserver 208.67.222.222
nameserver 208.67.220.220 

Dovoljno je da kucate

dhclient ne3

Gde je ne3 ime mog interfac-a i nas OpenBSD desktop bez ikakavog zastitnog zida ce dobiti adresu od PII i sta vise biti zasticen od mracnog Internet-a.

kućni_router_sa_firewall-om_baziran_na_openbsd.1247063894.txt.gz · Last modified: 2017/04/28 10:25 (external edit)