Tento článek je součástí naší pokračující série článků Linux IPTables. Když věci nefungují podle očekávání s vašimi pravidly IPTables, možná budete chtít zaznamenat zahozené pakety IPTables pro účely odstraňování problémů. Tento článek vysvětluje, jak protokolovat příchozí i odchozí zahozené pakety firewallu.
Pokud jste v IPTables nováčkem, nejprve se seznamte se základními koncepty IPTables.
Zaznamenat všechny zahozené vstupní pakety
Nejprve musíme pochopit, jak zaznamenat všechny zahozené vstupní pakety iptables do syslog.
Pokud již máte celou hromadu pravidel brány firewall iptables, přidejte je dolů, což zaznamená všechny zahozené vstupní pakety (příchozí) do /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
Ve výše uvedeném příkladu provede následující:
- iptables -N LOGGING:Vytvořte nový řetězec s názvem LOGGING
- iptables -A INPUT -j LOGGING:Všechny zbývající příchozí pakety přeskočí do řetězce LOGGING
- řádek č. 3:Zaznamenejte příchozí pakety do syslog (/var/log/messages). Tento řádek je podrobně vysvětlen níže.
- iptables -A LOGGING -j DROP:Nakonec zahoďte všechny pakety, které přišly do řetězce LOGGING. tj. nyní skutečně zahodí příchozí pakety.
Ve výše uvedeném řádku č. 3 má následující možnosti pro protokolování zahozených paketů:
- -m limit:Používá modul shody limitů. Pomocí tohoto můžete omezit protokolování pomocí volby –limit.
- –limit 2/min:Udává maximální průměrnou míru shody pro protokolování. V tomto příkladu pro podobné pakety omezí protokolování na 2 za minutu. Můžete také zadat 2/sekundu, 2/minutu, 2/hodinu, 2/den. To je užitečné, když nechcete zahlcovat zprávy protokolu opakovanými zprávami o stejných zahozených paketech.
- -j LOG:Udává, že cílem pro tento paket je LOG. tj. zápis do souboru protokolu.
- –log-prefix “IPTables-Dropped:” Můžete zadat libovolnou předponu protokolu, která bude připojena ke zprávám protokolu, které budou zapsány do souboru /var/log/messages
- –log-level 4 Toto jsou standardní úrovně syslog. 4 je varování. Můžete použít číslo z rozsahu 0 až 7. 0 je nouzové a 7 je ladění.
Zaprotokolovat všechny zahozené odchozí pakety
To je stejné jako výše, ale 2. řádek níže má OUTPUT místo 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
Zaznamenat všechny zahozené pakety (příchozí i odchozí)
To je stejné jako předtím, ale vezmeme řádek číslo 2 z předchozích dvou příkladů a přidáme ho sem. tj. Budeme mít samostatný řádek pro INPUT a OUTPUT, který přeskočí na řetězec LOGGING.
Chcete-li zaznamenat příchozí i odchozí zahozené pakety, přidejte následující řádky na konec stávajících pravidel brány firewall iptables.
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
Také, jak jsme vysvětlili dříve, iptables ve výchozím nastavení použijí /var/log/messages k protokolování všech zpráv. Pokud to chcete změnit na svůj vlastní soubor protokolu, přidejte následující řádek do /etc/syslog.conf
kern.warning /var/log/custom.log
Jak číst IPTables Log
Následuje ukázka řádků, které byly zaznamenány do /var/log/messages, když byly zahozeny příchozí a odchozí pakety.
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
Ve výše uvedeném výstupu:
- IPTables-Dropped:Toto je předpona, kterou jsme použili v našem protokolování zadáním volby –log-prefix
- IN=em1 Označuje rozhraní, které bylo použito pro tyto příchozí pakety. Toto bude prázdné pro odchozí pakety
- OUT=em1 Označuje rozhraní, které bylo použito pro odchozí pakety. Toto bude prázdné pro příchozí pakety.
- SRC=Zdrojová IP adresa, odkud paket pochází
- DST=Cílová IP adresa, kam byly pakety odeslány
- LEN=Délka paketu
- PROTO=Označuje protokol (jak vidíte výše, 1. řádek je pro odchozí protokol ICMP, 2. řádek je pro příchozí protokol TCP)
- SPT=Označuje zdrojový port
- DPT=Označuje cílový port. Ve 2. řádku výše je cílový port 443. To znamená, že příchozí pakety HTTPS byly zahozeny
Další výukové programy pro IPTtables
- Výukový program brány firewall systému Linux:Tabulky IPTables, řetězce, základy pravidel
- Linux IPTables:Jak přidat pravidla brány firewall (s příkladem Allow SSH)
- Linuxové IPTables:Příklady pravidel příchozí a odchozí pošty (SSH a HTTP)
- IPTables Flush:Smazat / odebrat všechna pravidla na RedHat a CentOS Linux
- 25 nejčastěji používaných příkladů pravidel Linux IPTables