Netwerkontwerp & examen-synthese
Open examenvragen: een netwerk ontwerpen met geldige IP-adressen, firewall, proxy, DNS en webserver, en technieken uit de hele cursus kunnen citeren.
1Zones: internet, DMZ en intern
Een eenvoudige firewall met de server in je LAN is gevaarlijk: wie de server hackt, bereikt het hele netwerk. Daarom deel je het netwerk op in zones met verschillend vertrouwen. De firewall (router + filter) staat op de grens en bepaalt welke zone naar welke mag.

- Router 1 (buiten) - Red LAN - Router 2 (binnen) - Blue LAN
- Servers staan op de Red LAN; ook al wordt een server gehackt, de interne Blue LAN blijft achter een 2e filter
- Dubbele bescherming
- Red LAN: trager (WAN-kant), Blue LAN: snel (LAN)
- Nadeel: extra router. Alternatief: three-interface firewall (= 2 routers in 1 toestel)
- Teken drie netwerken, elk met eigen subnet
- Firewall met drie interfaces (of 2 routers) tussen internet - DMZ - intern
- Servers in de DMZ, clients intern
- Pijlen voor de flows: wie mag naar wie
2Stappenplan: een netwerk ontwerpen
Welke elementen? (clients, webserver, mailserver, proxy, DNS, firewall). Wie moet naar wie? Internet naar webserver (80/443), intern naar internet (web via proxy), internet naar extern DNS (53).
3Intern versus extern DNS
- Staat in de DMZ met een publiek bereikbaar adres
- Beantwoordt vragen van het internet over je domein (www, mail)
- Bevat enkel publieke records; geen interne namen/IP's
- UDP 53 voor opzoekingen, TCP 53 enkel voor zone transfers (secundaire nameserver)
- Staat in het interne netwerk, privé-adres
- Beantwoordt vragen van de interne clients
- Kent interne namen (fileserver, printer) en stuurt al de rest door naar een externe nameserver (forwarder)
- Enkel de interne DNS moet naar buiten mogen, niet elke client
- Gebruik je een traditionele proxy, dan hoeft DNS niet intern te draaien: de proxy lost de naam voor de client op.
- Bij een transparante proxy of NAPT hebben clients wel een DNS nodig (op de proxy/firewall of intern).
- In de firewall: UDP 53 naar de nameserver toelaten; TCP 53 enkel van de secundaire nameserver (zone transfer).
4Ontwerp A: three-leg firewall (VyOS) met proxy, web en extern DNS
Opgave: teken een netwerkontwerp met geldige IP-adressen met proxy server, webserver, firewall en externe DNS. ISP geeft het publieke blok 203.0.113.0/29 (gateway ISP = .1). (203.0.113.0/24 is een documentatierange; in de cursus gebruikt men 200.2.2.0/24. Op het examen kies je gewoon een geldig publiek blok.)
INTERNET
|
ISP-router 203.0.113.1 publiek blok 203.0.113.0/29
| (.1 ISP, .2 firewall, .3 web, .4 DNS)
eth0 203.0.113.2/29
+------------------------+
| FIREWALL (VyOS) |
| NAT + stateful |
+------------------------+
eth1 10.0.1.1/24 eth2 192.168.10.1/24
| |
DMZ switch INTERN switch
| |
+----+--------+----------+ +--- clients 192.168.10.100-.200 (DHCP)
| | | +--- (gw 192.168.10.1, proxy 10.0.1.20:8080)
Web Ext. DNS Proxy
10.0.1.10 10.0.1.11 10.0.1.20
(publiek (publiek
.3) .4)Bezoeker vraagt www.bedrijf.be. Extern DNS (203.0.113.4) antwoordt 203.0.113.3. Browser verbindt naar 203.0.113.3:80/443. Firewall doet DNAT naar 10.0.1.10 en laat het door (NEW toegelaten).
echo 1 > /proc/sys/net/ipv4/ip_forward # router aanzetten
# 1. Default policy: alles weigeren
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 2. Terugkerend verkeer en gerelateerd verkeer (stateful)
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 3. Anti-spoofing: privé/loopback-bronadressen van buiten weigeren
iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i eth0 -s 127.0.0.0/8 -j DROP
# 4. Port forwarding: publiek -> DMZ-servers (DNAT voor het filteren)
iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.3 -p tcp --dport 80 -j DNAT --to 10.0.1.10
iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.3 -p tcp --dport 443 -j DNAT --to 10.0.1.10
iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.4 -p udp --dport 53 -j DNAT --to 10.0.1.11
iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.4 -p tcp --dport 53 -j DNAT --to 10.0.1.11
# 5. Internet -> DMZ: enkel web en DNS (na DNAT is het doel het DMZ-adres)
iptables -A FORWARD -i eth0 -o eth1 -d 10.0.1.10 -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 10.0.1.11 -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 10.0.1.11 -p tcp --dport 53 -m state --state NEW -j ACCEPT
# 6. Intern -> proxy (enkel 8080)
iptables -A FORWARD -i eth2 -o eth1 -s 192.168.10.0/24 -d 10.0.1.20 -p tcp --dport 8080 -m state --state NEW -j ACCEPT
# 7. Proxy -> internet (web + DNS-opzoekingen)
iptables -A FORWARD -i eth1 -o eth0 -s 10.0.1.20 -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s 10.0.1.20 -p udp --dport 53 -m state --state NEW -j ACCEPT
# 8. NAPT: DMZ-proxy gaat naar buiten met het publieke IP van de firewall
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 9. DMZ -> intern: expliciet blokkeren en loggen
iptables -A FORWARD -i eth1 -o eth2 -j LOG --log-prefix "DMZ-naar-intern "
iptables -A FORWARD -i eth1 -o eth2 -j DROPconfigure
set interfaces ethernet eth0 address 203.0.113.2/29
set interfaces ethernet eth1 address 10.0.1.1/24
set interfaces ethernet eth2 address 192.168.10.1/24
set protocols static route 0.0.0.0/0 next-hop 203.0.113.1 distance '1'
# NAPT (uitgaand) en port forwarding (inkomend)
set nat source rule 100 outbound-interface eth0
set nat source rule 100 source address 10.0.0.0/8
set nat source rule 100 translation address masquerade
set nat destination rule 10 inbound-interface eth0
set nat destination rule 10 destination address 203.0.113.3
set nat destination rule 10 protocol tcp
set nat destination rule 10 destination port 80,443
set nat destination rule 10 translation address 10.0.1.10
# Internet -> DMZ: enkel web, plus terugkerend verkeer
set firewall name OUTSIDE-IN default-action drop
set firewall name OUTSIDE-IN rule 10 action accept
set firewall name OUTSIDE-IN rule 10 state established enable
set firewall name OUTSIDE-IN rule 10 state related enable
set firewall name OUTSIDE-IN rule 20 action accept
set firewall name OUTSIDE-IN rule 20 protocol tcp
set firewall name OUTSIDE-IN rule 20 destination address 10.0.1.10
set firewall name OUTSIDE-IN rule 20 destination port 80,443
set interfaces ethernet eth0 firewall in name OUTSIDE-IN
# Intern -> enkel proxy 8080
set firewall name INTERN-IN default-action drop
set firewall name INTERN-IN rule 10 action accept
set firewall name INTERN-IN rule 10 state established enable
set firewall name INTERN-IN rule 20 action accept
set firewall name INTERN-IN rule 20 protocol tcp
set firewall name INTERN-IN rule 20 destination address 10.0.1.20
set firewall name INTERN-IN rule 20 destination port 8080
set interfaces ethernet eth2 firewall in name INTERN-IN
# DMZ -> internet: enkel proxy op 80/443, rest drop (dus ook niets naar intern)
set firewall name DMZ-IN default-action drop
set firewall name DMZ-IN rule 10 action accept
set firewall name DMZ-IN rule 10 state established enable
set firewall name DMZ-IN rule 10 state related enable
set firewall name DMZ-IN rule 20 action accept
set firewall name DMZ-IN rule 20 protocol tcp
set firewall name DMZ-IN rule 20 source address 10.0.1.20
set firewall name DMZ-IN rule 20 destination port 80,443
set interfaces ethernet eth1 firewall in name DMZ-IN
commit
save5Ontwerp B en C: klassiek Red/Blue LAN en klein kantoor
Ontwerp B = het cursusmodel met twee Cisco-routers: publiek Red LAN met servers, privé Blue LAN met clients. ISP geeft het punt-tot-punt-netwerk 198.51.100.0/30 en het publieke blok 203.0.113.16/28.
Internet - ISP 198.51.100.1
| 198.51.100.0/30
R1 s0/0 198.51.100.2
R1 fa0/0 203.0.113.17/28 (Red LAN = 203.0.113.16/28, hosts .17-.30)
|
+------------+----------+-----------+----------------+
Web Ext. DNS Proxy R2 fa0/0 203.0.113.30/28
203.0.113.18 .19 .20 |
R2 fa0/1 192.168.20.1/24 (Blue LAN)
|
Interne DNS 192.168.20.2 Clients 192.168.20.50-.200interface Serial0/0
ip address 198.51.100.2 255.255.255.252
ip access-group 110 in
interface FastEthernet0/0
ip address 203.0.113.17 255.255.255.240
!
ip route 0.0.0.0 0.0.0.0 198.51.100.1
! Als R2 GEEN NAT zou doen: ip route 192.168.20.0 255.255.255.0 203.0.113.30
!
! anti-spoofing: privé-bronadressen van buiten weigeren
access-list 110 deny ip 10.0.0.0 0.255.255.255 any
access-list 110 deny ip 172.16.0.0 0.15.255.255 any
access-list 110 deny ip 192.168.0.0 0.0.255.255 any
! internet -> web en DNS
access-list 110 permit tcp any host 203.0.113.18 eq 80
access-list 110 permit tcp any host 203.0.113.18 eq 443
access-list 110 permit udp any host 203.0.113.19 eq 53
! antwoorden op onze eigen aanvragen (proxy, DNS-forwarding)
access-list 110 permit tcp any any established
access-list 110 permit udp any eq 53 any gt 1023
access-list 110 permit icmp any any echo-reply
access-list 110 deny ip any any loginterface FastEthernet0/0
ip address 203.0.113.30 255.255.255.240
ip nat outside
ip access-group 120 in
interface FastEthernet0/1
ip address 192.168.20.1 255.255.255.0
ip nat inside
ip access-group 121 in
!
ip route 0.0.0.0 0.0.0.0 203.0.113.17
access-list 1 permit 192.168.20.0 0.0.0.255
ip nat inside source list 1 interface FastEthernet0/0 overload
!
! red -> blue: enkel terugverkeer
access-list 120 permit tcp any any established
access-list 120 permit udp any eq 53 any gt 1023
access-list 120 deny ip any any log
! blue -> red: clients enkel naar de proxy, enkel de interne DNS naar buiten
access-list 121 permit tcp 192.168.20.0 0.0.0.255 host 203.0.113.20 eq 8080
access-list 121 permit udp host 192.168.20.2 any eq 53
access-list 121 deny ip any any logOntwerp C = klein kantoor of thuis: één Linux-machine (router + firewall + transparante proxy) tussen ADSL-modem en LAN. Eén publiek IP (DHCP van de ISP), intern 192.168.1.0/24.
echo 1 > /proc/sys/net/ipv4/ip_forward
# Transparante proxy: poort 80 van het LAN omleiden naar de proxy (Squid) op 8080
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
# NAPT naar buiten
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Port forwarding naar de interne webserver
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.10:80
# Firewall
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT- Twee filters: dubbele bescherming
- Servers publiek geadresseerd op de Red LAN
- Stateloze Cisco-ACL's: terugverkeer expliciet toelaten
- Past bij grotere organisaties
- Goedkoop, 1 publiek IP, alles in 1 toestel
- Webserver intern met port forwarding = geen DMZ: bij een hack staat het LAN open
- Transparante proxy: clients merken niets
- Past bij thuis/klein kantoor; verbeter door een DMZ toe te voegen
6Veelgemaakte fouten en een ontwerp verbeteren
7Toolbox: technieken uit de hele cursus voor open vragen
Open vragen vragen om technieken + uitleg hoe ze werken. Kies 2-3 relevante, noem de naam en leg in één zin de werking en het effect uit.
Nog niet klaar? Je kan altijd terugkomen.