PF og OpenBSD 3.4

Dersom man ønsker af beskytte sine maskiner med en firewall, kan det anbefales at anvende programmet PF under OpenBSD på en almindelig PC. Man kan vælge at opsætte firewallen som en bro eller en router. Det anbefales at benytte en bro, idet man så kan sætte sin firewall til og fra uden at skulle skifte IP numre på sine maskiner. Nedenfor beskrives den nødvendige procedure, som kan klares på mindre end en time. Hertil komme så "tuningen" af filterfunktionen, som kan tage flere dage.

Maskinel

Anvend en ca 1 GHz Pentium maskine med 256 Mbyte, 4 Gbyte disk og 2 stk 100 Mb/s netkort. CPU behovet afhænger naturligvis helt af trafikmængden og antallet af regler i filtret. Der er stort set ingen diskaktivitet.

Tilslut skærm og tastatur (mus er overflødig).

Tilslut den ene netforbindelse.

Bootdiskette

Der skal først laves en boot diskette. Hvis man råder over en Windows2000/NT maskine, så hentes filen http://ftp.sunet.se/pub/os/OpenBSD/3.4/tools/ntrw.exe
Hvis man råder over en Windows 95/98 hentes i stedet filen http://ftp.sunet.se/pub/os/OpenBSD/3.4/tools/rawrite.exe

Derpå hentes filen http://ftp.sunet.se/pub/os/OpenBSD/3.4/i386/floppy34.fs

En 1.4 Mb diskette formateres så den er helt tom. Derpå kopieres floppy34.fs til disketten med kommandoen: "ntrw floppy34.fs a:" eller "rawrite floppy34.fs a:"

Programmel

Boot fra den nye diskette:

Vælg Install, terminaltypen vt220 er normalt OK

Keyboard encoding table sættes til: dk (hvis man har dansk tastatur).

Benyt hele disken til OpenBSD

Delete partition a med kommandoen: d a

Så oprettes 6 partitions: a b d e f g
I alle tilfælde benyttes de foreslåede offset og FS type. Oprettelsen af hver partition sker med kommandoen: a. Partition c omfatter hele disken og skal ikke defineres.

Opret partion a med size = 128000, FS type = 4.2BSD og mount point /
Opret partion b med size = 1024000, FS type = swap
Opret partion d med size = 1024000, FS type = 4.2BSD og mount point /usr
Opret partion e med size = 1024000, FS type = 4.2BSD og mount point /tmp
Opret partion f med size = 2048000, FS type = 4.2BSD og mount point /var
Opret partion g med size = 1024000, FS type = 4.2BSD og mount point /home

Ændringerne gemmes med kommandoen: q

Derpå svares på en række simple spørgsmål.

Det ene netværkskort konfigureres, f.eks. via DHCP. Det andet netværkskort ignoreres.

Der svares nej til X-windows.

Derefter vælges FTP til installation. Her fås en list over steder. Vælg ftp.sunet.se (som pt er nummer 52). Herved benyttes automatisk kataloget /pub/os/OpenBSD/3.4/i386.

Fra ftp.sunet.se vælges de 5  filesets: base34.tgz, etc34.tgz, man34.tgz, bsd.rd og bsd. Ved at sætte et - foran filnavnet kan et filsæt fjernes. Kommandoen: done anvendes når filvalget er færdigt. Herefter hentes ca 45 Mbyte.

Tidszones sættes til: Europe/Copenhagen

Herefter fjernes boot disketten og maskinen genstartes med kommandoen: halt

Konfigurationsfiler

Hvis netkortene hedder fxp0 og xl0, skal følgende filer oprettes med det viste indhold (justeret med de rigtige IP numre og domæne). Det er uden betydning om IP nummeret er defineret på inder- eller ydersiden af broen (bortset fra filtre vedr. eksterne opkoblinger til selve OpenBSD maskinen).

/etc/hostname.fxp0
inet  192.168.127.91  255.255.255.0
up

/etc/hostname.xl0
up

/etc/mygate
192.168.127.1

/etc/resolv.conf
search xadm.ku.dk
nameserver 192.168.127.5
nameserver 192.168.127.34

En bro-koblet forbindelse oprettes med følgende fil og indholdet:

/etc/bridgename.bridge0
add fxp0
add xl0
maxaddr 1024
up

Her skal maxaddr mindst sættes til antallet af maskiner i den anvendte IP nummerserie plus andet udstyr i det brokoblede netværk.

Disse konfigurationsfiler bliver aktive efter næste reboot.

For at sætte tiden korrekt en gang i døgnet, så installeres ntp pakken med kommandoen:

pkg_add ftp://ftp.sunet.se/pub/OpenBSD/3.4/packages/i386/ntp-4.1.74.tgz

Herefter indlægges kommandoen:

/usr/local/sbin/ntpdate -bs garm.adm.ku.dk

i bunden af filen /etc/daily

I filen /etc/mail/aliases indsættes en mail adresse for root. Derefter udføres kommandoen: newaliases

For at hindre fremmede SSH opkald til selve BSD maskinen bør man indsætte følgende linier i filen /etc/hosts.allow:

SSHD: 130.225.0.0/255.255.0.0
SSHD: 192.38.0.0/255.255.128.0

og følgende linie i filen /etc/hosts.deny:

ALL: ALL

Når PCen tilsluttes til de to net efter den indledende opsætningen, vil den et stykke tid blokere for alle de ethernet adresser, som er skiftet fra det ene interface til det andet. For at undgå dette, kan man samtidig med tilslutningen af det andet interface benytte kommandoen: brconfig bridge0 flush

Filtrering

Filtreringen startes hvis følgende linie er indsat i filen:

/etc/rc.conf
pf=YES

Konfigurationsfilen for PF er /etc/pf.conf

Efter rettelser i denne fil genstartes PF med kommandoen: pfctl -f  /etc/pf.conf  (Bemærk, at man nu skal anvende option -f, mens version 3.1 og tidligere anvendte -R).

Man skal være opmærksom på at PF vil blokere for alle igangværende sessioner, når den startes første gang pga "keep state" funktionen. En genstart med ny konfigurationsfil giver derimod ikke problemer, idet alle "states" videreføres under en genstart.

Kataloget /var/log indeholder PFs logfiler i mange generationer i binær form. Hver gang en fil når en vis størrelse påbegyndes en ny generation. Den binære fil pflog kan udskrives med kommandoen: tcpdump -n -e -ttt -r /var/log/pflog

Antal og størrelsen af logfiler styres af den generelle konfigurationsfil /etc/newsyslog.conf

Status

Følgende kommandoer benyttes til status:

pfctl -s state     viser hvilke states som er aktive.

pfctl -s rules    viser nummereringen af reglerne.

Ved at tilføje et -v vises endvidere brugen af de forskellige filtre siden sidste reload af filtre.

brconfig bridge0    viser ethernetadresserne og hvorledes de er fordelt på de to brokoblede interfaces.

ifconfig -a    viser status for de to ethernetkort.

Dokumentation

Dokumentation findes på www.openbsd.org. Specielt anbefales:
http://ftp.sunet.se/pub/OpenBSD/3.4/i386/INSTALL.i386
http://www.openbsd.org/faq/
http://www.openbsd.org/security.html
Man siderne: AFTERBOOT, PF(8) og PF(5)

Siden version 3.3 af PF er der kommet en ny funktion med tabeller. Herved kan mange identiske regler, hvor der kun er IP numre til forskel, samles i en enkelt regel.

Håndtering af FTP er et specielt problem, se http://www.deadly.org/article.php3?sid=20020130012631

Andet

Nye brugere oprettes med kommandoen: adduser
Husk at sætte brugere i gruppe wheel, hvis de skal lave su til root.

Det er ikke umiddelbart muligt at lave en Telnet opkobling til OpenBSD (det er en del af sikkerheden). Man er derfor nødt til at anvende en SSH klient til dette formål (f.eks. TeraTerm).

I filen /etc/inetd.conf  kan man fjerne: daytime, time og comsat

Skrivning på en diskette kan ske med kommandoen:

tar cvf /dev/fd0c filnavn

Hvis der anvendes dansk tastatur på konsollen, skal man anvende kommandoen: kbd dk. Bemærk dog at dette normalt sættes under installation.

Der må ikke være en diskette i maskinen ved normal boot.

BIOS skal opsættes så maskinen ikke standser disken efter en periode med inaktivitet.

IT-afdelingen E-mail: IT-info @ adm.ku.dk
Nørregade 10 Fax 35 32 27 07
1165 København K Opdateret 22. dec. 2003 af
Tlf. 35 32 27 00 Jan.P.Sorensen @ adm.ku.dk