iptables - optymalizacja i logowanie
: 29 maja 2015, 18:16
Witam. Przez długi czas odkładałem zrobienie porządku z zaporą, aż w końcu nadszedł czas. Poczytałem trochę artykułów, również z bloga Grześka i widzę, że moją zaporę można bardziej zoptymalizować. Kwestia tylko jak te reguły poprzestawiać, aby miało to sens i nadal było bezpiecznie? Obecne reguły wzorowałem na podstawie artykułu Rash-a. Poniżej przedstawiam wycinek iptables - łańcuch FORWARD.
Domyślna polityka to oczywiście DROP.
Wykonałem
i oto wynik:
Jak widać regułę nr 3 ze stanem ESTABLISHED RELATED najlepiej przenieść na pierwsze miejsce. Następna reguła z dużą ilością to pakiety udp na porcie 53. A kolejne po niej to generalnie http i https.
no i tak, w które miejsce najlepiej je poprzenościć, przed:
czy po niej? Posiadam też dwie reguły, które są czasowo ograniczone i czy można je inaczej zapisać?
Następna rzecz, która mnie irytuje i nie mogę sobie z nią poradzić to:
bo wygląda na to, że ograniczenie logowania z tych dwóch adresów nie działa pewnie dlatego, że po nich jest:
.
A te dwa adresy koniecznie nie chciałbym logować, za dużo logów pochodzi z nich.
Jeśli ktoś jest w stanie pomóc i podzielić się swoją uwagą to zapraszam do dyskusji.
Domyślna polityka to oczywiście DROP.
Kod: Zaznacz cały
$NET1=192.168.0.0/28
$NET2=192.168.1.0/28
IPTABLES -P FORWARD DROP
1 IPTABLES -A FORWARD -m state --state INVALID -j LOG --log-prefix "DROP INVALID FWD: " --log-ip-options --log-tcp-options
2 IPTABLES -A FORWARD -m state --state INVALID -j DROP
3 IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
4 IPTABLES -A FORWARD -i eth1 ! -s $NET1 -j LOG --log-prefix "SPOOF 1 FWD: "
5 IPTABLES -A FORWARD -i eth1 ! -s $NET1 -j DROP
6 IPTABLES -A FORWARD -i eth2 ! -s $NET2 -j LOG --log-prefix "SPOOF 2 FWD: "
7 IPTABLES -A FORWARD -i eth2 ! -s $NET2 -j DROP
8 IPTABLES -A FORWARD -i eth1 -s 192.168.0.14 -m time --timestart 22:30 --timestop 08:00 -j DROP
9 IPTABLES -A FORWARD -i eth2 -s 192.168.1.14 -p tcp -m multiport --dport 80,443 -m time --timestart 08:00 --timestop 23:00 --syn -m state --state NEW -j ACCEPT
10 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT
11 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 25 --syn -m state --state NEW -j ACCEPT
12 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT
13 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 443 --syn -m state --state NEW -j ACCEPT
14 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 1080 --syn -m state --state NEW -j ACCEPT
15 IPTABLES -A FORWARD -i eth1 -s $NET1 -p tcp --dport 8000 --syn -m state --state NEW -j ACCEPT
16 IPTABLES -A FORWARD -p udp --dport 53 -m state --state NEW -j ACCEPT
17 IPTABLES -A FORWARD -i eth2 -m iprange --src-range 192.168.1.4-192.168.1.12 -p tcp -m multiport --dport 80,443 --syn -m state --state NEW -j ACCEPT
18 IPTABLES -A FORWARD -i eth2 -s 192.168.1.7 -j LOG -m limit --limit 5/hour
19 IPTABLES -A FORWARD -i eth2 -s 192.168.1.14 -j LOG -m limit --limit 5/hour
20 IPTABLES -A FORWARD ! -i lo -j LOG --log-prefix "DROP FWD: " --log-ip-options --log-tcp-options
Kod: Zaznacz cały
iptables -L -nv --line-numbers
Kod: Zaznacz cały
Chain FORWARD (policy DROP 25016 packets, 1441K bytes)
num pkts bytes target prot opt in out source destination
1 8387 540K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID LOG flags 6 level 4 prefix `DROP INVALID FWD: '
2 8387 540K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
3 6152K 5696M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
4 0 0 LOG all -- eth1 * !192.168.0.0/28 0.0.0.0/0 LOG flags 0 level 4 prefix `SPOOF 1 FWD:'
5 0 0 DROP all -- eth1 * !192.168.0.0/28 0.0.0.0/0
6 0 0 LOG all -- eth2 * !192.168.1.0/28 0.0.0.0/0 LOG flags 0 level 4 prefix `SPOOF 2 FWD:'
7 0 0 DROP all -- eth2 * !192.168.1.0/28 0.0.0.0/0
8 0 0 DROP all -- eth1 * 192.168.0.14 0.0.0.0/0 TIME from 01:30:00 to 08:00:00
9 13033 782K ACCEPT tcp -- eth2 * 192.168.1.14 0.0.0.0/0 multiport dports 80,443 TIME from 08:00:00 to 23:00:00 tcp flags:0x17/0x02 state NEW
10 0 0 ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:21 flags:0x17/0x02 state NEW
11 0 0 ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 state NEW
12 7539 387K ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 state NEW
13 6412 330K ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:443 flags:0x17/0x02 state NEW
14 0 0 ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:1080 flags:0x17/0x02 state NEW
15 0 0 ACCEPT tcp -- eth1 * 192.168.0.0/28 0.0.0.0/0 tcp dpt:8000 flags:0x17/0x02 state NEW
16 19547 1318K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 state NEW
17 5311 340K ACCEPT tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0 source IP range 192.168.1.4-192.168.1.12 multiport dports 80,443 tcp flags:0x17/0x02 state NEW
18 225 27502 LOG all -- eth2 * 192.168.1.7 0.0.0.0/0 limit: avg 5/hour burst 5 LOG flags 0 level 4
19 148 15662 LOG all -- eth2 * 192.168.1.14 0.0.0.0/0 limit: avg 5/hour burst 5 LOG flags 0 level 4
20 60852 3264K LOG all -- !lo * 0.0.0.0/0 0.0.0.0/0 LOG flags 6 level 4 prefix `DROP FWD: '
no i tak, w które miejsce najlepiej je poprzenościć, przed:
Kod: Zaznacz cały
4 IPTABLES -A FORWARD -i eth1 ! -s $NET1 -j LOG --log-prefix "SPOOF 1 FWD: "
5 IPTABLES -A FORWARD -i eth1 ! -s $NET1 -j DROP
6 IPTABLES -A FORWARD -i eth2 ! -s $NET2 -j LOG --log-prefix "SPOOF 2 FWD: "
7 IPTABLES -A FORWARD -i eth2 ! -s $NET2 -j DROP
Następna rzecz, która mnie irytuje i nie mogę sobie z nią poradzić to:
Kod: Zaznacz cały
18 IPTABLES -A FORWARD -i eth2 -s 192.168.1.7 -j LOG -m limit --limit 5/hour
19 IPTABLES -A FORWARD -i eth2 -s 192.168.1.14 -j LOG -m limit --limit 5/hour
Kod: Zaznacz cały
20 IPTABLES -A FORWARD ! -i lo -j LOG --log-prefix "DROP FWD: " --log-ip-options --log-tcp-options
A te dwa adresy koniecznie nie chciałbym logować, za dużo logów pochodzi z nich.
Jeśli ktoś jest w stanie pomóc i podzielić się swoją uwagą to zapraszam do dyskusji.