Debian-firewall do sprawdzenia

Witam,

na moim domowym serwerze chcę skonfigurwać firewalla. Zanim podam mojego konfiga napisze co na nim mam.

Serwer posiada 2 karty, jedna z publicznym IP, a druga z prywatnym.

Czy dla eth2 trzeba pisać osobno regułki?

Teraz mój konfig:

 

#!/bin/bash
## Czyszczenie starych reguł
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
## Polityka bezpieczeństwa ##
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
## Reguły dla pętli zwrotnej ##
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables - A OUTPUT -o lo -j ACCEPT
## Blokowanie IP ##
#BLOCK_THIS_IP="x.x.x.x"
#iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP
# Akceptacja polaczen powiazanych do istniejacych polaczen.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## FTP ##
iptables -A INPUT -i eth0 -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
## SSH ##
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
## HTTP ##
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
##IDENT ##
iptables -A INPUT -i eth0 -p tcp --dport 113 -m state --state NEW,ESTABLISHED -j ACCEPT

## Logowanie ##
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
## Logowanie dziwnych (spoofed, source routed, redirects) pakietów ##
/bin/echo "1" /proc/sys/net/ipv4/conf/all/log_martians

 

Nie ma przez jakiś czas fizycznego dostępu do serwera dlatego najpierw wolę się upewnić, że wszystko jest ok.

Jeśli masz ustawioną politykę bezpieczeństwa dla ruchu przychodzącego na DROP, to te reguły są zbędne, bo ruch jest domyślnie blokowany.

## Blokowanie IP ##
#BLOCK_THIS_IP="x.x.x.x"
#iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP[/code]

W tym łańcuchu tylko zezwalasz na ruch sieciowy. Łańcuchy input i output działają dla maszyny lokalnej, jeśli pakiety są kierowane do hostów zdalnych, to ustawiasz reguły dla łańcucha forward, tak więc jeśli w innej podsieci masz jakieś usługi, ustawiasz reguły w tym łańcuchu.

Natomiast te reguły

## FTP ##
iptables -A INPUT -i eth0 -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
## SSH ##
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
## HTTP ##
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
##IDENT ##
iptables -A INPUT -i eth0 -p tcp --dport 113 -m state --state NEW,ESTABLISHED[/code]

Powinieneś dać przed zezwoleniem na ruch z połączeń nawiązanych, w przeciwnym razie pakiety będą odrzucane.

Czyli ma to wyglądać tak:

#!/bin/bash
## Czyszczenie starych reguł
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
## Polityka bezpieczeństwa ##
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
## Reguły dla pętli zwrotnej ##
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables - A OUTPUT -o lo -j ACCEPT
## FTP ##
iptables -A INPUT -i eth0 -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
## SSH ##
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
## HTTP ##
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
##IDENT ##
iptables -A INPUT -i eth0 -p tcp --dport 113 -m state --state NEW,ESTABLISHED -j ACCEPT
## Akceptacja polaczen powiazanych do istniejacych polaczen ##
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Logowanie ##
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
## Logowanie dziwnych (spoofed, source routed, redirects) pakietów ##
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

Tak.