Configureren van een Pix

Het eerste is logischerwijs op de interfaces een ip adres toe te kennen. Het is handig, maar hoeft niet, om interface 0 te gebruiken voor outside en 1 voor inside (0 lijkt op O en 1 lijkt op i). De pix werkt met security levels op de interfaces; de outside interface heeft level 0, inside level 100 en dmz zones ken je een waarde er tussenin toe. Het idee is dat de beveiliging optimaal is van laag naar hoog en minimaal van hoog naar laag. geef verder de interfaces namen, die komen ook terug in andere commando's zodat alles lekker duidelijk blijft.


interface Ethernet0
 nameif outside
 security-level 0
 ip address 10.0.0.254 255.255.255.0 
!
interface Ethernet1                                                             
 speed 100                                                                      
 duplex full                                                                    
 nameif inside                                                                  
 security-level 100                                                             
 ip address 192.168.10.254 255.255.255.0                                        
!                                                                               
interface Ethernet2                                                             
 nameif dmz                                                                     
 security-level 50                                                              
 ip address 192.168.20.254 255.255.255.0                                        
!   
  

Geef de tijdzone aan en de zomertijd formule zodat de tijd in de loggings ook klopt. Optioneel kan een tijdserver opgegeven worden.


clock timezone amster 1                                                         
clock summer-time Amster recurring last Sun Mar 2:00 last Sun Oct 2:00          
  

beperk de toegang van buitenaf. Nu mag er alleen van binnenuit getelnet worden en na 5 minuten inaktiviteit wordt de sessie verbroken. ssh mag van buitenaf maar alleen voor 1 publiek adres. Tot slot staat de webserver aan en mag van binnenuit benaderd worden vanaf 1 machine.


telnet 192.168.10.0 255.255.255.0 inside                                        
telnet timeout 5                                                                
ssh 80.126.1.99 255.255.255.255 outside
ssh timeout 5 
http server enable                                                              
http 192.168.10.1 255.255.255.0 inside  
  

NAT regels. Cisco kan NAT-en of PAT-en; bij NAT wordt er naar een reeks outside adressen genat en bij PAT wordt er naar het 1 adres ge-NAT (port translation). Tevens geven we aan welke inside adressen gebruik maken van NAT en met de laatste regel zeggen we dat 1 adres gewoon gerouteerd wordt waarbij het natuurlijk geen zin heeft een private range adres naar internet te routeren.


global (outside) 1 interface
   OF
global (outside) 1 10.0.0.1-10.0.0.253 netmask 255.255.255.0
                    
nat (inside) 1 192.168.10.0 255.255.255.0 
nat (inside) 0 192.168.10.1 255.255.255.255
  

We hangen een access-list aan de outside interface. Deze is wat onzinnig want beperkt niets. standaard wordt een ping geblocked maar door deze regels wordt dat toegestaan. uiteraard kan dit veel verder beperkt worden. Bij NAT heeft dat weinig zin omdat verkeer van buiten naar binnen expliciet genat moet worden van buiten naar een inside adres. Bij routering is beperken een must. In een goede config wordt er uitsluitend naar brokers in de DMZ genat en vanaf de dmz praat een server daar weer met een server binnen. Ook van binnen naar buiten kan verkeer beperkt worden met een access-list die dan op de inside interface gehangen moet worden. waar aan gedacht moet worden is de volgorde van de processen. een ACL hangt aan de rand van de firewall en NAT gebeurt verder in de kern. dit is van belang voor het bepalen van de adressen in de ACL. Het maken van access-lists kun je een boek over schrijven dus dat laten we even buiten de pix config.


access-list outside-in extended permit ip any any                               
access-list outside-in extended permit icmp any any echo                        
access-list outside-in extended permit icmp any any echo-reply 

access-group outside-in in interface outside                                    
  

de route tabel. Hier moet de default route naar de next hop verwezen worden zoals hieronder. Ook als er inside verkeer een router verderop zit, dus niet direct verbonden, moet dit opgegeven worden in inside routes. van een direct naar een direct netwerk hoeft niet vermeld te worden en zal automatisch in de routetabel gezet worden. Vooraan staat dan een C voor connected en een S voor statische route.


route outside 0.0.0.0 0.0.0.0 10.0.0.138 1   
  

Wanneer we verkeer van buiten naar binnen willen forwarden (inside natten) dan doen we dat met statics. In de static hieronder zorgen we ervoor dat verkeer dat aankomt op 10.0.0.200 wordt genat naar een machine in de DMZ. In de tweede regel natten we uitsluitend poort 80 verkeer. Verkeer vanaf de DMZ hoeft niet genat en kan gewoon naar binnen. Dit verkeer moet dan wel beperkt worden met een access-list op de dmz interface. de derde regel is me niet helemaal duidelijk maar zorgt er volgens mij juist voor dat verkeer tussen dmz en inside juist niet genat wordt terwijl dat van de dmz naar buiten wel genat wordt.


static (dmz,outside) 10.0.0.200 192.168.20.1 netmask 255.255.255.255 0 0
static (dmz1,outside) tcp 10.0.0.201 80 192.168.20.2 80 netmask 255.255.255.255 0 0
static (inside,dmz) 192.168.10.0 192.168.10.0 netmask 255.255.255.0
  

Logging. Prettig om te zie wat er mis gaat en om te zien wat mensen proberen te doen wat niet toegestaan is. Bij elke regel in een ACL kan "log" erachter gezet worden zodat deze hits gelogd worden. Loggen kan naar de console, wat niet handig is als je erop moet werken, naar de buffer en naar een syslog server. Bedenk wel dat op een drukke server er niet teveel "debugging" gelogd moet worden omdat dit de cpu bij veel verkeer wel belast.


logging enable                                                                  
logging timestamp                                                               
logging buffered debugging