Bygga din egen gateway brandvägg (5 / 7 steg)
Steg 5: Konfigurera din programvara
» Installera och konfigurera OpenSSH för nätverket terminalemulering. I förväg delade nycklar rekommenderas definitivt, men inte ett krav.
» Bekräfta SSH-anslutning från en annan dator i det lokala nätverket använda OpenSSH (* nix) eller kitt (Windows)
» Installera och konfigurera den portade versionen av Openbsd's PF-paketfiltrering, stateful firewall. Du kan ta en titt på pf.conf exempel på vad din PF konfigurationsfil kan se ut. Dessutom är två bra källor för information som hänför sig till PF PF User Guide och Peter Hansteen Firewalling med Openbsd's PF paketfilter. Tack för resursen Peter!
» Installera och konfigurera någon annan programvara som du vill. Jag rekommenderar den Squid Cache-proxy (installation som en reverse-proxy är trevligt också), Snort IDS (Intrusion Detection System), ClamAV (antivirus) med vectoring genom brandväggen, Bruteforceblocker (SSH bruteforce blockerare) och Snarf (webbgränssnitt för Snort loggar).
Craig McLean var vänlig nog att låta mig integrera en hur-till artikel om samma ämne i denna. Vi har enats om att lägga upp några av hans artikel här. Vänligen inse, han, som jag skrev denna artikel från minnet. Om du hittar några fel i det, var god kontakta oss. Vad som följer är hämtat direkt från hans howto.
Saker att besluta
Måste du bestämma vad du vill att ditt interna nätverk för att se ut när detta är över, och som maskiner bör ha tillgång till vad. Detta är inte så komplicerat som det låter men det gynnar oss för att arbeta ut det i förväg. I den här guiden kommer jag att använda följande:
172.16.0.0/16 (172.16.0.1 till 172.16.255.254) kommer att vara den inre network.172.16.3.200 blir brandväggens interna IP-address.172.16.4.0/24 (172.16.4.1 till 172.16.4.254) ska tilldelas till en DHCP-intervall.
Saker att veta
» Du måste veta vad ditt inre - och yttre-facing gränssnitt och IP-adresser.
» Du måste också veta den IP-adress till DNS-servrar tillhandahålls av din Internetleverantör.
» FreeBSD enhetsnamnet för din interna och externa gränssnitt. De kallas så: namnet på drivrutinen används för enhet följt av ett tal. Detta nummer är vanligtvis 0 (noll), men om du har flera enheter med samma drivrutiner, varje enhet kommer att ha ett unikt nummer som börjar på noll och räkna upp. Exempelvis bygger två Realtek NIC vilja apear som rl0 och rl1. lo0 är enheten loopback (IP 127.0.0.1). Om du har konfigurerat pflog för att övervaka din brandvägg, ser du pflog0 här också. (John)
I denna guide, ska jag använda följande:
» "xl0" kommer att vara min interna gränssnitt.
» 172.16.3.200 kommer att vara min interna IP-adress. Interna värdar måste cirkulera paket genom detta.
» "dc0" kommer att vara min externa gränssnitt.
» 82.30.189.185 kommer att vara min mot internet IP-adress, som används för maskiner i omvärlden för att ansluta till mig.
Du kanske inte vet din externa IP ännu, men när installationen är klar bör du använda:
# ifconfig - a
att hitta den.
Om IP tilldelas av Internetleverantören är dynamisk, kan du behöva konfigurera DHCP på din externa gränssnitt. Använda dhclient. Även när du använder DHCP på ditt interna nätverk är mer användarvänligt, statisk IP-adressering fungerar alldeles utmärkt också. Det kan också göra säkerhetsgranskningar mer okomplicerat. (John)
Ställa in systemet
Det finns en viktig fil på din nya FreeBSD maskin. Det kallas /etc/rc.conf. Här kommer du sätta information om olika saker. Hostname av systemet, IP-adresser, de tjänster du vill att starta när systemet startas och mycket mer. Du bör ta dig tid att titta på det innan vi gå vidare, och medan du är där - gör en säkerhetskopia!
Lägga till en användare
Om du inte gjorde detta under installera, bör du lägga till en icke-root-användare som du kan använda i vardagen. Detta kan göras med kommandot:
# adduser
Kontrollera att användaren är i gruppen "hjulet". Detta är en speciell grupp som innehåller alla användare som kan bli "root". Om du hittar "su" avvisar du, är det förmodligen eftersom du inte är medlem i gruppen "hjul".
Kommandot pw kan också användas för att lägga till/ändra/ta bort användare och grupper. (John)
Ställ in OpenSSH
OpenSSH (öppen Secure SHell) bör din vapen val när du ansluter till din nya FreeBSD värd. Det är säkert, ingår som standard med OS, och det finns valfritt antal klienter kan du ansluta till den. Linux-maskiner har ssh som standard, windows-användare kan få tag i PuTTY (www.chiark.greenend.org.uk/ ~sgtatham/putty/).
OpenSSH kan aktiveras på FreeBSD genom att redigera /etc/rc.conf och att se till att du har följande:
sshd_enable = "Ja"
i där.
Datorn kommer att vara på internet, och människor kommer att försöka och få i. Ett sätt de kommer att göra detta är att försöka gissa användarnamn och lösenord, som ssh används som standard. Om du inte absolut behöver ssh från internet, se till att du bara lyssna för anslutningar på det interna gränssnittet. Gör detta genom att redigera den ssh daemon konfiguration fil som lever på /etc/ssh/sshd_config och se till att du har
ListenAddress 172.16.3.200
där, ersätta 172.16.3.200 med interna IP-adress vi beslutat om tidigare.
Nu kan du köra
# /etc/rc.d/sshd start
starta tjänsten.
Om du bestämmer dig för att du behöver ssh tillgång från omvärlden, bör du inaktivera lösenordsbaserad åtkomst och istället använda publik-nyckel autentisering. Google kommer att berätta hur!
Brandvägg och NAT
Främst, vi vill ha detta system skyddas från onda på internet med hjälp av brandväggar och dela ut vår internetuppkoppling till annan utrustning i våra nätverk med NAT (Network Address Translation).
Brandväggen
När Craig covers med IP-Filter här, kommer jag lägga en handledning för att använda PF när jag får chansen. För nu, kan du hänvisa till PF Guide (openbsd.org/faq/pf/) och exempelkonfigurationsfil att jag har bifogat (pf.conf). (John)
Först vill jag peka på en annan stor URL, det är den berömda "ipf HOWTO": www.obfuscation.org/ipf/. Hålla den till hands när vi går igenom dessa steg.
I en minut, "i" och "out" kommer att ha mycket specifik betydelse, men låt oss inte oroa dig ännu. Logiskt, vill vi göra följande:
» Tillåta interna IP-trafik brandväggen maskinen.
» Omdirigera (om nödvändigt) intern IP-trafik till internet.
» Omdirigera svar intern trafik tillbaka till enskilda system.
» Låta maskiner på internet-åtkomst till vissa portar/tjänster i brandväggen.
» (kanske) omdirigera maskiner på internet tillgång till andra datorer i det lokala nätverket.
» Blockera allt annat.
Vi måste först aktivera ipfilter. Det måste följande i /etc/rc.conf
ipfilter_enable="yes"ipfilter_program="/sbin/IPF"ipfilter_rules="/etc/IPF.conf"ipfilter_flags= ""
Detta bör vara ganska självklar, och det första att notera är platsen för regelfilen, /etc/ipf.conf. Det är där alla våra regler kommer att leva.
Härifrån och framåt, "i" och "ut" behöver användas mycket noga, eftersom de hänvisar till "i" och "ut" på ett gränssnitt. Ha detta i åtanke när vi går på.
Vi beslutade tidigare vad logik vi ville ha, och kan nu omsätta det i reglerna:
# Första, blockera allt förutom specified.block i på xl0 # våra inre interfaceblock ut på xl0block i på dc0 # våra externa interfaceblock ut på dc0 # tillåter våra interna nätverk för att komma in i den inre interfacepass i på xl0 från 172.16.0.0/16 till någon # tillåta vår interna gränssnitt att prata med den inre networkpass ut på xl0 från 172.16.3.200 till # Tillåt tcp eller udp från våra externa gränssnitt och utåt till någonstans , att hålla # "staten tabell" av anslutningar och montering splittrad packetspass ut på dc0 proto tcp/udp från någon till någon hålla staten hålla frags # Tillåt "ping" och dess vänner ut från den externa interfacepass ut på dc0 proto icmp från någon till någon ## tjänster ## vi ska köra en webbserver, så behöver vi port 80pass i på dc0 proto tcp från någon till någon hamn = 80 flaggor S hålla frags hålla statepass i på dc0 proto tcp från någon till någon hamn = 443 flaggor S hålla frags hålla staten # likaså sendmail, så småningom. Lämna det kommenterade för nu, ändå. # vidarebefordra i dc0 proto tcp från någon till någon hamn = SMTP-flaggor S hålla frags hålla staten # pass i på dc0 proto tcp från någon till någon hamn = smtps flaggor S hålla frags hålla staten
De är grunderna. Du kan starta brandväggen, använda dessa regler, genom att utfärda:
# /etc/rc.d/ipf start
Om du ändra reglerna och vill ladda brandvägg tabeller, kan du använda:
# ipf-Fa -f /etc/ipf.conf
som översätter som "Spola alla, läsa nya regler från filen /etc/ipf.conf". Om du vill rensa ut dom din brandvägg bara använda:
# ipf-Fa
Visa alla regler för inkommande paket:
# ipfstat -i
och utgående:
# ipfstat -o
Funktionen "ogiltigt sidfel" i FreeBSD är enorm. Detta har bara skrapat på ytan av vad som är möjligt eller önskvärt. Det finns mer information i manpages och på länken i början av detta avsnitt. Jag föreslår starkt att du tar en titt på båda.
Varning: Tror mycket hårt innan du ändrar brandväggsregler om du är ansluten över TCP/IP. Du kan hitta om svårt att återhämta sig om du gör fel, och plötsligt befinner dig frånkopplad :-)
NAT
Nästa vi vill konfigurera nätverksadressöversättning för andra enheter i våra interna nätverk. NAT kan många interna klienter dela en internet-adress.
För att göra detta, måste vi lägga till några fler rader i /etc/rc.conf:
gateway_enable="yes"ipnat_enable="yes"ipnat_program="/sbin/Ipnat"ipnat_rules="/etc/Ipnat.rules"ipnat_flags= ""
Ganska mycket som brandvägg grejer, men denna gång är reglerna i /etc/ipnat.rules.
NAT är verkligen lätt att ställa in. Vi vill tillåta något för 172.16.0.0/16 att använda internet, så våra regeln är:
karta dc0 172.16.0.0/16 -> dc0/32 portmap tcp/UDP-automap dc0 172.16.0.0/16 -> dc0/32 proxy hamn ftp ftp/tcp
Den första raden kartor utgående på dc0 ska visas från "dc0/32", vilket är en förkortning för "IP-adressen för närvarande associeras med gränssnittet dc0" tillgång till internet.
Den andra raden kommer proxy outbout FTP-åtkomsten. Detta är nödvändigt om du inte vill använda passiv ftp hela tiden eftersom FTP-protokollet suger.
För att få ipnat igång, gör:
# /etc/rc.d/routing start # /etc/rc.d/ipnat start
Vid denna punkt, någon klient på 172.16.0.0 nätverk som har en nätmask 255.255.0.0 eller striktare och 172.16.3.200 som dess router bör kunna få tillgång till internet, med sitt paket som "mappas" av NAT setup på brandväggen maskinen.
DHCP-Server konfiguration
Det sista steget i installationen av systemet kommer att förse dina kunder med DHCP-information. Detta gör centraliserad förvaltning bör saker förändring, och automatiskt tilldelar IP-adresser (och ännu viktigare, gateway information) till klienter. Vi kommer att fördela från 172.16.4.1 till 172.16.4.100 för kunder...
För att göra detta, kommer att vi använda ISC'S DHCPD från hamnen insamling.
# CD-/usr/ports/net/isc-dhcp3-server # gör
I menyn väljer du beroende på vilket alternativ du vill använda (jag skulle rekommendera minst PARANOIA och fängelse)
# gör installera # cd/usr/lokal/etc # mv dhcpd.conf.sample dhcpd.conf
Sedan redigera filen dhcpd.conf så att det ser ut så här:
DDNS-uppdatering-stil ingen logg-anläggningen local7; delade-Dynamic-4-undernät {alternativet routrar 172.16.3.200;option domän-namn-servers nnn.nnn.nnn.nnn;subnet 172.16.0.0 nätmasken 255.255.0.0 {range 172.16.4.1 172.16.4.100;}
Du kommer att behöva ersätta nnn.nnn.nnn.nnn med din Internetleverantörs domän namnservrar.
Se sedan till /etc/rc.conf innehåller:
dhcpd_enable = "Ja"
och starta DHCP-servern med hjälp av
# /usr/local/etc/rc.d/isc-dhcpd.sh start
Tack Craig, jag uppskattar hjälp. Även mitt hemnätverk är lite annorlunda än Craigs, gäller detsamma fortfarande. Här är hur min är setup:
» Cisco uBR900 kabelmodem ger anslutning till internet.
» Modemet är anslutet till min brandvägg. WAN IP på brandväggen tilldelas via DHCP från modemet.
» Den LAN-nätverken är 192.168.0.0/16 och statiska (ingen DHCP)
» Min brandvägg ansluter till en 24port switch. Detta är ansluten till en 108Mbps 802.11g D-link WAP och en gigabit-switch med 8port. WAP har en statisk IP, men ger trådlös åtkomst via DHCP.
» Min brandvägg ger ingen inre skydd. Alla interna trafiken rör sig unprohibitted av brandväggen. Detta inkluderar utgående trafik också. Detta kanske inte är den mest säkra, är det definitivt lättare att hantera. Jag behöver inte lägga till brandväggen regler varje gång jag vill komma åt en ny tjänst.
Inställningarna kan också vara olika. Det är alla personliga preferenser.