Bjarne Wichmann Petersen (bsddk.nospam) writes:
> Hej
>
> Jeg har lidt svært ved at fange konceptet omkring ipfw/firewall helt, og
> hjælper ikke når eksempler, man-pages og anden hjælp sejler rundt i et dusin
> aliaser. Så her nogle måske ret banale spørgsmål.
Så skal vi måske starte på IP-niveauet :)
Først og fremmest, glem alt du har hørt om "Class A, B, C"
> Netmask. Den har jeg svært ved at greje. Hvad er den? Og hvad er Subnet? Er
> det det samme eller er der forskel? 127.0.0.0/8 er det det samme som en
> "range" fra 127.0.0.0 til 127.0.0.255? Og /16 er det x.x.0.0-x.x.255.255? Og
> så frem deles?
En subnet defineres af en netmask.
En IP adresse har en netværkdel og en hostdel.
Eksempel: 192.168.1.2 -> host .2 på net 192.168.1
Hvordan ved man at net == 192.168.1 (faktisk: 192.168.1.0) ?
Det ved vi faktisk ikke før vi kender netmask.
Netmask er et antal bits der definerer hvor meget af din IP adresse
er netværksdel, og hvad er host-del:
byte.byte.byte.byte, dvs. 4 x 8bits
Netmask kan være fra 0 til 32 bits -- en netmask af 8 bits skrives
som `/8' eller '255.0.0.0' (kun de første 8 bits er til 1).
1 2 3
.......8 .......6 .......4 .......2 mask
00000000 00000000 00000000 00000000 => 0.0.0.0
10000000 00000000 00000000 00000000 => 128.0.0.0
11000000 00000000 00000000 00000000 => 192.0.0.0
...
11111111 00000000 00000000 00000000 => 255.0.0.0
...
11111111 11111111 00000000 00000000 => 255.255.0.0
...
11111111 11111111 11111111 00000000 => 255.255.255.0
...
11111111 11111111 11111111 11111111 => 255.255.255.255
NB: der må ikke være nogle "huller" i netmask, i.e.:
255.192.255.0 er ikke et gyldigt netmask (det var engang, ikke mere).
/16 netmask: 255.255.0.0
/24 netmask: 255.255.255.0 (gammeldags: "C class")
Hvis man har en 127.0.0.0/8 net, betyder det at 8 bits ud af 32
er netmask. Du har derfor 24 bits (32-8) bits tilbage til host del.
24 bits ? 2^24 => 16777216 _mulige_ hosts på din net!
(faktisk 16777216 - 2, fordi den første og sidste adresse i et net
kan ikke bruges til hosts).
I et 192.168.1.0/24 net (samme som: 192.168.1.0 netmask 255.255.255.0),
har du 24 bits netmask -- der er 8 bits tilbage til hosts: 2^8 => 256.
Netmask kan selvf. være noget andet som:
255.255.255.128 -> 11111111 11111111 11111111 1000000 -> (3 x 8) + 1 = /25
Hvis nettet hedder "1.2.3.64/25" betyder det:
32 - 25 bits = 7 bits til host. 2^7 = 128.
Din subnet bliver så: 1.2.3.64 -> 1.2.3.64+128 => 1.2.3.64 -> .192/25
> Indtil nu har jeg brugt en meget lukket firewall, som jeg har lidt problemer
> med i forbindelse med icq, irc/dcc o.lign., hvor jeg vil skabe direkte
> kontakt med en anden klient og det er lidt tilfældigt/dynamisk hvilken port
> det sker på. Og når så begge er bag en firewall, kommer jeg tit ikke særligt
> langt.
Right :(
> Så nu vil jeg lave en semi-åben firewall, som tillader al trafik ud. Lukker
> al trafik ind på porte <1024 og 6000-6063 (X), med visse undtagelser. Og så
> ellers tillade fri trafik på resten.
Du kan desværre, hvis det net der sidder bag firewall er en "RFC1918"
type (i.e.: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) ->
disse adresser kan ikke routes over det åben internet.
(derfor bruger man NAT -> Network Address/port Translation)...
> Er der umiddelbart nogle problemer i sådan er firewall? Har ikke nogen
> services kørende, så?
I princippet ikke.
Men det er afhængig af din konfiguration.
> Jeg har indsat min firewall nedenfor, så hvis nogen har lyst til at hjælpe
> med en dybere forståelse af hvad der sker, bukker jeg og siger tak! ;)
Jeg vil anbefale du køber "Building Internet Firewalls", O'Reilly ed.,
(2nd edition) fra Zwicky og Chapman :)
> #Network, netmask, ip
> net="192.168.1.1"
Forkert -- der skal står "192.168.1.0" (netter er:
192.168.1.0/24 -> 192.168.1.0-255
> mask="255.255.255.0"
> ip="192.168.1.6"
Ok.
> ${fwcmd} add allow all from any to any via lo0
> #!Hvad er disse godt for?
Så at din computer kan få lov til at snakke med sig selv
via "local loopback interface".
> ${fwcmd} add deny all from any to 127.0.0.0/8
> ${fwcmd} add deny all from 127.0.0.0/8 to any
... og derefter lukker man for dem der prøver at snyde og sende pakker til
den alligevel (du har allerede tilladt det via:
"allow all from any to any via lo0"
> #Åbne trafik i det interne net
> ${fwcmd} add allow all from ${ip} to ${net}:${mask}
> ${fwcmd} add allow all from ${net}:${mask} to ${ip}
Bare en ting -- har din maskine 1 eller 2 netkort ?
> #Tillad etableret TCP-trafik
> ${fwcmd} add allow tcp from any to any established
>
> #Tillad etableret trafik
> #!Gør denne regel ikke ovenstående overflødig?
> ${fwcmd} add allow all from any to any frag
Nope -- den tillader kun fragments af pakker, ikke hele pakker.
> ##############
> ## Egne regler ##
> ##############
>
> #Tillad al trafik ud
> #!Er det "farligt"?
> ${fwcmd} add allow all from ${ip} to any
Ikke specielt -- ikke til dig selv, men måske til andre
hvis din maskine bliver misbrugt af andre :)
> ###############
> #Gnomemeeting #
> ###############
> #ILS
> #! Er det nødvendigt at angive port begge gange?
> ${fwcmd} add allow tcp from any 389 to any 389
Ja, hvis du vil skrive det i 1 linie.
Ellers skal du skrive:
allow tcp from any to ${ip} 389
allow tcp from ${ip} 389 to any
Langt de fleste TCP/UDP services bruger en source port
>1024 -- som du ikke kender i forvejen.
> #ULS
> ${fwcmd} add allow tcp from any 522 to any 522
> #Følgende skulle sådan set ikke være nødvendige da >1024 er åbne
Right.
> #T.120, H.323, ACC
> ${fwcmd} add allow tcp from any 1503 to any 1503
> ${fwcmd} add allow tcp from any 1720 to any 1720
> ${fwcmd} add allow tcp from any 1731 to any 1731
> #IRC
> #!Er der problemer ved at have port 113 åben for TCP-trafik?
> ${fwcmd} add allow tcp from any to ${ip} 113
Kun hvis du har noget kørende (ident) på 113 :)
Se min kommentar omkring "åbne services" sidst i denne mail.
Hvad bruger du af identd ? Har du set it /etc/inetd.conf :
auth stream tcp nowait root internal
> #Luk al anden trafik for <1024
> #!Kommer jeg til at lukke for nødvendig trafik?
> #!Er det bedre at benytte 'setup'?
> ${fwcmd} add deny log tcp from any to any 1-1024
> ${fwcmd} add deny log udp from any to any 1-1024
Hvis du tillader relevant in/out traffik _før_, så er der ikke
noget problem i det. Men der findes en mere optimal mode at
gøre det på :)
> #Luk for adgang udefra til X
> ${fwcmd} add deny log tcp from any to ${ip} 6000-6063
Ok.
> #Tillad al anden trafik
> ${fwcmd} add 65435 allow all from any to any
Som sikkerhedsperson, vil jeg anbefale en "default deny"
og derefter åbne op for kun de ting du skal bruge.
Åbne services:
For at checke hvad for nogle services du har åbnet på din server,
kan du bruge to kommandoer:
UNIX generelt:
netstat -an (kig i output for "tcp" og "udp")
FreeBSD:
sockstat
Anyway, når jeg får lidt mere tid, vil jeg sende dig en eksempel
ruleset med IPFW og også IPFILTER.
Mvh,
Phil
Received on Thu 31 Jan 2002 - 18:37:07 CET
This archive was generated by hypermail 2.2.0 : Wed 27 Mar 2013 - 10:40:17 CET