Strona 1 z 1

Firewall na zdalnej maszynie

: 06 marca 2010, 00:10
autor: pracochlik
Witam.
Napisałem sobie taki prosty firewall, który udostępnia dostęp do serwera z jednego IP:

Kod: Zaznacz cały

#!/bin/bash
  
# Adres serwera
        SERWER="89.0.0.2"
#Adres zdalnego serwera
        ZDALNY_SERWER="87.0.0.1"
# Adres komputera z prawami admina
        HOST="212.0.0.1"
#Adresy serwerow DNS
        DNS1="89.0.0.12"
        DNS2="89.0.0.13"
# 
        WEW_DEV="eth0"
# Adres wyjsciowy - zewnetrzny i karta obslugujaca
        ZEW_NET="0/0"
        ZEW_DEV="eth1"
# Uslugi TCP
        TCP_IN="ssh,ftp-data,ftp,rsync"           # 80,22,20,21,873
        TCP_OUT="www,ftp,ftp-data,ssh,rsync"      # 80,21,20,22,837
# Uslugi UDP
        UDP_IN="443,465,995"
        UDP_OUT=""
#Uslugi ICMP
        ICMP_IN=""
        ICMP_OUT=""
# Usuwamy poprzednie reguly
        $IPTABLES -F INPUT
        $IPTABLES -F FORWARD
        $IPTABLES -F OUTPUT
# Ustawienie domyslnej polityki
        $IPTABLES -P INPUT DROP
        $IPTABLES -P OUTPUT ACCEPT  
        $IPTABLES -P FORWARD DROP
# Zapisujemy caly ruch w logach
        $IPTABLES -A INPUT -j LOG -m limit --limit 15/hor              # 15 logów na godzine
# Ladujemy mozliwosc sledzenia polaczen
        modprobe ip_conntarck
        modprobe ip_conntarck_ftp
# Pozwalamy na korzstanie z protokolow w trybie passive on
        $IPTABLES -A INPUT -m state --state NEW,ESTABLISHED, RELATED -j ACCEPT
#Pingować możemy tylko z wybranych maszyn
        $IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -s $ZDALNY_SERWER  -j  ACCEPT
#Odblokowywujemy uslugi dla danego hosta/serwera
        $IPTABLES -A INPUT -p tcp -s $ZDALNY_SERWER -m multiport --dport $TCP_IN  -j ACCEPT
        $IPTABLES -A INPUT -p udp -s $ZDALNY_SERWER -m multiport --dport $UDP_IN -j ACCEPT
        $IPTABLES -A INPUT -p udp -s $ZDALNY_SERWER --dport 137:139 -j ACCEPT

#Odblokowywujemy wszytskie uslugi dla danego hosta
        #$IPTABLES -A INPUT -s $HOST -j ACCEPT   
#Dosted serwerów DNS
        $IPTABLES INPUT $DNS1 ACCEPT
        $IPTABLES  INPUT $DNS2  ACCEPT
# Pakiety z adresow nierutowlanych, multicast i zarezerwowanych - BLOKUJEMY
        $IPTABLES -A INPUT -i $WEW_DEV -s 10.0.0.0/8 -j DROP            #class A
        $IPTABLES -A INPUT -i $WEW_DEV -s 172.16.0.0/12 -j DROP         #class B
        $IPTABLES -A INPUT -i $WEW_DEV -s 192.168.0.0/16 -j DROP        #Class C
        $IPTABLES -A INPUT -i $WEW_DEV -s 224.0.0.0/4 -j DROP           #multicast
        $IPTABLES -A INPUT -i $WEW_DEV -d 224.0.0.0/4 -j DROP           #multicast
        $IPTABLES -A INPUT -i $WEW_DEV -s 240.0.0.0/5 -j DROP           #reserved
        $IPTABLES -A INPUT -i $WEW_DEV -s 127.0.0.0/5 -j DROP           #lo
Mam teraz dwa pytania
  1. Ponieważ firewall będzie implementowany na zdalnej maszynie, nie chciałbym przypadkiem zablokować sobie dostępu do niej. W jaki sposób bezpiecznie wgrać w/w firewall?
  2. Jeśli ustawię regułę:

    Kod: Zaznacz cały

         $IPTABLES -A INPUT -m state --state NEW,ESTABLISHED, RELATED -j ACCEPT
          $IPTABLES -A INPUT -p tcp -s $ZDALNY_SERWER -m multiport --dport $TCP_IN -j ACCEPT
    $IPTABLES -A INPUT -p UDP -s $ZDALNY_SERWER -m multiport --dport $UDP_IN  -j ACCEPT
     
    to czy ona będzie działać tak samo jak:

    Kod: Zaznacz cały

    $IPTABLES -A INPUT -p UDP -s $ZDALNY_SERWER -m multiport --dport $UDP_IN state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A INPUT -p tcp -s $ZDALNY_SERWER -m multiport --dport $TCP_IN state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    

: 14 marca 2010, 13:21
autor: grzesiek

Kod: Zaznacz cały

# Pozwalamy na korzstanie z protokolow w trybie passive on
        $IPTABLES -A INPUT -m state --state NEW,ESTABLISHED, RELATED -j ACCEPT
W tym momencie przepuszczasz wszystko, inaczej

Kod: Zaznacz cały

$IPTABLES -P INPUT ACCEPT
i to ze wszystkich interfejsów, więc cała reszta to...

: 16 marca 2010, 14:59
autor: redelek
Hej,

Ja dodaję sobie do crona czyszczenie reguł iptables co 30 min i to działa. Jak coś skopię to za 30 minut wróci wszystko do normy. Przetestuj sobie na jakiejś innej maszynie

: 17 marca 2010, 10:54
autor: bzyk

Kod: Zaznacz cały

./skrypt_firewalla && sleep 60 && iptables -F && iptables -P INPUT ACCEPT
i po uruchomieniu masz 60 sekund na sprawdzenie dostepu do maszyny. Jak cosik nie zagra, to po minucie regulki sie wyczyszca i polityka INPUT zostanie ustawiona na wiadomą, co pozwoli Ci na pewno na zalogowanie się.