Datakommunikasjon og Sikkerhet, obligatorisk oppgave 6.

Datakommunikasjon og sikkerhet

Brannmur, pakke filtrering, webproxy.

Målsetting:

Praktisk erfaring med oppsett av et beskyttet internt nettverk mot et eksternt usikkert nettverk. Konfigurering av brannmur, webproxy, webtjener og ftptjener.

Forberedelser

Inndel i grupper (2-3 på hver gruppe). Et system med VMware workstation og 2 virtuelle nettverkskort skal fungere som brannmur. Konfigurer VMware workstation kun på brannmuren med to nettverkskort, der det eksterne nettverkskortet beholder sitt oppsett i (opprinnelige IP adresse) , mens det interne nettverkskortet på brannmur gis statisk adresse 10.0.x.1 i nettverket 10.0.x.0/24 (nettmaske 255.255.255.0).. Nettverkskortene må være satt opp som bridged i VMware workstation (ikke NAT).

På "interne" systemer, systemer som ligger bak brannmuren) kjøres Linux i VMware med ett nettverkskort installert. Hver gruppe benytter sitt eget interne nettverket med adresse 10.0.x.0/24 der x erstattes med gruppenummer på labben. Interne systemer gis en IP adresse i dette 10.0.x.0/24 nettverket, sett opp brannmurens interne IP adresse som standard gateway med kommandoen route add default gw 10.0.x.1.

De tre systemene som i figuren under er tegnet inn kan slås sammen til ett system, du trenger da kun to Linux systemer for å utføre laboppgaven. Et Linux system er Router/brannmur, mens det andre er et internt system sder du installerer webtjener og ftp tjener.

 

Virtuell nettverkstopologi som skal realiseres:

        
Eksternt nettverk
| | IP: IP adresse i eksternt nettverk
________
| | webproxy for interne systemer
|BRANNMUR|
|________|
| IP: 10.0.x.1
|
______
| |
|switch|
|______| Internt virtuelt nettverk: 10.0.x.0/24
|
---------------------------------------------------
| | |
IP: 10.0.x.10 IP: 10.0.x.11 IP: 10.0.x.20
______ ______ ______
| | | | | |
| PC | | PC | | PC |
|______| |______| |______|

ekstern ekstern klient
webtjener ftptjener
Hver gruppe benytter sitt eget interne nettverket med adresse 10.0.x.0/24 der x erstattes med gruppenummer på labben.

Før du går i gang med å slå på brannmuren må du være sikker på at systemene kan kommunisere med hverandre. Prøv ping mellom systemene, denne skal og må virke før du går videre med oppgaven. På mange av Linux systemene er nettverkskortene satt opp med DHCP som standard, disse må endres til å ha statisk oppsett (fast IP adresse). På Kali Linux gjør du dette i menyen System Tools - Preferences - System Settings. Velg deretter "Network", finn nettverkskortet og velg Options og IPV4 instillinger. Her angir du "Manual" og deretter IP adressen. Må også angi her IP adressen til router og DNS tjener.

 

Filtrering av tjenester

Systemene skal settes opp som følger:

NAT

Før du gå i gang med å sette DROP politikk må du få systemene i det interne nettverket på nett. Dvs. få satt opp brannmuren som ruter og NAT tjener.

  1. Brannmur settes opp med NAT for hele det interne nettverket. Brannmur må også være satt opp med IP-forwarding. Sjekk "filen" /proc/sys/net/ipv4/ip_forward, denne må ha verdien 1, settes med kommando

    echo 1 > /proc/sys/net/ipv4/ip_forward
    .

  2. NAT slås på med kommando

    iptables –t nat –A POSTROUTING –s 10.0.3.0/24 -j SNAT --to-source 192.168.200.20.

    Her er det interne nettverket 10.0.3.0/24 og ekstern IP 192.168.200.20, bytt ut med egne verdier.
  3. Kommandoen iptables -L -vn viser hvilke regler som ligger i filter tabellen i INPUT, OUTPUT og FORWARD kjedene.
  4. Kommandoen iptables -t nat -L -vn viser hvilke regler som ligger i nat tabellen. Du skal se at det går pakker i kjedene, dvs at de reglene du har lagt inn blir brukt. Dette ser du på pakketellerne på hver regel som viser antall pakker som har blitt fanget opp av denne regelen.
    F.eks: iptables -t nat -L POSTROUTING -vn

    Chain POSTROUTING (policy ACCEPT 359K packets, 27M bytes)
    pkts bytes target prot opt in out source destination
    1912K 101M SNAT all -- * * 192.168.200.0/24 0.0.0.0/0 to:158.39.26.37

    På dette systemet er 1912K pakker på totalt 101M behandles i POSTROUTING kjeden.

  5. Når dette fungerer, dvs. klientene kan surfe på nett, kan du begynne å stenge ned brannmuren. Standard politikk for FORWARD kjeder skal settes til DROP på brannmuren. Gjør dette først, deretter setter du også DROP som standard på INPUT og OUTPUT kjedene. Ta dette gradvis, mye kommer til å slutte å fungere.
  6. Brannmur skal tillate utgående trafikk fra klienter i det interne nettverket til det eksterne nettverket og svar på slike forespørsler, nettleser skal fungere på interne systemer mot eksterne webadresser.
  7. Brannmur skal stoppe innkommende pakker med IP adresse lik sin egen IP og IP adresser i det lokale nettverket.
  8. Brannmur skal stoppe utgående pakker med IP kildeadresse som ikke er i det interne nettverket. Dette skal forhindre IP spoofing ihht. BCP38
  9. Verifiser at dette fungerer. Benytt wireshark på brannmur for å se at IP pakkene endrer adresse når disse går gjennom NAT router. Etterhvert vil det bli mange regler, det er da greiest å legge disse inn i et skript som editeres og kjøres/utføres, benytt en teksteditor og opprett en fil der alle regler legges inn, sørg for at du har utfør aksess til skriptes, det kan da kjøres med kommandoen ./"filnavn" når arbeidskatalogen er den samme som der skriftet ligger.

Slå av IPV6

Det er viktig å slå av IPV6 slik at systemet kun benytter IPV4

cat /proc/sys/net/ipv6/conf/all/disable_ipv6 , dersom denne viser 0 er IPV6 påslått.

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 disabler IPV6, legg dette inn i skriptet slik at den alltid vil være avslått.

 

Sletting av regler

Det er viktig å slette reglene etterhvert, her må det slettes både i nat og filter tabellen. Kommandoer for sletting av alle regler

iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat

Legg gjerne dette inn i skriptet du skal skrive på toppen slik at alle regler slettes før nye legges inn.

 

Webtjener og FTP tjener

  1. Installer Apache webtjener (sudo apt-get install apache2) og ftptjener (sudo apt-get install vsftpd) på et av klient systemene i det interne nettverket (evt på hvert sitt system som angitt i figuren). Web og FTP tjener skal fungere som "firmaets" eksterne web og ftp tjener, dvs. brannmuren må settes opp til å slippe igjennom trafikk til disse.
  2. Brannmur skal slippe igjennom trafikk til webtjener og ftptjener fra eksternt nett. Alle web- (http) og ftpforespørsler  (ftp) utenfra til brannmur IP videresendes til web- og ftptjenere på det interne nettverket.
  3. Ekstern ftp- og webtjener. System som kjører henholdsvis ekstern ftp og webtjener på det interne nettverket skal tillate oppkoblinger mot disse tjenerne fra eksternt og internt nettverk.
  4. Benytt andre systemer på lab for å verifisere at det ikke er mulig å komme inn på andre systemer i det interne nettverket enn ekstern web- og ftptjener.

squid webproxy (frivillig)

  1. Brannmur settes opp med transparent webproxy slik at alle klienter i det interne nettverket benytter webproxy (squid) på brannmur. Proxy tjenerensquidinstalleres på brannmur.
  2. squid installeres ved hjelp av apt-get. For at noen skal få benyttet squid må filen /etc/squid/squid.conf editeres. Squid er i utgangspunktet sperret for alle, vi ønsker kun å åpne den for vårt interne nettverk. Lag en aksess kontroll liste (acl) og gi denne aksess som følger:

    Dette gjøres i den delen av .conf filen der http_access spesifiseres under pkt. "INSERT YOUR OWN RUles HERE...."
    Legg til følgende:

    acl our_networks src 10.0.1.0/24
    http_access allow our_networks


    Squid er stengt for alle i utgangspunktet, her åpner vi den for kun vårt interne nettverk. Lagre filen og restart squid. Squid lytter på port 3128 som standard. Du kan endre oppsettet i nettleseren din til å benytte proxy tjener på 127.0.0.1 port 3128 som en test på at squid fungerer.

  3. I labben ønsker vi imidlertid å benytte transparent proxy, dvs. det skal ikke være nødvendig for brukerne å endre nettleserinnstillingene. Brannmuren sørger for å redirigere alle pakker som skal ut av type http til squid, rediriger disse til port 3128. Benytt REDIRECT og send alle pakker som skal til port 80 til squid på port 3128. Vi må også fortelle squid at transparent proxy er påslått, dette gjøres ved å endre http_port parameteren i squid.conf, legg til transparent på denne slik at det blir stående

    http_port 3128 transparent

Innlevering

Hver gruppe leverer alle iptables skript/kommandoer benyttet for å realisere oppsettet. Skript leveres i .PDF format med forklaring på hva skriptet gjør.

Ressurser:

Iptables wikipedia (norsk)
Ubuntu squid dokumentasjon
squid wikipedia (norsk)
www.squid-cache.org