Archivi tag: pix

PIX 501: configurazione del protocollo TACACS+

Premessa

Più volte, nell’ambito dei miei ultimi post, ho discusso della configurazione del protocollo TACACS+ per i Router/Switch di casa Cisco.

Adesso vedremo come configurare il suddetto protocollo su un Cisco PIX 501.

pixPrima di iniziare, occorre precisare che le uniche feature che abiliteremo saranno l’autenticazione e l’accounting (tralasciando quindi la parte di autorizzazione).

Configurazione generale

Dopo aver effettuato il login sul firewall in questione, entriamo in modalità enable e digitiamo il comando:

PIX# conf t

per poi creare una nuova istanza TACACS+:

PIX(config)# aaa-server AuthInbound protocol tacacs+

A questo punto possiamo specificare l’IP del server AAA, l’interfaccia attraverso cui è possibile raggiungerlo, la chiave TACACS+ ed il timeout:

PIX(config)# aaa-server AuthInbound (inside) host <IP> <key> timeout <secondi>

Authentication

Ora possiamo definire i protocolli che dovranno interfacciarsi col server per l’autenticazione dell’utente:

PIX(config)# aaa authentication telnet console AuthInbound LOCAL

Accounting

Infine, facciamo in modo che tutte le sessioni provenienti dall’esterno (Internet) vengano loggate dal nostro server:

PIX(config)# aaa accounting any inbound 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 AuthInbound

Creazione delle utenze locali

Per una questione di fallback, prima di salvare la suddetta configurazione, conviene creare delle utenze locali utilizzando il comando:

PIX(config)# username <user> password <pass>

ed abbiamo finito.

Alla prossima.

Abilitare ASDM su Cisco ASA/PIX

Per i non addetti ai lavori, lavorare da linea di comando per configurare i dispositivi di rete (soprattutto se si tratta di Security Appliance) può risultare a dir poco traumatico.

Ecco allora che ho deciso di scrivere questa semplice guida per l’abilitazione dell’interfaccia grafica (denominata ASDM) sui firewall di casa Cisco (PIX/ASA).

cisco-asa-firewall-frontview.jpg

Per prima cosa occorre verificare che il *.bin di ASDM sia presente nella flash. Per fare ciò possiamo eseguire il comando (dalla modalità enable):

fw1# sh flash | i asdm

il cui output dovrebbe essere simile al seguente:

fw1# sh flash | i asdm
  105  17902288    Apr 30 2012 21:42:34  asdm-64**.bin

Bene, a questo punto possiamo dire al nostro firewall dove trovare il suddetto bin:

fw1# conf t

fw1(config)# asdm image flash:/asdm-64**.bin

Ora dobbiamo abilitare il server http presente sul dispositivo in questione, mediante il comando:

fw1(config)# http server enable

Ciò si rende necessario poichè ASDM utilizza il protocollo https.

Infine, occorre definire su quale interfaccia e da quali IP accettare le richieste di connessione:

http 0.0.0.0 0.0.0.0 outside

in questo modo stiamo imponendo al nostro firewall di accettare le connessioni provenienti da un qualunque indirizzo IP pubblico e dirette all’interfaccia outside (ovvero quella esposta direttamente su Internet).

Il nome dell’interfaccia (outside) è in realtà un alias che può essere definito mediante il comando nameif:

fw1(config-if)# nameif outside

Ovviamente, è opportuno che per accedere al suddetto tool vengano fornite le giuste credenziali. Per definirle basta usare il comando:

fw1(config)# username <nomeutente> password <pass>

A questo punto sarete in grado di amministrare il vostri firewall mediante ASDM.

Alla prossima.

PIX 501 e logging su una linux box

Un’operazione fondamentale nell’ambito dell’amministrazione di rete o di sistema consiste nella raccolta dei log e nella successiva analisi degli stessi.

Ora, tale raccolta può avvenire localmente (ovvero direttamente sui dispositivi di rete interessati) e/o nell’ambito di server dedicati, detti logserver. E’ buona pratica, prima di mettere in produzione uno o più di questi server specializzati nella raccolta dei log, effettuare un hardening del sistema, oltre ad adottare politiche di accesso ristretto. Ciò si rende necessario poichè i log devono rimanere intatti e devono essere protetti da eventuali operazioni di tampering (manomissione, alterazione) messe in atto da un possibile attaccante.

Dopo questa breve premessa, vediamo come abilitare il logging remoto su una linux box e come reindirizzare le informazioni registrate dal nostro firewall (nella fattispecie un PIX 501) verso il logserver stesso.

Linux Box

Per prima cosa occorre accedere in scrittura al file syslogd presente nella directory /etc/default:

nightfly@nightbox:~$ sudo nano /etc/default/syslogd

A questo punto dovremmo visualizzare la seguente stringa:

SYSLOGD=””

alla quale dovremo aggiungere le opzioni -r e -m 0:

SYSLOGD=”-r -m 0″

Nella fattispecie, -r abilita il logging remoto mentre -m 0 evita di visualizzare ogni tot minuti (20 per default) entry del tipo — MARK — (una sorta di keepalive) all’interno del file di log.

Ora accediamo al file /etc/syslog.conf:

nightfly@nightbox:~$ sudo nano /etc/syslog.conf

ed aggiungiamo la seguente stringa:

local4.4 /var/log/pix.log

dove local4 è il nome usato da syslogd (ovvero il demone che effettua le operazioni di logging) per identificare il firewall, mentre il 4 dopo il . indica il livello di logging che deve essere applicato per il dispositivo di rete in questione. In particolare, i livelli di logging utilizzabili sono i senguenti:

0 – Emergency (emerg)
1 – Alerts (alert)
2 – Critical (crit)
3 – Errors (err)
4 – Warnings (warn)
5 – Notification (notice)
6 – Information (info)

7 – Debug (debug)

Maggiore è il livello di logging, più precise saranno le informazioni salvate. Da notare che ad una maggiore precisione corrisponde un maggior numero di dati registrati, con conseguente saturazione dei file di log in tempi piuttosto brevi (ecco perchè nell’esempio ho scelto il livello 4 e non il livello 7).

Per ciò che concerne la stringa:

/var/log/pix.log

essa specifica il file in cui dovranno essere raccolte le informazioni provenienti dal PIX.

Poichè stiamo utilizzando un file dedicato, è inutile salvare tali informazioni anche su /var/log/syslog. Per fare quindi in modo che ciò non avvenga devo aggiungire la stringa:

local4.none

nelle varie sezioni del file syslog.conf. Ad esempio:

*.*;auth,authpriv.none,local4.none -/var/log/syslog

per la sezione dedicata ai tentativi di autenticazione, oppure:

*.=debug; auth,authpriv.none; news.none;mail.none -/var/log/debug local4.none

per la sezione dedicata alle informazioni di livello 7 (debug), e così via.

Per evitare che il file di log dedicato al PIX raggiunga dimensioni eccessive è buona norma attivare il logrotate. Occorre dapprima creare il file pix nella directory /etc/logrotate.d/

nightfly@nightbox:~$ sudo nano /etc/logrotate.d/pix

ed all’interno di tale file aggiungere le seguenti direttive:

/var/log/pix.log {

rotate 7

daily

compress

missingok

notifempty

}

Nella fattispecie, ogni giorno (daily) verrà generato un nuovo file pix.log, archiviando automaticamente il logfile del giorno precedente. Inoltre, la durata degli archivi è pari ad una settimana (rotate 7), dopodichè essi verranno cancellati.

Riavviamo syslogd per rendere effettive le nuove impostazioni:

nightfly@nightbox:~$ sudo /etc/init.d/sysklogd restart

Verifichiamo che il nostro logserver sia effettivamente in ascolto, digitando:

nightfly@nightbox:~$ sudo nmap -sU localhost

Se visualizzeremo il seguente output:

514/udp  open|filtered syslog

significa che la linux box è pronta a ricevere i log provenienti dal PIX.

PIX 501

Non ci resta che abilitare il logging sul PIX, specificando l’indirizzo del logserver:

firewall(config)# logging on
firewall(config)# logging timestamp
firewall(config)# logging trap informational
firewall(config)# logging facility 20
firewall(config)# logging host inside <ip del logserver>

Salviamo le nuove impostazioni mediante il comando

firewall(config)# write mem

ed abbiamo finito. See ya.

Aggiornamento

Se state utilizzando rsyslog anzichè il classico syslog non dovete apportare alcuna modifica al file /etc/default/syslogd, in quanto tale procedura risulta obsoleta. Piuttosto, dovete mettere mano al file /etc/rsyslog.conf:

nightfly@nightbox:~$ sudo nano /etc/rsyslog.conf

ed in seguito decommentare le stringhe:

$ModLoad imudp
$UDPServerRun 514

Riavviate dunque rsyslog digitando:

nightfly@nightbox:~$ sudo service rsyslog restart

ed avete finito.

Configurare un firewall Cisco PIX 501

Abbiamo già visto come configurare il router Cisco SOHO 77 (alias Cisco 827). Adesso vedremo come proteggere la nostra LAN configurando un firewall di casa Cisco, ovvero il PIX 501 (vedi immagine sottostante).

product-601333.jpg

Per prima cosa settiamo il nome ed il livello di sicurezza associato all’interfaccia esterna ed all’interfaccia interna che stiamo utilizzando (dopo essere entrati nella modalità di configurazione digitando i comandi ena e successivamente conf t):

pixfirewall(config)# nameif ethernet0 outside security0

pixfirewall(config)# nameif ethernet1 inside security100

Come potete facilmente notare, l’interfaccia ethernet0 l’abbiamo chiamata “outside” e ad essa abbiamo associato il livello di sicurezza “security0”. Discorso simile riguarda l’interfaccia ethernet1.

Impostiamo ora la velocità delle interfacce precedentemente menzionate:

pixfirewall(config)# interface ethernet0 auto

pixfirewall(config)# interface ethernet1 100full

Nella fattispecie, l’interfaccia esterna negozia automaticamente la velocità in base al dispositivo ad essa collegato, mentre l’interfaccia interna lavora alla velocità di 100 Mbit/sec in full duplex.

Impostiamo la password per la modalità enable:

pixfirewall(config)# enable password <vostrapass>

Tale password verrà salvata all’interno del file di configurazione in forma cifrata.

Definiamo l’hostname per il nostro firewall:

pixfirewall(config)# hostname <hostname_del_firewall>

Associamo all’interfaccia esterna ed a quella interna i rispettivi indirizzi IP e subnet mask:

pixfirewall(config)# ip address outside 192.168.100.2 255.255.255.252

pixfirewall(config)# ip address inside 172.30.4.1 255.255.255.0

Ovviamente la scelta della classe privata di indirizzi IP e della relativa maschera di sottorete è a vostra discrezione.

Definiamo adesso l’ARP timeout, ovvero ogni quanti secondi la tabella dei MAC address appartenente al nostro firewall deve essere svuotata:

pixfirewall(config)# arp timeout 14400

Definiamo, inoltre, la cosiddetta MTU, ovvero la massima dimensione dei pacchetti che possono transitare attraverso l’interfaccia:

pixfirewall(config)# mtu outside 1500

pixfirewall(config)# mtu inside 1500

Ora è necessario andare a mettere mano su una delle parti più delicate della nostra configurazione, ovvero il NAT. Tramite il NAT, infatti, sarà possibile tradurre un indirizzo privato appartenente alla nostra rete in un indirizzo pubblico, permettendoci di navigare ed accedere alle risorse dislocate su Internet. Per fare ciò occorre digitare:

pixfirewall(config)# global (outside) 1 interface

pixfirewall(config)# nat (inside) 1 172.30.4.0 255.255.255.0

In questo modo stiamo imponendo al firewall di tradurre gli indirizzi privati appartenenti alla LAN interna (172.30.4.0/24) nell’indirizzo associato all’interfaccia esterna, ovvero 192.168.100.2. Sarà il router, successivamente, ad effettuare un nuovo NAT sull’indirizzo privato dell’interfaccia outside, traducendolo nell’indirizzo pubblico assegnatoci dall’ISP.

Per poter uscire su Internet è inoltre necessario definire nell’ambito del firewall una rotta statica mediante il seguente comando:

pixfirewall(config)# route otuside 0.0.0.0 0.0.0.0 192.168.100.1

In questo modo stiamo dicendo al firewall di instradare tutto il traffico destinato ad un indirizzo non presente all’interno della sua tabella di routing verso l’indirizzo 192.168.100.1, ovvero il router. Sarà quindi compito del router, tramite una nuova default route, far si che il traffico venga indirizzato verso l’esterno.

Ora, supponiamo che all’interno della nostra LAN sia presente una risorsa (ad esempio un WEB server) che debba essere necessariamente contattabile dall’esterno. Ovviamente, la cosa migliore da fare in questo caso sarebbe quella di posizionare il server nella DMZ ma per semplicità tale server verrà dislocato nell’ambito della LAN stessa.

L’indirizzo IP del server è 172.30.4.2, quindi occorrerà digitare:

pixfirewall(config)# static (inside, outside) 192.168.100.2 172.30.4.2 netmask 255.255.255.0 0 0

dove l’indirizzo IP dell’interfaccia outside deve essere inserito sempre PRIMA dell’indirizzo privato associato al server.

Definiamo adesso il tipo di traffico che deve essere accettato in ingresso all’interfaccia esterna. E’ possibile fare ciò mediante un’ACL nominale:

pixfirewall(config)# access-list inbound permit tcp any host 192.168.100.2 eq 80

pixfirewall(config)# access-list inbound permit icmp any host 192.168.100.2

In tal modo il nostro Web server potrà essere contattato attraverso la porta 80 e risponderà ai ping eseguiti dall’esterno. Non ci resta che associare l’ACL appena creata all’interfaccia di interesse:

pixfirewall(config)# access-group inbound in interface outside

Sarebbe utile, inoltre, consentire la gestione da remoto del firewall, senza doversi collegare necessariamente a tale dispositivo mediante cavo console (altrimenti conosciuto come rollover). Per fare ciò è necessario abilitare Telnet:

pixfirewall(config)# telnet 172.30.4.0 255.255.255.0 inside

ovvero stiamo imponendo al firewall di accettare esclusivamente le connessioni telnet provenienti dall’interfaccia interna, nella fattispecie dagli host della LAN.

pixfirewall(config)# telnet timeout 5

con questo comando il firewall chiuderà qualunque sessione Telnet dopo 5 minuti di inattività.

Occorre notare che il nostro firewall (per default) non permette il transito di echo-reply provenienti dall’interfaccia “outside” e dirette verso l’interfaccia “inside”. Ciò significa che qualunque ping originato dalla LAN e diretto verso l’esterno non potrà ricevere risposta. Per evitare ciò, basta insirire le seguenti regole all’ACL “inbound” precedentemente creata:

 access-list inbound permit icmp any any echo-reply
 access-list inbound permit icmp any any time-exceeded
 access-list inbound permit icmp any any unreachable
 access-list inbound permit icmp any any source-quench

Bene, salviamo la nostra configurazione ed il gioco è fatto:

write memory

La guida termina qui. Nei prossimi post vedremo come gestire il nostro firewall mediante PDM (PIX Device Manager). A presto.