|
Konfiguracja Firewall'a (iptables) w Debianie
|
|
12-14-2009, 20:37
(Ten post był ostatnio modyfikowany: 12-16-2009 17:06 przez zbik.)
Post: #1
|
|||
|
|||
|
Konfiguracja Firewall'a (iptables) w Debianie
Firewall znacząco zwiększa bezpieczeństwo naszego serwera a jego konfiguracja jest jedną z ważniejszych rzeczy wpływających na to. W różnych wersjach kerneli są różne programy do konfiguracji firewall'a, np. ipfwadm (2.0.x), ipchains (2.2.x), iptables(2.4.x). Choć w kernelach 2.4.x jest support dla ipchains polecałbym jednak iptables ze względu na dużo bardziej rozbudowane ich możliwości.
na początek musimy ściągnąć i zainstalować pakiet iptables apt-get install iptables następnie w konfiguracji kernela musimy uwzględnić następujące opcje : <*> Packet socket [*] Network packet filtering (replace ipchains) <*> Unix domain sockets [*] TCP/IP networking [*] IP: advanced router [*] IP: policy routing [*] IP: use netfilter MARK value as routing key [*] IP: fast network address translation [*] IP: use TOS value as routing key Jedyna opcją której nie powinieneś zaznaczać jest : [ ] IP: TCP Explicit Congestion Notification support Jeśli ta opcja jest uaktywniona, twoja maszyna linuxowa nie będzie mogła utrzymać łączności z 8% całego Internetu. Po skonfigurowaniu kernela i zainstalowaniu pakietu iptables jesteśmy gotowi do konfiguracji firewall'a. Na początek jeśli masz sieć lokalną to powinniśmy zastąpić maskarade która dotąd była robiona przez ipchains : iptables -t nat -A POSTROUTING -o ppp0 -j SNAT -s 192.168.1.0/24 -d ! 192.168.1.0/24 --to 1.2.3.4 1.2.3.4 - nasz IP zewnętrzny ppp0 - jest naszym interfejsem wyjściowym na świat Ta linijka załatwi nam maskowanie całej sieci tak jak robiło to ipchains. Musimy pamiętać żeby włączyć forwarding pakietów (tak jak w ipchains) : echo 1 > /proc/sys/net/ipv4/ip_forward lub w /etc/network/options ustawiamy ip_forward=yes i wyłączyć ECN (jeśli nie zrobiliśmy tego w kernelu) : echo 0 > /proc/sys/net/ipv4/tcp_ecn Budowanie firewall'a zaczynamy od zablokowania wszystkiego: iptables -P INPUT DROP następnie przepuszczamy wszystko co idzie z naszej sieci lokalnej (a raczej wszystko co nie idzie z internetu czyli ppp0): iptables -A INPUT -i ! ppp0 -j ACCEPT jesli chcemy aby nasz komputer odpowiadal na ping dodajemy iptables -A INPUT -i ppp0 -p icmp -j ACCEPT przepuszczamy połączenia już zestawione ESTABLISHED i RELATED (więcej na ten temat możesz poczytać w Iptables (Netfilter) - Tutorial, do poprawnego działania tej linii jest potrzebne zaznaczenie w kernelu opcji : <*> Connection state match support iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Teraz przystępujemy do otwierania poszczególnych portów do serwisów uruchomionych na serwerze: iptables -A INPUT -p tcp --dport XXX -m state --state NEW -j ACCEPT XXX to numer portu który chcemy otworzyć robimy tak dla każdej usługi którą chcemy mieć dostępną na serwerze. Najczęściej używane porty to: 21 - ftp, 22 - ssh, 25 - poczta(smtp), 53 - DNS, 80 - www, 113 - auth. dla DNS konieczne jest także otwarcie portu na UDP czyli: iptables -A INPUT -p udp --dport XXX -m state --state NEW -j ACCEPT ponieważ zablokowaliśmy cały ruch przychodzący ze świata nasz komputer nie odpowiada na standardowy "TCP reset" i "ICMP port-unreachable response", w tym wypadku musimy dodać do naszego firewall'a linijki naprawiające ten błąd: iptables -A INPUT -p tcp -i ppp0 -j REJECT --reject-with tcp-reset iptables -A INPUT -p udp -i ppp0 -j REJECT --reject-with icmp-port-unreachable |
|||
|
« Starszy wątek | Nowszy wątek »
|


Home
Szukaj
Użytkownicy
Kalendarz
Pomoc
Rss



