Questo articolo fa parte della nostra serie di articoli Linux IPtables in corso. Quando le cose non funzionano come previsto con le regole di IPTables, potresti voler registrare i pacchetti eliminati da IPTables a scopo di risoluzione dei problemi. Questo articolo spiega come registrare i pacchetti Firewal rilasciati sia in entrata che in uscita.
Se non conosci IPTables, prima mettiti comodo con i concetti fondamentali di IPTables.
Registra tutti i pacchetti di input eliminati
Per prima cosa dobbiamo capire come registrare tutti i pacchetti di input persi da iptables su syslog.
Se hai già un intero gruppo di regole del firewall iptables, aggiungile in fondo, che registrerà tutti i pacchetti di input eliminati (in entrata) in /var/log/messages
iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Nell'esempio precedente, esegue le seguenti operazioni:
- iptables -N LOGGING:crea una nuova catena chiamata LOGGING
- iptables -A INPUT -j LOGGING:Tutti i restanti pacchetti in arrivo salteranno alla catena LOGGING
- line#3:registra i pacchetti in arrivo su syslog (/var/log/messages). Questa riga è spiegata di seguito in dettaglio.
- iptables -A LOGGING -j DROP:Infine, elimina tutti i pacchetti che sono arrivati alla catena LOGGING. cioè ora elimina davvero i pacchetti in arrivo.
Nella riga n. 3 sopra, ha le seguenti opzioni per la registrazione dei pacchetti eliminati:
- -m limit:utilizza il modulo di corrispondenza dei limiti. Usando questo puoi limitare la registrazione usando l'opzione –limit.
- –limit 2/min:indica il tasso di corrispondenza medio massimo per la registrazione. In questo esempio, per i pacchetti simili limiterà la registrazione a 2 al minuto. È inoltre possibile specificare 2/secondo, 2/minuto, 2/ora, 2/giorno. Questo è utile quando non vuoi ingombrare i tuoi messaggi di registro con messaggi ripetuti degli stessi pacchetti eliminati.
- -j LOG:indica che la destinazione per questo pacchetto è LOG. cioè scrivere nel file di registro.
- –log-prefix “IPTables-Dropped:” Puoi specificare qualsiasi prefisso di log, che verrà aggiunto ai messaggi di log che verranno scritti nel file /var/log/messages
- –log-level 4 Questi sono i livelli di syslog standard. 4 è un avviso. Puoi utilizzare un numero compreso tra 0 e 7. 0 è emergenza e 7 è debug.
Registra tutti i pacchetti in uscita eliminati
È lo stesso di sopra, ma la seconda riga sotto ha OUTPUT invece di INPUT.
iptables -N LOGGING iptables -A OUTPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Registra tutti i pacchetti eliminati (sia in entrata che in uscita)
È lo stesso di prima, ma prenderemo la riga numero 2 dai due esempi precedenti e la aggiungeremo qui. cioè avremo una riga separata per INPUT e OUTPUT che salterà alla catena LOGGING.
Per registrare i pacchetti eliminati sia in entrata che in uscita, aggiungi le seguenti righe in fondo alle regole del firewall iptables esistenti.
iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A OUTPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Inoltre, come spiegato in precedenza, per impostazione predefinita, iptables utilizzerà /var/log/messages per registrare tutti i messaggi. Se vuoi cambiarlo nel tuo file di registro personalizzato aggiungi la seguente riga a /etc/syslog.conf
kern.warning /var/log/custom.log
Come leggere il registro IPtables
Quello che segue è un esempio delle righe che sono state registrate in /var/log/messages quando un pacchetto in entrata e in uscita è stato eliminato.
Aug 4 13:22:40 centos kernel: IPTables-Dropped: IN= OUT=em1 SRC=192.168.1.23 DST=192.168.1.20 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=59228 SEQ=2 Aug 4 13:23:00 centos kernel: IPTables-Dropped: IN=em1 OUT= MAC=a2:be:d2:ab:11:af:e2:f2:00:00 SRC=192.168.2.115 DST=192.168.1.23 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=9434 DF PROTO=TCP SPT=58428 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0
Nell'output sopra:
- IPTables-Dropped:questo è il prefisso che abbiamo utilizzato nella nostra registrazione specificando l'opzione –log-prefix
- IN=em1 Indica l'interfaccia utilizzata per questi pacchetti in arrivo. Questo sarà vuoto per i pacchetti in uscita
- OUT=em1 Indica l'interfaccia utilizzata per i pacchetti in uscita. Questo sarà vuoto per i pacchetti in arrivo.
- SRC=L'indirizzo IP di origine da cui ha avuto origine il pacchetto
- DST=L'indirizzo IP di destinazione a cui sono stati inviati i pacchetti
- LEN=Lunghezza del pacchetto
- PROTO=Indica il protocollo (come vedi sopra, la 1a riga è per il protocollo ICMP in uscita, la 2a riga è per il protocollo TCP in entrata)
- SPT=Indica la porta di origine
- DPT=Indica la porta di destinazione. Nella seconda riga sopra, la porta di destinazione è 443. Ciò indica che i pacchetti HTTPS in entrata sono stati eliminati
Esercitazioni aggiuntive su IPtables
- Esercitazione sul firewall di Linux:tabelle IPTables, catene, nozioni fondamentali sulle regole
- Linux IPTables:come aggiungere regole firewall (con l'esempio di SSH consentito)
- Linux IPTables:esempi di regole in entrata e in uscita (SSH e HTTP)
- IPTables Flush:elimina/rimuove tutte le regole su RedHat e CentOS Linux
- 25 Esempi di regole di IPTable Linux usate più di frequente