|
Zadania:
Firewall ma wpuszczac jedynie te uslugi, które sa zainstalowane na
serwerze. Filtrowany jest także ruch wychodzacy.
Instalacja:
Skrypt firewall`a znajduje się w katalogu /root/firewall i
startuje automatycznie z systemem poprzez dowiązanie symboliczne
w katalogu starowym debiana:
ln -s /root/firewall /etc/rc.d/firewall
Działanie:
Kasujemy wszystkie regóły:
iptables -F
Ustawiamy domyslną polityke odrzucania wszystkiego dla pakietów wchodzących (INPUT) i wychodzących (OUTPUT):
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Zmienne zawierające wpuszczane porty z zewnątrz (IPORTS) i wypuszczane na zewnątrz (OPORTS):
PORTS=20,21,22,80,110,8080,53,139,443,137,138
OPORTS=20,21,22,25,80,8080,53,139,443,137,138
Akcaptujemy wszystko na interfejsie lokalnym:
iptables -A INPUT -i lo -j ACCEPT
Akceptujemy połączenia już ustanowione w obu łańcuchach OUTPUT i INPUT:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Akceptujemy nowe połączenia tcp i udp na dozwolonych portach:
iptables -A INPUT -p tcp -m multiport --dport $IPORTS -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sport $OPORTS -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport $IPORTS -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --sport $OPORTS -m state --state NEW -j ACCEPT
Akcaptujemy pingi:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
Całą reszte odrzucamy z komunikatem odpowiednio dla tcp połączenie skasowane i dla udp port niedostępny:
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable
Skrypt:
#!/bin/bash
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
IPORTS=20,21,22,80,110,8080,53,139,443,137,138
OPORTS=20,21,22,25,80,8080,53,139,443,137,138
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport $IPORTS -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sport $OPORTS -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport $IPORTS -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --sport $OPORTS -m state --state NEW -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable
Uwagi:
Firewall można wyłączyć poprzez wydanie poleceń:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
Odpowiedni skrypt znajduje sie w katalogu: /root/dropf .
|