Promijenite default gateway freebsd. FreeBSD kao ruter ili kako napraviti FreeBSD usmjeriti pakete s jedne mreže na drugu

Uvod == Želeo bih ukratko da skiciram plan koji treba slediti kako bi kurs ka Internetu za kancelariju bio ispravan i da niko ne bi bio skrenut sa strane. Odmah ću napomenuti da gateway u Unixu nije jedan program, već čitavo desetak programa, od kojih svaki izvodi svoju akciju i ima svoje postavke. Koristimo: * FreeBSD 7 * natd * named, routed * ipfw * squid * squidGuard * apache * dhcpd Moj test server je već na lokalnoj mreži, tako da vjerujem da je moja eksterna mreža 192.168.0.0/24, a moja interna - 172.16.0.0/16. Brojevi, na kraju, nisu bitni – bitno je značenje. Instalirao sam FreeBSD u minimalnoj konfiguraciji i moj rc.conf sadrži samo: hostname="vm=freepro.local" ifconfig_em0="DHCP" linux_enable="DA" sshd_enable="DA"== Podešavanje NAT-a == Moj eksterni interfejs - em0 - podrazumevano dobija svoju IP adresu preko DHCP-a od običnog rutera sa adresom 192.168.1.1. Očigledno, isti ruter djeluje kao DNS server. U prvoj fazi radim NAT (uvijek na vanjskom interfejsu!) i modifikujem /etc/rc.conf fajl na ovaj način: hostname="vm=freepro.local" defaultrouter="192.168.1.1" ifconfig_em0="inet 192.168.1.10 netmask 255.255.255.0" linux_enable="DA" sshd_enable="DA" # Internet gateway.net.16ma 16.2 if 55.255 .0.0" gateway_enable="DA" natd_enable="DA" natd_interface="em0" #natd_flags="-f /etc/redirect.conf" firewall_enable="DA" firewall_type="open" #firewall_script="/etc/firewall . conf" router_enable="DA" router="/sbin/routed" router_flags="-q" Popravio sam eksternu adresu i postavio internu. Sada ispravimo DNS u datoteci /etc/resolv.conf: nameserver 192.168.1.1 To je sve! Počnimo sa servisima: # /etc/rc.d/ipfw start # /etc/rc.d/natd start # /etc/rc.d/routed start # /etc/rc.d/named start I internet radi! Naravno, ručno pišemo klijentu: IP: 172.16.0.2 MASK: 255.255.0.0 GATE: 172.16.0.1 DNS1: 192.168.1.1 Naravno, ovo je veoma loš pristup. Prvo, uopće nije zaštićen, drugo, uopće se ne kešira, treće, sve DNS zahtjeve preusmjerava "upstream", a potpuno mu nedostaje mogućnost da dobije bilo kakvu statistiku ili upravlja bilo čim. Ali ovo je vrlo lagan i brz gateway, a uz daljnja prilagođavanja njegove performanse će se samo povećati, a ne smanjiti. Usput, imajte na umu da su dvije linije već komentirane u novom rc.conf. Prvi komentar će mi pomoći u budućnosti da neke portove “proslijedim” izvana u unutar mreže. One. na primjer, ako želim pristupiti klijentskom računaru 172.16.0.2 preko ssh-a, morat ću napraviti sljedeću datoteku: # Fajl /etc/redirect.conf redirect_port tcp 172.16.0.2:22 2222 To znači da ću pri povezivanju sa serverom izvana preko porta 2222 doći do mašine na lokalnoj mreži preko porta 22 (ssh). Drugi komentar je moja lična konfiguracija firewall-a, izoštrena i testirana. == Postavljanje ipfw == Moja konfiguracija za ipfw u ovoj fazi izgleda ovako: #!/bin/sh # IPFW konfiguracija za jednostavan NAT server /etc/firewall.conf cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24 " IfIn="em1" IpIn="172.16.0.1" NetIn="172.16.0.0/16" ############################ ###################### # Obriši ########################### ######################### $(cmd) -f flush $(cmd) tabela 0 flush $(cmd) tabela 1 flush #### # ############################################### # Bijela lista / Crna lista # ################################################# #$ (cmd) tabela 0 dodaj 172.16.0.12 $(cmd) tabela 1 dodaj 172.16.0.13 ############################## ##### ################### # Loopback ######################### ##### ###################### $(cmd) dodaj dozvoli ip sa bilo kojeg na bilo koji preko lo0 ########## ###### ################################## # Blokiraj svijet na privatno ##### ###### ######################################## $(cmd) dodajte deny ip sa bilo kojeg na 127.0 .0.0/8 $(cmd) dodajte deny ip sa 127.0.0.0/8 na bilo koji #$(cmd) dodajte deny ip iz 172.16.0.0/16 na bilo koji putem $(IfOut) #$( cmd) dodati deny ip sa 192.168 .1.0/24 na bilo koji putem $(IfOut) $(cmd) dodati deny ip sa bilo kojeg na 10.0.0.0/8 preko $(IfOut) #$(cmd) dodati deny ip sa bilo kojeg na 172.16 .0.0/12 preko $( IfOut) #$(cmd) dodaj deny ip sa bilo kojeg na 192.168.0.0/16 preko $(IfOut) $(cmd) dodaj deny ip sa bilo kojeg na 0.0.0.0/8 preko $(IfOut) $(cmd) dodati deny ip sa bilo kojeg na 169.254.0.0/16 preko $(IfOut) $(cmd) dodati zabraniti ip sa bilo kojeg na 192.0.2.0/24 preko $(IfOut) $(cmd) dodati zabraniti ip sa bilo kojeg na 224.0.0.0/4 preko $ (IfOut) $(cmd) dodaj deny ip sa bilo kojeg na 240.0.0.0/4 preko $(IfOut) ##################### ####### ######################### # ICMP ################# ######### ######################### $(cmd) dodati deny icmp iz bilo kojeg u bilo koji frag $(cmd) dodajte deny log icmp sa bilo kojeg na 255.255 in preko $(IfOut) $(cmd) dodajte deny log icmp sa bilo kojeg na 255.255.255.255 out preko $(IfOut) #############. ######### ############################ # NAT ########### ########### ############################# $(cmd) dodaj preusmeravanje 8668 ip sa $ (NetIn) na bilo koji preko $(IfOut) $ (cmd) dodaj preusmeravanje 8668 ip sa bilo kojeg na $(IpOut) preko $(IfOut) #$(cmd) dodaj preusmeravanje 8668 ip sa bilo kojeg na bilo koji preko $(IfOut) ## ########### ##################################### # Blok privatno u svijetu ######## ######################################## #### $(cmd) dodaj deny ip sa 10.0.0.0/8 na bilo koji preko $(IfOut) #$(cmd) dodaj deny ip od 172.16.0.0/12 na bilo koji preko $(IfOut) #$(cmd) dodaj deny ip sa 192.168.0.0/16 na bilo koji putem $(IfOut) $(cmd) dodaj deny ip sa 0.0.0.0/8 na bilo koji putem $(IfOut) $(cmd) dodaj deny ip sa 169.254.0.0/16 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 192. 0.2.0/24 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 224.0.0.0/4 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 240.0.0.0/4 na bilo koji preko $( IfOut) ################################################ # ## # Bijela lista ############################################## # #### $(cmd) dodaj dozvoli sve od "table(0)" u bilo koji $(cmd) dodaj dozvoli sve od bilo kojeg do "table(0)" ############# # ##################################### # Crna lista ########## ### ##################################### $(cmd) add deny all from " table(1 )" na bilo koji ############################################ ### #### # Održavajte uspostavljeno ######################################### ### ####### $(cmd) dodaj dozvoli tcp sa bilo kog meni uspostavljenog ############################# ### ################### # ########################### ### ##################### $(cmd) dodati dozvoliti ip sa bilo kojeg na bilo koji frag $(cmd) dodati dozvoliti icmp iz bilo kojeg u $(IpOut) icmptypes 0, 8,11 # dns $(cmd) dodaj dozvoli tcp sa bilo kojeg na $(IpOut) dst-port 53 podešavanje $(cmd) dodaj dozvoli udp sa bilo kojeg na $(IpOut) dst-port 53 $(cmd) dodaj dozvoli udp sa $(IpOut) 53 na bilo koji $(cmd) dodaj dozvoli udp sa $(IpOut) na bilo koji dst-port 53 keep-state # dns-client $(cmd) dodaj dozvoli tcp sa bilo kojeg na $(NetIn) dst -port 53 setup $(cmd) dodati dozvoliti udp sa bilo kojeg na $(NetIn) dst-port 53 $(cmd) dodati dozvoliti udp sa $(NetIn) 53 na bilo koji $(cmd) dodati dozvoliti udp od $(NetIn) do bilo koji dst-port 53 keep-state # vrijeme $(cmd) dodati dozvoliti udp iz $(IpOut) na bilo koji dst-port 123 keep-state # time-client $(cmd) dodati dozvoliti udp iz $(NetIn) na bilo koji dst -port 123 keep-state # ssh-in $(cmd) dodati dozvoliti tcp iz bilo kojeg u $(IpOut) 22 $(cmd) dodati dozvoliti tcp iz $(IpOut) 22 na bilo koji # ssh-out $(cmd) dodati dozvoliti tcp od $ (IpOut) na bilo koji 22 $(cmd) dodati dozvoliti tcp sa bilo kojeg 22 na $(IpOut) # http $(cmd) dodati dozvoliti tcp sa $(IpOut) na bilo koji dst-port 80 # http-client $( cmd) dodaj dozvoli tcp sa $(NetIn) na bilo koji dst-port 80 $(cmd) dodaj dozvoli tcp sa bilo kog 80 na $(NetIn) # smtp $(cmd) dodaj dozvoli tcp sa bilo kojeg na $(IpOut) dst-port 25 setup # proslijediti 8080 na 81 $(cmd) dodati dozvoliti tcp sa bilo kojeg na $(IpOut) dst-port 8080 $(cmd) dodati dozvoliti tcp sa $(IpOut) 8080 na bilo koji $(cmd) dodati dozvoliti tcp od bilo kojeg do $(NetIn ) dst-port 81 $(cmd) dodaj dozvoli tcp sa $(NetIn) 81 na bilo koji # izlaz $(cmd) dodaj zabrani zapisnik tcp sa bilo kojeg na bilo koji ulaz preko $(IfOut) podešavanja #$(cmd) dodaj dozvoli tcp od bilo kojeg do bilo kojeg podešavanja ############################################ ### #### # Lokalna mreža ######################################## ### ####### $(cmd) dodaj dozvoli sve od bilo kojeg do bilo kojeg putem $(IfIn) ######################### #### ####################### # Odbij sve ##################### ##### ############################ $(cmd) dodaj zabrani sve od bilo kojeg do bilo kojeg Posebno sam prokomentirao neke linije koje dovode pakete iz lokalnih mreža 192, 172 na eksterno sučelje, pošto je moj eksterni interfejs lokalni. U stvarnosti, ove linije su potrebne. Idemo dalje. == Podešavanje squid == Sada mi treba squid - proxy server za keširanje koji može inteligentno distribuirati Internet svim korisnicima prema pravilima postavljenim od strane administratora sistema. pkg_add -r squid Napomena: naravno, ispravnija opcija je pravljenje softvera iz svježih i ažuriranih portova, ali štedimo vrijeme, pa ga instaliramo u pakete. Jednog dana ćemo nadograditi koristeći portupgrade. Za squid radimo najjednostavnije podešavanje - uredimo datoteku /usr/local/etc/squid/squid.conf # Minimalna konfiguracija SQUID acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/5.2 localhost src 127.0.0.0/5.5 acl 0.0 acl SSL_ports port 443 acl CONNECT metoda CONNECT http_access dozvoli upravitelju localhost http_access dozvoli localnet http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access zabrani sve icp_access dozvoli sve http_port 3128 transparentna hierarchy_stoplist cgi acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_dir ufs /usr/local/squid/cache 100 16 256 access_log /usr/local/squid/logs/access.log squid cache_log /usr/local/squid/logs/cache.log cache_store/local/log /s /logs/store.log refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl apache rep_header Server ^Apache broken_vary_encoding dopusti apache cache_effective_user squid cache_effective_group squid visible_hostname vm-freepro.local icp_port 0 error_directory /usr/coreusr/nger cal/squid/cache Namerno sam uklonio komentare iz konfiguracionog fajla, jer ih nema mnogo, ali mnogo. Ne zaboravite urediti /etc/rc.conf dodavanjem reda: squid_enable="YES" Zatim ponovo izgradite keš memoriju i pokrenite squid: # squid -z # /usr/local/etc/rc.d/squid start Prva stvar koju radimo nakon instaliranja squida je da zabranimo lokalnim korisnicima pristup Internetu preko porta 80. Port 80 prosljeđujemo na 3128 - tj. prisiljavamo sve korisnike da prolaze samo kroz squid. Postoji velika mala kvaka. Ova operacija se može izvršiti samo uvođenjem IPFW podrške u kernel, inače prosljeđivanje ne radi. Da, to znači da ćemo sada morati sastaviti naše jezgro! To nije lak zadatak, ali je koristan - nakon sastavljanja kernela, njegova brzina bi se trebala povećati, a volumen bi trebao osjetno smanjiti. Prvo koristite sysinstall da instalirate izvore kernela: # sysinstall Idi na /Configure/Distributions Mark unutar odjeljka src [X] base [X] sys Sada imamo izvore kernela u folderu /usr/src. Zatim kopirajte GENERIČKU konfiguraciju na “vaš” MYKERNEL i uredite MYKERNEL: # cd /usr/src/sys/i386/conf # cp GENERICKI MYKERNEL # mcedit MYKERNEL Kada uređujete konfiguraciju, morate navesti sljedeće opcije: # Omogućavanje zaštitnog zida u opcijama kernela IPFIREWALL # Omogućavanje opcija "log" mehanizma za evidentiranje IPFIREWALL_VERBOSE # Ograničavanje dnevnika - zaštita od opcija prelivanja IPFIREWALL_VERBOSE_LIMIT=50 # Omogućavanje opcija mehanizma za preusmjeravanje paketa IPFIREWALL_FORWARD # Omogućavanje opcija prevođenja IPFIREWALL_FORWARD # Omogućavanje mehanizma za prevođenje NAT adrese # Omogućavanje mehanizma prevođenja NAT adrese # opcije mehanizma za ograničavanje brzine kanala DUMMYNET I također uklonite sav nepotreban hardver koji zapravo nemate. Sada napravimo kernel. Ova operacija može potrajati malo duže i možda neće uspjeti s greškom, što će zahtijevati instalaciju dodatnih izvora iz sysinstall, ovisno o tome što ste napisali u konfiguraciji. Nadamo se da tu nema ništa suvišno. # cd /usr/src # napravi buildkernel KERNCONF=MYKERNEL # napravi installkernel KERNCONF=MYKERNEL Sada morate ponovo pokrenuti, ali prije ponovnog pokretanja obavezno pročitajte priručnik u slučaju da ne možete ponovo pokrenuti. Voleo bih da se to, naravno, ne desi. Dakle, ponovo pokrećemo sistem i ponovo uređujemo /etc/firewall.conf. #!/bin/sh # IPFW konfiguracija za NAT server i SQUID proxy cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24" IfIn= "em1 " IpIn="172.16.0.1" NetIn="172.16.0.0/16" ################################ ## ################# # Obriši ############################## ## #################### $(cmd) -f flush $(cmd) tabela 0 flush $(cmd) tabela 1 ispiranje ######### # ########################################## # Bijela lista / Crna lista #### ##############################################$(cmd) tablica 0 dodaj 172.16.0.2 $(cmd) tablica 1 dodaj 172.16.0.13 ################################## ################ # Loopback ################################# ################### $(cmd) dodaj dozvoli ip sa bilo kojeg na bilo koji putem lo0 ################## # ############################### # Blokiraj svijet na privatno ############## # ##################################### $(cmd) dodati deny ip sa bilo kojeg na 127.0. 0.0/ 8 $(cmd) dodati deny ip sa 127.0.0.0/8 na bilo koji #$(cmd) dodati deny ip od 172.16.0.0/16 na bilo koji putem $(IfOut) #$(cmd) dodati deny ip sa 192.168. 1.0/ 24 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa bilo kojeg na 10.0.0.0/8 preko $(IfOut) #$(cmd) dodaj deny ip sa bilo kojeg na 172.16.0.0/12 preko $(IfOut) ) # $(cmd) dodaj deny ip sa bilo kojeg na 192.168.0.0/16 preko $(IfOut) $(cmd) dodaj zabrani ip sa bilo kojeg na 0.0.0.0/8 preko $(IfOut) $(cmd) dodaj zabrani ip sa bilo koji na 169.254.0.0/16 preko $(IfOut) $(cmd) dodati deny ip sa bilo kojeg na 192.0.2.0/24 preko $(IfOut) $(cmd) dodati deny ip sa bilo kojeg na 224.0.0.0/4 preko $( IfOut) $(cmd) dodaj deny ip sa bilo kojeg na 240.0.0.0/4 preko $(IfOut) ############################# ### #################### # ICMP ########################## ### ###################### $(cmd) dodati deny icmp iz bilo kojeg u bilo koji frag $(cmd) dodati deny log icmp sa bilo kojeg na 255.255. 255.255 in preko $(IfOut) $(cmd) dodati deny log icmp sa bilo kojeg na 255.255.255.255 out preko $(IfOut) ####################### ### ######################### # NAT ##################### ##### ###########################$ $(cmd) dodaj preusmeravanje 8668 ip sa $(NetIn) na bilo koji preko $ (IfOut) $(cmd) dodaj preusmjeravanje 8668 ip sa bilo kojeg na $(IpOut) preko $(IfOut) #$(cmd) dodaj preusmjeravanje 8668 ip sa bilo kojeg na bilo koji putem $(IfOut) ########## ####### ################################## # Blokiraj privatno na svijetu #### ####### ######################################## $(cmd ) dodajte deny ip sa 10.0.0.0 /8 na bilo koji putem $(IfOut) #$(cmd) dodajte deny ip sa 172.16.0.0/12 na bilo koji putem $(IfOut) #$(cmd) dodajte deny ip sa 192.168.0.0 /16 na bilo koji preko $(IfOut ) $(cmd) dodaj deny ip sa 0.0.0.0/8 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 169.254.0.0/16 na bilo koji preko $(IfOut) $ (cmd) dodaj deny ip sa 192 . 0.2.0/24 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 224.0.0.0/4 na bilo koji preko $(IfOut) $(cmd) dodaj deny ip sa 240.0.0.0/4 na bilo koji preko $( IfOut) ################################################ # ## # Bijela lista ############################################## # #### $(cmd) dodaj dozvoli sve od "table(0)" u bilo koji $(cmd) dodaj dozvoli sve od bilo kojeg do "table(0)" ############# # ##################################### # Crna lista ########## ### ##################################### $(cmd) add deny all from " table(1 )" na bilo koji ############################################ ### #### # Održavajte uspostavljeno ######################################### ### ####### $(cmd) dodaj dozvoli tcp sa bilo kog meni uspostavljenog ############################# ### ################### # ########################### ### ##################### $(cmd) dodati dozvoliti ip sa bilo kojeg na bilo koji frag $(cmd) dodati dozvoliti icmp iz bilo kojeg u $(IpOut) icmptypes 0, 8,11 # dns $(cmd) dodaj dozvoli tcp sa bilo kojeg na $(IpOut) dst-port 53 podešavanje $(cmd) dodaj dozvoli udp sa bilo kojeg na $(IpOut) dst-port 53 $(cmd) dodaj dozvoli udp sa $(IpOut) 53 na bilo koji $(cmd) dodaj dozvoli udp sa $(IpOut) na bilo koji dst-port 53 keep-state # dns-client $(cmd) dodaj dozvoli tcp sa bilo kojeg na $(NetIn) dst -port 53 setup $(cmd) dodati dozvoliti udp sa bilo kojeg na $(NetIn) dst-port 53 $(cmd) dodati dozvoliti udp sa $(NetIn) 53 na bilo koji $(cmd) dodati dozvoliti udp od $(NetIn) do bilo koji dst-port 53 keep-state # vrijeme $(cmd) dodati dozvoliti udp iz $(IpOut) na bilo koji dst-port 123 keep-state # time-client $(cmd) dodati dozvoliti udp iz $(NetIn) na bilo koji dst -port 123 keep-state # ssh-in $(cmd) dodati dozvoliti tcp iz bilo kojeg u $(IpOut) 22 $(cmd) dodati dozvoliti tcp iz $(IpOut) 22 na bilo koji # ssh-out $(cmd) dodati dozvoliti tcp od $ (IpOut) na bilo koji 22 $(cmd) dodati dozvoliti tcp sa bilo kojeg 22 na $(IpOut) # http $(cmd) dodati dozvoliti tcp sa $(IpOut) na bilo koji dst-port 80 # http-client #$ (cmd) dodaj dozvoli tcp sa $(NetIn) na bilo koji dst-port 80 #$(cmd) dodaj dozvoli tcp sa bilo kog 80 na $(NetIn) # squid $(cmd) dodaj dozvoli sve od $(NetIn) do $( IpIn) 3128 preko $(IfIn) $(cmd) dodati fwd $(IpIn),3128 tcp od $(NetIn) na bilo koji 80 # smtp $(cmd) dodati dozvoliti tcp sa bilo kojeg na $(IpOut) dst-port 25 postavljanje # out $ (cmd) dodaj deny log tcp iz bilo kojeg u bilo koji in preko $(IfOut) postavke #$(cmd) dodaj dozvoli tcp iz bilo kojeg u bilo koje postavke ################ ### ############################### # Lokalna mreža ############## ### ################################## $(cmd) dodaj dozvoli sve od bilo kojeg do bilo kojeg preko $ (IfIn) ################################################ ### # Odbij sve ############################################# ##### ### $(cmd) dodaj deny all od bilo kojeg do bilo kojeg Ponovo pokrećemo servise i proveravamo - sve radi, a klijenti prolaze kroz sistem kontrole neprimetno. Za sada ostavimo po strani postavljanje kontrole pristupa i riješimo još jedno važno pitanje: dobivanje DNS-a. == Podešavanje DNS-a == Trenutno naši klijenti imaju registrovanu DNS adresu 192.168.1.1 - eksternu u odnosu na internu mrežu 172.16.0.0/16. Možemo reći da se klijenti penju iznad servera hiljade puta dnevno u potrazi za adresama. Učinimo sistem boljim - postavite DNS server za keširanje, koji bi nam omogućio da izbjegnemo end-to-end konekcije prema van, uštedimo promet i ubrzamo naš rad. Prije nego što to učinite, ne zaboravite zabraniti vanjski pristup preko porta 53 za sve klijente. U datoteci /etc/namedb/named.conf uređujemo parametre slušanja i prosljeđivanja: opcije ( direktorij "/etc/namedb"; pid-datoteka "/var/run/named/pid"; dump-datoteka "/var/dump/named_dump.db"; datoteka statistike "/var/stats/named.stats "; slušanje (127.0.0.1; 172.16.0.1; ); disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0. .0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. 0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; prosljeđivači (192.168.1.1; ); // adresa izvora upita * port 53; ); U datoteci /etc/resolv.conf prvo napravite lokalni DNS: server imena 127.0.0.1 server imena 192.168.1.1 U /etc/firewall.conf zabranjujemo klijentima da koriste eksterni DNS (uređujemo sekcije sa komentarom dns-client) # dns-client # Onemogući eksterni DNS #$(cmd) dodaj dozvoli tcp sa bilo kojeg na $(NetIn) dst-port 53 podešavanje #$(cmd) dodaj dozvoli udp sa bilo kojeg na $(NetIn) dst-port 53 #$( cmd) dodaj dozvoli udp sa $(NetIn) 53 na bilo koji #$(cmd) dodaj dopusti udp sa $(NetIn) na bilo koji dst-port 53 keep-state # Dozvoli samo lokalni DNS $(cmd) dodaj dozvoli tcp sa $( NetIn) na $(IpIn) dst-port 53 podešavanje $(cmd) dodati dozvoliti udp sa $(NetIn) na $(IpIn) dst-port 53 Pokrenimo ponovo: # /etc/rc.d/named restart # /etc/rc.d/ipfw restart Vratimo se sada pitanju kontrole pristupa Internetu. Postoje dva rješenja odjednom. Prvo, konfigurirajte acl politike u squid. Drugo, instalirajte i konfigurirajte squidGuard - posebnu aplikaciju za kontrolu pristupa. Počnimo redom. == Konfigurisanje squid acl == acl su pravila u squid konfiguraciji koja vam prilično efikasno dozvoljavaju da ograničite protok informacija koji prolaze kroz proxy server. Ukratko, sa ACL-om možete brzo da ubijete sve levičare koji ometaju vaš rad. Sve acl postavke su po defaultu upisane u datoteku squid.conf, ali se također mogu premjestiti u eksterne datoteke. Na primjer, evo dijela konfiguracije: # Zabranjujemo dumpove fajlova za sve acl shares dstdomain .rapidshare.com .webfile.ru http_access deny shares # Zabranjujemo svima da traže web lokacije putem IP acl ip_urls url_regex http://+\.+\.+\.+[:/ ] http_access deny ip_urls # Grupna ograničenja src group_strict (ip 172.16.0.20-172.16.0.25) src group_allow (ip 172.16.0.26-172.16.0.30) acl (group_allow) (pass bilo koje) group Ispada odlično. Ali očigledno je da dobar proxy treba da ima mnogo takvih pravila – jedno pravilo za svaku „rupu“. Pronalaženje "rupa" i njihovo pojedinačno registriranje je zamorno, ali, kao i uvijek, postoji gotovo rješenje - squidGuard - aplikacija za filtriranje s ogromnim skupom pravila, koja se, u principu, može dopuniti čak i na cron rasporedu . Proučavamo problem. == Podešavanje squidGuard == Sada pokušajmo da instaliramo i konfigurišemo squidGuard. Ovo nije teško učiniti, ali morate biti oprezni. dakle: # pkg_add -r squidGuard # cp /usr/local/etc/squid/squidGuard.conf.sample /usr/local/etc/squid/squidGuard.conf Datoteka squidGuard.conf pohranjuje sve postavke, od kojih će neke morati odmah ispraviti, a to su: # Datoteka squidGuard.conf ... izvorni uzorci-klijenti ( ip 172.16.0.0/16 ) ... Povežimo squidGuard sa squid - dodajte 3 reda u datoteku squid.conf: redirector_bypass na redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf redirect_children 10 squidGuard pohranjuje svoju konfiguracijsku bazu podataka u /var/db/squidGuard. Prije prvog pokretanja ili nakon unošenja izmjena, mora se ponovo izgraditi: # rehash # squidGuard -C sve # chown -R squid:squid /var/db/squidGuard # /usr/local/etc/rc.d/squid restart Sve je u redu, ali kada klijent pokuša otići na zabranjenu stranicu, na primjer, http://3warez.com/, uočavamo kočnice. Želio bih da dobijem neku vrstu razumljive poruke. Za ovo nam je potreban apache. == Postavljanje apachea == Kao što je već spomenuto, potreban nam je apache za prikaz informacija o blokiranim adresama i razlozima blokiranja. Radimo kao i obično: # pkg_add -r apache22 # echo "apache22_enable="DA"" >> /etc/rc.conf Apache postavke se nalaze u datoteci /usr/local/etc/apache22/httpd.conf. Prije nego što počnete, morate provjeriti direktive DocumentRoot i ServerName - izostaviću detalje, jer Na internetu postoji mnogo članaka o postavljanju ovog servera. Urađeno za 1 sekundu. Pokrenimo: # echo "Pristup odbijen" > /usr/local/www/apache22/data/index.html # /usr/local/etc/rc.d/apache22 start Popravimo malo squidGuard.conf konfiguraciju: # Na samom kraju datoteke acl (..... default (preusmjeravanje http://172.16.0.1/index.html))== Konfigurisanje dhcpd == I sada smo pri kraju. Mreža je konfigurisana i radi odlično. Sve je pod kontrolom, sve je strogo ograničeno. Ali nakon štapa, vrijeme je da kupcima ponudimo šargarepu - u obliku automatske distribucije DHCP adresa. Dobar administrator će, naravno, i ovdje varati - distribuirat će adrese samo preko MAC-a, ali mi ćemo samo staviti stvari u perspektivu. # pkg_add -r isc-dhcp3-server # cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf Dodajte sljedeće linije u /etc/rc.conf datoteku: dhcpd_enable="DA" dhcpd_flags="-q" dhcpd_ifaces="em1" Također morate ispraviti najvažniju konfiguraciju /usr/local/etc/dhcpd.conf: opcija naziv domene "example.com"; opcija domen-name-serveri 172.16.0.1; opcija subnet-mask 255.255.255.0; default-lease-time 3600; maksimalno vrijeme zakupa 86400; ddns-update-style nema; podmreža 172.16.0.0 mrežna maska ​​255.255.0.0 (opseg 192.16.0.11 172.16.0.15; opcijski ruteri 172.16.0.1; ) Uključite struju: # /usr/local/etc/rc.d/isc-dhcpd start To je vjerovatno sve, najvažnije. Ovaj članak ne pretenduje da bude apsolutno potpun i informativan, već ukratko opisuje faze koje se moraju završiti da bi se server doveo u radno stanje. Dalje - samo podešavanje i ponovno podešavanje. Ne zaboravite također da ovo nije jedini način konfiguracije servera - u Unixu uvijek postoji alternativa i možete koristiti potpuno različite aplikacije.

Imate svoju lokalnu mrežu,
odlučili ste da je vrijeme da ga povežete na internet putem namjenske linije. Pa, kakva dobra stvar, danas ću pokušati za vas
pomozite malo sa ovim :) Počnimo sa instalacijom FreeBSD-a, pošto smo opsednuti
sigurnost, treba se pobrinuti unaprijed :) Ugasi sve, odgovori svuda
definitivno ne :), uključićemo šta nam treba kasnije :) Prilikom instalacije sistema pitaće vas
“Želite li vidjeti kolekciju portova?”, odgovorite da. Sada ćemo instalirati dodatne
softver. Idemo u odjeljak za sigurnost i tamo biramo program pod nazivom PortSentry, trebat će nam kasnije :) Nakon instalacije trebamo kompajlirati
kernel... Uzmimo gotov GENERIC kernel kao osnovu. Nalazi se na /sys/i386/conf. Pažljivo napišite novi kernel za sistem, uklonite sve što nije potrebno (npr. uklonite podršku za USB, COM, LPT, SCSI, RAID i druge uređaje koje nećete koristiti u sistemu, ne treba vam USB, nećete ga povezivati ​​na ruter uređaje sa USB podrškom, a isto uradite sa svim ostalim, pogotovo jer će to povećati performanse sistema u cjelini... Detaljnije informacije naći ćete u LINT datoteci) . Zatim dodajte sljedeće redove novom kernelu:

Opcije IPFIREWALL #Omogući podršku za zaštitni zid
Opcije IPDIVERT #ova opcija je potrebna da bi NAT radio
Opcije IPFIREWLL_VERBOSE #Neka firewall piše dnevnike
Opcije IPFIREWALL_VERBOSE_LIMIT=10 #Ograniči unose dnevnika za događaje
Opcije TCP_DROP_SYNFIN #Ne prihvatajte ostavljene pakete
Opcije ICMP_BANDLIMIT #Ovo je opcija za sprječavanje DOS napada :)
Opcije ACCEPT_FILTER_DATA #Ovu opciju obično omogućavam :)
Opcije TCP_RESTRICT_RST #Ova opcija bi također trebala biti omogućena

config proxy, cd ../../compile/proxy, make zavisno, make, make install

To je to, čestitam, upravo ste kompajlirali kernel, ako nešto ne radi, kompilacija
stao - vidi, možda si uradio nešto pogrešno, ovo se dešava i pokušajte ponovo da izgradite kernel. Zatim ponovo pokrećemo sistem. I naša mašina bi se trebala pokrenuti s novim kernelom. Ako to nije slučaj
dogodilo, nemojte se uznemiravati - sistem se može pokrenuti sa starim kernelom. Da biste to uradili, kada
boot, kada piše da li želite da uđete u režim oporavka, pritisnite Enter, tamo
dajte naredbu unload, zatim učitajte kernel.old i pokrenite sistem. To je to, sistem će se pokrenuti sa starim kernelom.

Podrazumevano, sistem čeka 9 sekundi pre pokretanja.
Idemo u /boot folder i tamo uredimo datoteku loader.conf, tamo moramo dodati sljedeći red
boot_autodelay=0, ovo je urađeno tako da sistem ne čeka 9 sekundi na odgovor korisnika, već nam je potreban kako bi ako se sistem ponovo pokrenuo, brzo otišao na mrežu :) Dalje idemo na
/etc folder i počnite uređivati ​​datoteku rc.conf. Ispod je primjer s komentarima, tako da možete shvatiti
neće biti teško:

hostname="zlobix.evil.com" #Mrežno ime vaše mašine
firewall_enable="DA" #Omogući zaštitni zid
firewall_script="/usr/local/etc/firewall.conf" #puta do datoteke sa pravilima zaštitnog zida
firewall_type="close" #Firewall tip, ovaj tip zabranjuje sve!
firewall_logging="DA" #Zadajte našem firewall-u da piše dnevnike
natd_program="/sbin/natd" #Idi do natd demona
natd_interface="ed0" #Na kom interfejsu se NAT zadržava, interfejs treba da bude okrenut ISP-u (inetrnet servis provajder)
tcp_extension="NE" #Onemogući opasne ekstenzije za TCP/IP
tcp_keepalive="YES" #Postavite ovu opciju, vaš ruter će se manje buditi
podložni DOS napadima.
tcp_drop_synfin="DA" #Ne prihvatajte ostavljene pakete
tcp_restrcit_rst="DA" #Ne sjećam se šta znači, ali preporučujem da ga uključite :)
icmp_drop_redirect="DA" #Ne radimo sa ICMP-om
paketi
icmp_log_redirect="DA" #Zapisujemo ICMP pakete
ifconfig_lo0="inet 127.0.0.1" #konfiguriranje adrese povratne petlje,
ostavite kako je ovdje navedeno

ifconfig_ed0="inet 167.65.89.147 nemask 255.255.255.192" #u ovom primjeru imamo ovo
interfejs je okrenut ka provajderu, gde je ed0 ime interfejsa, inet
IP - adresa koju izdaje provajder, netmask subnet mask.

ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0" #konfigurisanje internog interfejsa, odnosno koji je okrenut lokalnoj mreži

ifconfig_ed1_alias0="inet 192.168.1.1 netmask 255.255.255.0" # možete povezati nekoliko na jedan mrežni interfejs odjednom
IP adrese (IP aliasing), u ovom primjeru se pretpostavlja da je naša mreža logično podijeljena na dvije podmreže 192.168.0.0/24 i 192.168.1.0/24 gdje je /24
- kod maskiranja pomoću CIDR metode, što odgovara
maska ​​podmreže 255.255.255.0

syslogd_enable="YES" #Omogući demona koji
bit će odgovoran za dnevnike
inetd_enable="NE" #Isključite ovu uslugu sigurno!
named_enable="NE" #isključite i ovo, nećete koristiti svoj ruter kao DNS server :)
nfs_client_enable="NE" # Ispod tri parametra su odgovorna za podršku mrežnom sistemu datoteka, moj savjet vam je da i njega isključite
nfs_server_enbale="NE"
nfs_reserved_port_only="NE"
fsck_y_enable="DA"
portmap_enbale="NE" #onemogući portmapper
sshd_enbale="YES" #Omogući ssh da možemo daljinski upravljati našim ruterom :)
sshd_programm="/usr/sbin/sshd/" #put do ssh demona
sshd_flags="" #Sshd startup zastavice, ako ne znate, ostavite kako jeste
defaultrouter="167.65.89.1" #Upstream ruter našeg provajdera
getaway_enbale="YES" #Omogućite gateway na našoj mašini
icmp_bmcastecho="NE" #Prekidamo odgovore na eho poruke ICMP protokola, ovo će nam uštedjeti živce :)
cron_enable="NE" #Ne znam, ali većina ljudi uključuje Cron, ali ja ga isključujem jer mi ne treba baš na ruteru...
clear_tmp_enable="DA" #Obrišite tmp direktorij svaki put kada se sistem pokrene
lpd_enable="NE" #Nećete moći ni da štampate sa rutera, pa ga i vi odrežite
usbd_enable="NE" #Onemogući demon da podržava USB uređaje
sendmail_enable="NE" #Odsjecanje sendmaila, mjesta koje najviše curi u FreeBSD-u, stalno pronalaze neke greske :))))
kern_securelevel_enable="DA" #Omogući sigurnost
kern_securelevel="0" #Postavite tip sigurnosti

Dakle, nakon što smo se pozabavili rc.conf, moramo da konfigurišemo naš ruter da radi sa DNS-om, otvorite datoteku resolv.conf u istoj fascikli i upišite ovo:

nameserver="167.65.88.18" #DNS adresa servera našeg provajdera
nameserver="167.65.88.17" #Adresa rezervnog DNS servera našeg provajdera

Kao što ste već shvatili, nakon nameserver="" je naznačeno u navodnicima
IP adresa DNS servera. Bolje ne dodavati DNS server na lokalnu mrežu, Bog čuva najbolje :) Došlo je do ssh-a.
Moramo to osigurati 🙂 i povećati zaštitu,
pa idite u /etc/ssh folder i otvorite sshd_config. A mi uređujemo sljedeće:

#sshd_config
Port 666 #Ovaj port nam čini ssh zabavnim :)
Protokol 2 #Koristimo sigurniji način prijenosa podataka
PermitRootLogin no #Onemogući root korisniku da se prijavi, za naše potrebe napravićemo posebnog korisnika :)
PrintLastLog yes #Prikazuje datum posljednje prijave
PermitEmptyPasswords no #Zabrani prijavu korisnika sa praznom lozinkom

Nakon što smo to shvatili, idemo na firewall...

U ovom članku ćemo pogledati mrežna sučelja u FreeBSD 11.1, prikazaćemo mrežnu konfiguraciju kroz /etc/ konfiguracioni fajl rc.conf, odnosno svrha statički podešavanja i njihovo primanje DHCP. Hajde da zapišemo adrese DNS-serveri, podešavanje domaćini i razmotrite uputstva privremene postavke mreže.

Pogledajte mrežna sučelja.

Prvo, da razjasnimo: Postoje dva stanja mrežne kartice U.P.(uključen) i DOWN(nije uključen).

Prvi korak je da pogledamo naša mrežna sučelja, mi ćemo to gledati kao tim ifconfig.(Sl.1) Izlaz komande prikazuje sva sučelja U.P. I DOLJE.

Ifconfig

ifconfig -aće vam pokazati istu stvar.

Ifconfig -a

Ovdje postoje neke razlike od ifconfig V Ubuntu server.(V Ubuntu server "ifconfig" prikazuje samo interfejse U.P.,"ifconfig -a" prikazuje sva sučelja i U.P. I DOWN)

Sl.1 - Rezultat unosa ifconfig komande.

I šta onda vidimo:

  • em0- naša mrežna kartica, sa IP adresom 192.168.3.11 .
  • em1- druga mrežna kartica, nije konfigurisana.
  • lo- lokalna petlja, svi je imaju po defaultu.

Samo za pregled interfejsa U.P., koristi se naredba ifconfig -u(Sl.2):

Ifconfig -u

i samo za pregled interfejsa DOWN, koristi se naredba ifconfig -d(Sl.3):

Ifconfig -d
Slika 2 - Rezultat unosa ifconfig -u komande.
Sl.3 - Rezultat unosa ifconfig -d komande.

U budućnosti ću pokazati primjere postavki na interfejsu "em0".

Da biste omogućili interfejs, koristite naredbu ifconfig"INTERFACE-NAME" gore.

Ifconfig em0 up

Da biste isključili sučelje, koristite naredbu ifconfig "INTERFACE-NAME" dolje.

Ifconfig em0 down

"igraj se" sa interfejsom, osim ako ste, naravno, povezani preko ssh, i ostaviti u stanju U.P..

Podešavanje mreže putem konfiguracionog fajla.

Da konfigurišemo statičku ili dinamičku IP adresu, moramo da uredimo konfiguracioni fajl mrežnog interfejsa - /etc/ rc.conf uredit ćemo ga pomoću uređivača teksta vi.(Sl.4) Odmah ću to reći da bih uređivao u vi potrebno je da pritisnete slovo "ja", a da biste sačuvali i zatvorili dokument potrebno je da kliknete "Itd" enter ":wq!" i pritisnite "Enter".

Slika 4 - vi /etc/rc.conf.

Dobijanje mrežnih postavki putem DHCP-a.

Da biste dodijelili postavke za primanje putem DHCP-a, morate unijeti (ili promijeniti postojeću) liniju u /etc/ datoteci rc.conf.(Sl.5)

ifconfig_INTERFACE-NAME="DHCP"

Ifconfig_em0="DHCP"
Slika 5 – Prijem mrežnih postavki putem DHCP-a.

Ponovno pokretanje mrežne usluge netif.(Sl.6)

/etc/rc.d/netif restart Slika 6 - Ponovno pokretanje FreeBSD mrežnog servisa.

Gledamo aktivna mrežna sučelja, vidimo IP adresu sučelja primljenog preko DHCP-a em0- 192.168.3.6 (Sl.7)

Ifconfig -u

Ping 8.8.8.8
Slika 7 – Provjera aktivnih interfejsa i pristupa mreži.

Pingovi dolaze. Sve je uredu!

Ručno određivanje mrežnih postavki.

Dodijeliti statičku adresu za našu Freebsd potrebno u /etc/ datoteci rc.conf unesite dva reda (slika 8)

ifconfig_INTERFACE-NAME="inet IP ADRESA-FREEBSD netmask MASK-NET "

defaultrouter=" IP-ADRESA GATEWAY-a "

Ifconfig_em0="inet 192.168.3.11 mrežna maska ​​255.255.255.0" defaultrouter="192.168.3.1"
Slika 8 - Statička podešavanja mrežnog interfejsa.

Ponovo pokrenite mrežni servis.

/etc/rc.d/netif restart

Provjera aktivnih interfejsa

Ifconfig -u

Internet vezu provjeravamo pingovanjem Google osmice.

Ping 8.8.8.8

Postavljanje DNS-a.

IP adrese DNS servera se čuvaju u /etc/ datoteci resolv.conf(Sl.9)

Otvaranje resolv.conf u uredniku vi.

Vi /etc/resolv.conf

Enter IP adresa DNS server. (Možete navesti onoliko adresa koliko želite.)

Server imena 192.168.3.1 server imena 8.8.8.8 server imena 8.8.4.4

Ako nemate fajl resolv.conf zatim ga kreirajte u direktoriju /etc

Dodirnite /etc/resolv.conf
Slika 9 - Sadržaj datoteke resolv.conf.

Fajl /etc/hosts.

Fajl /etc/ domaćini sadrži tabele koje mapiraju DNS imena u IP adrese. Vaš server će prvo pristupiti datoteci domaćini, a zatim na DNS server.

Lično, smatrao sam korisnim dodati domaćini snimajući ovo freebsd(LAN IP adresa - naziv servera). Sada možemo navesti DNS ime, a ne IP adresu, u svim konfiguracijskim datotekama, i ako je potrebno, promijeniti našu IP adresu u najkraćem mogućem roku ispravljanjem domaćini i postavke interfejsa u /etc/ rc.conf.

Ovo je samo primjer šta treba da uradite nije potrebno.

Počinjem uređivati ​​(slika 10):

Vi /etc/hosts

ulazim:

192.168.3.11 freebsd.itdeer.loc Slika 10 - Sadržaj hosts fajla.

Provjerit ću pingovanjem imena od domaćini.(Sl.11)

Ping lokalnog hosta ping freebsd.itdeer.loc
Slika 11 - Pingovanje imena sa hostova.

Privremena dodjela IP adrese.

Da budem iskren, ne znam za šta bi privremena dodjela mrežnih postavki mogla biti korisna. Osim ako recimo imate neki server koji je namenjen samo vašoj lokalnoj mreži i odjednom odlučite da brzo ažurirate softver preko interneta na ovom serveru, da ne idete na gateway, da ne distribuirate internet na traženu IP adresu adresa itd. Možete proći sa nekoliko komandi.

Na primjer, znamo to 192.168.3.109 Definitivno imamo pristup Internetu, ovu IP adresu dodeljujemo našem interfejsu, takođe treba da navedemo mrežnu masku (slika 12):

Ifconfig em0 192.168.3.109 mrežna maska ​​255.255.255.0

ili naredba sa kratkim unosom mrežne maske.

Ifconfig em0 192.168.3.109/24
Slika 12 – Određivanje privremenih postavki za em0 mrežni interfejs.

Internet se možda neće pojaviti jer zadani gateway nije naveden. Registrujemo ga i pingujemo Google osmice (slika 13).

Route add default 192.168.3.1 ping 8.8.8.8
Fig.13 – Odredite podrazumevani gateway. Provjeravam ping.

Možete vidjeti da li smo ispravno uneli naš default gateway u tabeli rutiranja. Prikazuje se pomoću naredbe "netstat -rn", Podrazumevani gateway će biti označen zastavicom U.G..(Sl.14)

Netstat -rn
Slika 14 - Izlaz tabele rutiranja.

Ako ste negdje napravili pravopisnu grešku ili imate naveden drugačiji pristupnik, onda možete uklonite zadani gateway.

Route del default

Ovim se završava privremena instalacija nakon ponovnog pokretanja servera ili zasebnog servisa umrežavanje, sve privremene postavke će nestati.

Dodajte rutu na mrežu 192.168.0.0/16 (Maska 255.255.0.0) kroz glavni gateway 192.168.3.1/24

Dodaj rutu 192.168.0.0/16 192.168.3.1

Mogućnost dodavanja rute koja označava punu masku.

Route add -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1

Preimenujte em0 interfejs u wan0.

Radi praktičnosti, neki administratori preimenuju interfejse tako da mogu odmah da vide čemu je interfejs namenjen. Recimo da imamo gateway sa dva mrežna interfejsa em0(Internet) i em1(lokalna mreža) i rad sa takvim imenima je nezgodan, jer imate veliki broj interfejsa možete se zbuniti. Mnogo je zgodnije raditi sa interfejsima wan0 I lan1.

Pokazat ćemo primjer preimenovanja interfejsa em0 V wan0 u /etc/ datoteci rc.conf.(Sl.15)

Ifconfig_em0="inet 192.168.3.11 mrežna maska ​​255.255.255.0"

Zamijenite sa dva reda:

ifconfig_ em0 _name=" wan0" ifconfig_ wan0="inet 192.168.3.11 mrežna maska ​​255.255.255.0"
Slika 15 - Preimenujte interfejse u /etc/rc.conf datoteci.

Ne zaboravite ponovo pokrenuti mrežnu uslugu:

/etc/rc.d/netif restart

Provjerit ću i unijeti naredbu ifconfig -u. Vidimo naše wan0 sa pravom IP adresa.(Sl.16)

Ifconfig -u
Fig.16 - Provjera novog imena interfejsa. ifconfig -u.


Ruter je uređaj koji omogućava pristup Internetu za računare povezane u lokalnu mrežu. Koristeći FreeBSD, možete napraviti sličan ruter i to se radi prilično jednostavno, razmotrite mogućnost izgradnje rutera za malu lokalnu mrežu od 20...30 radnih stanica.

Početni podaci - računar sa dve mrežne kartice sa instaliranim FreeBSD-om (trenutno koristi FreeBSD 8.4 STABLE), eksternom IP adresom koju je obezbedio naš provajder, IP adresom gateway-a provajdera i IP adresom DNS servera.

Da biste se pretvorili u ruter, trebate dodati samo jedan red u konfiguracijski fajl rc.conf:

# echo gateway_enable=”DA” > /etc/rc.conf

Što će omogućiti prolaz IP paketa sa jednog mrežnog interfejsa na drugi. Pomoću naredbe ifconfig saznat ćemo informacije o mrežnim sučeljima i odrediti koji će od njih biti “eksterni” (dodijelit ćemo mu IP adresu provajdera), a koji će biti “interni” (dodijelit ćemo mu nezauzetu IP adresu adresa interne lokalne mreže). Da vidimo šta dobijamo:


Definišemo “em0” kao eksterni interfejs (sa dodeljenim IP-om 192.168.5.39), “em1” kao interni uređivanjem rc.conf fajla (dodeljujemo ga, na primer, ip 192.168.0.240), gateway našeg provajder mora biti registrovan u istom fajlu

# echo defaultrouter=”xxx.xxx.xxx.xxx” > /etc/rc.conf

Gdje je xxx.xxx.xxx.xxx IP adresa mrežnog prolaza provajdera.

Kao rezultat toga, završio sam sa sljedećim rc.conf fajlom:


Zatim treba da registrujemo IP adresu DNS servera provajdera kako bismo mogli da pristupimo sajtu po njihovim imenima. Hajde da unesemo u konfiguracioni fajl resolv.conf

# echo server imena xxx.xxx.xxx.xxx > /etc/resolv.conf

Gdje je xxx.xxx.xxx.xxx IP adresa DNS servera.

Ako postoji više DNS servera, preporučljivo je da ih sve navedete, svaki u novom redu.


U našem slučaju to su IP adrese servera 192.168.5.200 i 192.168.5.201. Adresa 8.8.8.8 je DNS server velikog Google-a, u ekstremnim slučajevima, možete je koristiti.

Hajde da restartujemo...

# isključivanje –r sada

To je to, početna konfiguracija rutera je spremna (možete konfigurirati PC na lokalnoj mreži). Zatim ćemo razmotriti postavljanje zaštitnog zida, omogućavajući translaciju mrežnih adresa (NAT) i razne šeme rutiranja.

Pogledajmo postavljanje radnih stanica pod Windows OS-om za Internet (kako i gdje registrovati IP adresu računara, rutera i DNS-a). Kao aplikacija, za slučaj da nekom zatreba.

Nastavimo s konfiguracijom rutera (2. dio).

Wi-Fi ruter sa DHCP i DNS serverima FreeBSD 8.2

Šta želimo da dobijemo:
- tako da Wi-Fi klijenti budu na istoj podmreži kao i žičani.
- tako da žičani i bežični klijenti automatski primaju adrese putem DHCP-a
- da imate DNS za keširanje
- naravno da želimo da svi budu na mreži
- imati pristup internom serveru preko RDP-a

Općenito, želimo dobiti nešto slično u funkcionalnosti Dlink DIR-300 ruteru

šta imamo:
Celeron 700, 256 MB RAM-a, 80 GB IDE šraf i čudna matična ploča koja radi zdravo samo ako je ACPI onemogućen
mrežne kartice:

LAN - rl0 (10\100 neka vrsta realteka, pronađen iza ormara na poslu) rl0@pci0: 1 :8 :0 :class=0x020000 card=0x813910ec chip=0x813910ec rev=0x10 hdr=0x00 vendor = "Realtek Semiconductor" uređaj = Realtek RTL8139 Familija PCI FastEthernet NIC RTL- 8139 /8139C/8139D klasa = mrežna podklasa = ethernet WAN - stge0 (10\100\1000 asus adapter) stge0@pci0: 1 :5 :0 :class=0x020000card=0x81801043chip=0x102313f0 rev=0x41 hdr=0x00 vendor = "Sundance Technology Inc" uređaj = "IC Plus IP1000 Familija Gigabit Ethernet Adapter" klasa = mrežna podklasa = ethernet kartica - ralna ethernet kartica ral0@pci0: 1 :10 :0 :class=0x028000card=0x3a711186chip=0x03021814 rev=0x00 hdr=0x00 vendor = "Ralink Technology, Corp." uređaj = "bežični a/b (RT2525 2 .4GHz primopredajnik + RT2560 MAC/BBP)" klasa = mreža

bijela IP adresa koju obezbjeđuje provajder:
IP 9.9.9.9
maska ​​255.255.255.0
gateway 9.9.9.1
DNS1 9.9.9.254
DNS1 9.9.9.253
postavke se razlikuju od onih koje stvarno postoje, ali to ne mijenja suštinu

LAN raspon: 192.168.0.0 sa maskom 255.255.255.0

FreeBSD 8.2 OS instaliran:

# uname -a FreeBSD GATE 8 .2 -OTPUSTI FreeBSD 8 .2 -PUSTITI #0:Sub 9 Apr 20:13:28 OMSST 2011 root@GATE:/usr/src/sys/i386/compile/GATE i386

sadržaj /etc/rc.conf:

9 .9 .9 .1 9 .9 .9 .9 netmask 255 .255 .255 .0 " ifconfig_rl0="inet 192 .168 .0 .1 netmask 255 .255 .255 .0 "

sadržaj /etc/resolv.conf (DNS server):

nameserver 9 .9 .9 .254 nameserver 9 .9 .9 .253

Krenimo sa pripremama:

Uklanjamo sve nepotrebne drajvere iz kernela (ili ga ne uklanjamo, ovisno o tome što je zgodno) dok ostavljamo sve drajvere za bežične uređaje. Ako znate koji drajver je pogodan za vašu karticu, onda ga ostavite, a ostatak možete ukloniti. Nisam znao koji bi mi odgovarao, pa sam ostavio sve. Ponovo gradimo kernel sa opcijama:

uređaj if_bridge # Modul za rad mosta uređaj wlan # podrška 802.11 (Wi-fi) # Ne znam šta je ovo, učitava se automatski uređaj wlan_amrr # AMRR algoritam kontrole brzine prenosa uređaj wlan_xauth # Modul podrške za autorizaciju za režim pristupne tačke uređaj wlan_wep # Modul podrške za WEP sigurnosni algoritam uređaj wlan_tkip # Modul podrške za TKIP enkripciju uređaj wlan_ccmp # CCMP modul za podršku enkripciji uređaj pf # Koristim filter paketa kao zaštitni zid # podrška za algoritam čekanja (prioritetizacija saobraćaja) opcije ALTQ opcije ALTQ_CBQ # Opcije Klase Base Queuing (CBQ) ALTQ_RED # Nasumično rano otkrivanje (CRVENO) opcije ALTQ_RIO # CRVENA In/Out opcije ALTQ_HFSC # Hijerarhijski planer paketa (HFSC) opcije ALTQ_PRIQ # Prioritetno red čekanja (PRIQ) # Pošto imam jednojezgarni procesor, ne treba mi podrška za mnogo jezgara #options ALTQ_NOPCC # Potrebno za SMP build

kompajlirajte i instalirajte kernel:

# cd /usr/src # make buildkernel KERNCONF=GATE && \ napravi installkernel KERNCONF=GATE

Ponovo pokrenite i pogledajte šta se dešava:

8843 mtu 1500 options=8209b eter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 9 .9 .9 .255 8802 metrički 0 mtu 1500 opcije = 3808 eter 00 :50 :fc :ef:4d: 75 inet 192 .168 .0 .1 mrežna maska ​​0xffffff00 emitiranje 192 .168 .0 .255 medij : Eternet automatski odabir (100baseTX 8802 metrički 0 mtu 2290 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 Status automatskog odabira bežičnog Etherneta (automatskog odabira): nema lo0 operatera: zastavice = 8049 mtu 16384 opcije = 3 inet 127 .0 .0 .1 mrežna maska ​​0xff000000

Wi-Fi kartica je identificirana kao ral0. Već dobro. Možete ponovo izgraditi kernel i ukloniti nepotrebne bežične drajvere.

Uredite /etc/hostapd.conf u ovo stanje:

Uredite /etc/rc.conf:

keymap="ru.koi8-r" hostname="GATE" gateway_enable="DA" defaultrouter=" 9 .9 .9 .1 " sshd_enable="DA" ifconfig_stge0="inet 9 .9 .9 .9 netmask 255 .255 .255 .0 " # konfigurišite bežičnu karticu kao pristupnu tačku wlans_ral0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="up mediaopt hostap" # uklonite IP adresu iz rl0 interfejsa #ifconfig_rl0="inet 192.168.0.1 mrežna maska ​​255.255.255.0" # stvorite most između bežičnih i žičanih lokalnih mreža # i dodijelite mu IP adresu gatewaya lokalne mreže cloned_interfaces="bridge0" ifconfig_bridge0="inet 192 .168 .0 .1 netmask 255 .255 .255 .0 \ addm wlan0 addm rl0 gore" ifconfig_rl0="gore" # omogući funkcionalnost pristupne tačke hostapd_enable="DA"

Hajdemo ponovo pokrenuti. Da vidimo šta se desilo:

# ifconfig stge0: zastavice = 8843 mtu 1500 options=8209b eter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 mrežna maska ​​0xffffff00 emitiranje 9 .9 .9 .255 medij : Eternet automatski odabir (100baseTX ) status : aktivan rl0: zastavice = 8943 mtu 1500 opcije = 3808 eter 00 :50 :fc :ef:4d: 75 medij : Eternet automatski odabir (100baseTX ) status : aktivan ral0: zastavice = 8843 metrički 0 mtu 2290 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 status : radi lo0: zastavice = 8049 metrički 0 mtu 16384 opcije = 3 inet 127 .0 .0 .1 mrežna maska ​​0xff000000 bridge0:flags = 8843 mtu 1500 eter a6: 09 :ed :c1: 23 :38 inet 192 .168 .0 .1 mrežna maska ​​0xffffff00 emitiranje 192 .168 .0 .255 id 00 :00 :00 :00 :00 :00 prioritet 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 vrijeme je isteklo 1200 root id 00 :00 :00 :00 :00 :00 prioritet 32768 ifcost 0 luka 0 član: rl0 flags = 143 ifmaxaddr 0 luka 2 prioritet 128 trošak puta 200000 član: wlan0 flags = 143 ifmaxaddr 0 luka 6 prioritet 128 trošak puta 370370 wlan0:flags= 8943 mtu 1500 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 Način automatskog odabira bežičnog Etherneta 11g status: radi ssid kanal 1 (2412 MHz 11g) bssid 00 :26 :5a: 77 :38 :ba zemlja US authmode WPA2/ 802 .11i privatnost MIXED deftxkey 2 AES-CCM 2 :128 -bit AES-CCM 3 :128 -bit txpower 0 scanvalid 60 protmode CTS dtiperiod 1 -dfs

Sve je u redu, Wi-Fi i žičane kartice su povezane mostom i IP adresa visi na ovom mostu

Počnimo sa postavljanjem PF-a. PF vam omogućava da omogućite prioritet saobraćaja. Kratak opis možete pronaći ovdje:
http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html
kreirajte datoteku /usr/local/etc/pf.conf i dovedite je u ovo stanje:

# Ovdje definiram varijable sa kojima mi je zgodnije pisati skriptu. WAN="stge0" LAN="bridge0" LAN_POOL=" 192 .168 .0 .0 /24 "WANIP=" 9 .9 .9 .9 "SERVER=" 192 .168 .0 .3 "ADMIN=" 192 .168 .0 .2 "RDP_PORT=" 3389 "EXTRDP_PORT=" 33389 " # saobraćaj do i od ovih portova će biti odbijen na eksternom interfejsu DROP_PORTS="(135: 139 ,445}" # Šta učiniti nakon što paket pogodi pravilo blokiranja (blokiranje) # set block-policy drop - ispusti paket i ne radi ništa # set block-policy reject - odbacite paket i pošaljite poruku o grešci # domaćinu koji ga je poslao. postaviti blok-policy drop # Ne provjeravajte promet na lo0 postavite preskakanje na lo0 # Ne provjeravajte promet na interfejsu bridge0 (nemamo internih ograničenja) postavite preskakanje na $LAN # "Normalizacija" paketa. Opis ove opcije je, po mom mišljenju, dovoljan # su nejasne, ali bi, nadamo se, trebale pomoći protiv nekih vrsta mrežnih napada. ribati u svemu #Moja brzina je ~5000 kbps, i ovdje morate unijeti svoju brzinu altq na $WAN priq bandwith 5000Kb red čekanja (priv, ostalo) # Imam 2 reda # Za saobraćaj višeg prioriteta (RDP sa servera) red čekanja priv qlimit 25 prioritet 14 priq(crveno) # Za sve ostale queue other qlimit 30 prioritet 10 priq(zadano) # Veličine reda su preuzete, moglo bi se reći, sa plafona: (Ne previše # usredsredite se na njih, molim. Pokušajte sami odabrati veličinu reda # omogući NAT na eksternom interfejsu za LAN mrežu nat na $WAN od $LAN_POOL do bilo kojeg -> ($WAN ) # Proslijedite port na server # za zaštitu od majmuna grube sile koji skeniraju standardne portove rdr na $WAN proto tcp sa bilo kojeg na $WANIP \ port $EXTRDP_PORT -> $SERVER port $RDP_PORT # Prekinuli smo ping zahtjeve na našu adresu brzo blokirajte na $WAN proto icmp-u sa bilo kojeg na $WANIP icmp-type 8 # Ne bi trebalo biti saobraćaja sa NETBIOS-a na eksternom interfejsu brzo blokiraj na $WAN proto (tcp udp) sa bilo kojeg na bilo koji port $DROP_PORTS # omogući anti-spoof na WAN interfejsu # Citiram http://openbsd.corebsd.or.id/faq/pf/ru/filter.html: # Adrese se lažiraju kada napadač krivotvori original # IP adrese u paketima, oni se prenose ili kao ljuska njihovih stvarnih adresa, # ili oponašajte drugi čvor na mreži nakon što je korisnik lažiran # moći će pokrenuti mrežni napad bez otkrivanja pravog izvora # napada ili pokušavaju pristupiti mrežnim uslugama koje # ograničeno na određene IP adrese. antispoof quick za $WAN #Zabranite sav eksplicitno neovlašteni promet blokirati sve # ### Dolazni saobraćaj # Privilegovani saobraćaj brzi prolaz na $WAN proto tcp-u sa bilo kojeg na $WANIP port $EXTRDP_PORT queue priv # Normalan promet brzo prolazi na $WAN-u od bilo kojeg do $WANIP-a zadržava stanje u redu ostalo # Zapravo, prioritet u PF-u ne radi na dolaznom saobraćaju, ali ja imam pravila # i dalje piše. # ### Odlazni saobraćaj # Privilegovani saobraćaj brzo prolazi na $WAN proto tcp-u sa $WANIP \ porta $EXTRDP_PORT na bilo koji red čekanja stanja priv # Normalan promet brzo prolazi na $WAN-u sa $WANIP na bilo koji red čekanja stanja ostalo
pf_enable="DA" pf_rules="/usr/local/etc/pf.conf"

i ponovo pokrenite pf:

# /etc/rc.d/pf restart

Ispravnost kreiranja pravila provjeravamo pomoću naredbi:

pfctl -sn Postojeća NAT pravila
pfctl -sr Postojeća pravila emitovanja
pfctl -ss Uspostavljene veze
pfctl -si Razni brojači
pfctl -sa Sve navedeno odjednom
pfctl -sq -vvv Prikazuje status redova

Ažuriranje portova pomoću portsnap-a:

# portsnap dohvati Traženje portsnap.FreeBSD.org ogledala... 5 pronađena ogledala. Preuzimanje oznake snimka sa portsnap5.FreeBSD.org... završeno. Preuzimanje metapodataka snimka... završeno. Ažuriranje od srede juna 15 14 :21 :31 MSD 2011 do čet jul 21 11 :37 :27 MSD 2011 . Dohvaćanje 3 zakrpe metapodataka.. gotovo. Primjena zakrpa metapodataka... završeno. Dohvaćanje 3 fajlovi metapodataka... urađeno. Dohvaćanje 9656 zakrpe..... 10 .... <Часть вывода удалена> ...........9650 ...gotovo. Postavljanje zakrpa... gotovo. Dohvaćanje 1282 novi portovi ili fajlovi... gotovo. # portsnap ekstrakt /usr/ports/.cvsignore /usr/ports/CHANGES .................<Часть вывода удалена>............. /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ Izrada novih INDEX fajlova... završeno.

Koristimo dnscache iz paketa djbdns kao DNS server za keširanje, jer troši manje memorije i smatra se sigurnijim od BIND DNS servera uključenog u FreeBSD.

Instaliraj djbdns:

# cd /usr/ports/dns/djbdns && učini instalaciju čistom

Montiramo i ugrađujemo sa sljedećim opcijama:

DUMPCACHE trajna keš memorija za dnscache IPV6 IPv6 podrška od Felixa von Leitner IGNOREIP ignoreip2 zakrpa od Russell Nelson JUMBO jumbo zakrpa od Claudiua Costina [X] MAN stranice priručnika Gerritt Pape PERSISTENT_MMAP persistent mmap patch od Lennerta Buylera S

djbdns će također povući daemontools port. daemontools je dizajniran za pokretanje demona i nadgledanje njihovog rada. Odnosno, ako neki demon pod njegovom kontrolom "padne", onda će ga daemontools ponovo pokrenuti.

Kreiramo grupu dnsusers, koja će uključivati ​​korisnike pod kojima će se pokrenuti sam dnscache i dnslog (logger za djbdns):

kreirajte korisnika za dnslog:

# pw useradd dnslog -s /sbin/nologin -d /dev/null -G dnsusers

kreirajte folder sa čijim sadržajem radi daemontools:

pokrenite daemontools:

pošto se konfiguracija dnscache nalazi u /usr/local/etc/djbdns, a daemontools radi sa /var/service folderom, pravimo link:

# ln -s /usr/local/etc/dnscache /var/service/dnscache

/usr/local/etc/dnscache/env folder sadrži datoteke sa naprednijom konfiguracijom dnscache, ali u ovom slučaju smo prilično zadovoljni zadanim vrijednostima.

Da bi server normalno funkcionisao, potrebno je da mu postavite adrese servera višeg nivoa. Za svaku zonu postoji datoteka sa istim imenom kao i ime zone, koja se nalazi u /usr/local/etc/dnscache/root/servers. Svaki fajl sadrži IP adrese servera odgovornih za ovu zonu. Pošto sve zahtjeve preusmjeravamo na DNS servere provajdera, njihova imena upisujemo u datoteku pod nazivom “@” (odgovorna za korijensku zonu).

Ponovo pokrenite dnscache:

Instalirajte DHCP server (napravio sam ga sa sljedećim opcijama):

# cd /usr/ports/net/isc-dhcp41-server && učini instalaciju čistom Opcije za isc-dhcp41-server 4 .1 .e_1, 2 DHCP_IPV6 Omogući podršku za IPv6 [X] DHCP_PARANOIA Omogući podršku za chroot DHCP_LDAP Eksperimentalna podrška za LDAP backend DHCP_LDAP_SSL Podrška za LDAP vezu preko SSL/TLS-a

Dovodimo konfiguraciju DHCP servera (/usr/local/etc/dhcpd.conf) u sljedeće stanje:

lokalna adresa 192 .168 .0 .1 ; default-lease-time 600 ; maksimalno vrijeme zakupa 7200 ; autoritativan; ddns-update-style interim; log-facility local7; subnet 192 .168 .0 .0 netmask 255 .255 .255 .0 (domet 192 .168 .0 .10 192 .168 .0 .250 ; opcija rutera 192 .168 .0 .1 ; # Ako imate omogućen SAMBA, onda možete pokušati dati klijentima # također vrijednost WINS servera. # opcija netbios-name-servers 192.168.0.1; # već imamo svoj vlastiti DNS server, pa dajemo njegovu adresu opcija domen-name-serveri 192 .168 .0 .1 ; } # "veže" određene MAC adrese za određene IP adrese administrator hosta ( hardverski ethernet 03 :03 :03 :03 :03 :03 ; fiksna adresa 192 .168 .0 .2 ; ) host server ( hardverski ethernet 04 :04 :04 :04 :04 :04 ; fiksna adresa 192 .168 .0 .3 ; }

Dodajte sljedeće linije u /etc/rc.conf:

i pokrenite DHCP server:

Sve je uredu. Postignuta je funkcionalnost najjednostavnijeg dir-300.

Dijeli