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
- 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?
- Jeśli ustawię regułę:to czy ona będzie działać tak samo jak:
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
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