2.4+iptables
Pepe
pepe w apollo.net.pl
Sob, 30 Mar 2002, 00:10:02 CET
On Fri, 29 Mar 2002 20:53:58 +0100 (CET)
Krzysiek Taraszka <dzimi w pld.org.pl> wrote:
> Witam,
>
> ano stalo sie, pojawil sie klient, ktory chce bym mu postawil PLD na jajku
> 2.4 (ble) i iptables ....
> problem w tym, ze ja sie na iptables nie znam, ipchains, jasne, moge
> czarowac ile wejdzie :)
>
> Chcial bym sie dowiedziec jak moge zrobic masq na 2.4 i iptables + prosty
> firewall.
> Kto mi podesle gotowe rozwiazanie ? Bede wdzieczny i to bardzo :)
>
> Krzysiek "dzimi" Taraszka (dzimi w pld.org.pl)
Witam
Ja zrobiłem to tak (dwa pliki):
/etc/rc.d/init.d/rc.firewall
<----ciach
#!/bin/sh
# rc.firewall Configuring firewall for kernel 2.4.x
#
# chkconfig: 2345 10 90
#
# description: Configuring firewall for kernel 2.4.x
#
# Konfiguracja firewall'a
#
. /etc/rc.d/init.d/functions
PROG="/usr/sbin/iptables"
[ ! -f /etc/sysconfig/firewall ] && exit 0
. /etc/sysconfig/firewall
case "$1" in
start)
msg_starting firewall
# Dodanie do zaufanych hostów/sieci
# sieci zewnętrznej dla interfejsu zewnętrznego
# jesli takowa występuje
if [ -n "$EXT_NET" ]; then
TRUSTED_HOSTS="$EXT_NET $TRUSTED_HOSTS"
fi
# Moduły używane przez iptables
#
for MODULE in $USE_MODULES; do
insmod -q $MODULE
done
# Ustawienia główne
#
# INPUT
$PROG -F INPUT
$PROG -P INPUT DROP
$PROG -A INPUT -i lo -j ACCEPT
$PROG -A INPUT -p icmp -s 0/0 -d 0/0 -j ACCEPT
# FORWARD
if [ -n "$EXT_IP" ]; then
$PROG -t nat -A POSTROUTING -o $EXT -j SNAT --to $EXT_IP
else
$PROG -t nat -A POSTROUTING -o $EXT -j MASQUERADE
fi
$PROG -F FORWARD
$PROG -P FORWARD DROP
$PROG -A FORWARD -i $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
# OUTPUT
$PROG -F OUTPUT
$PROG -P OUTPUT ACCEPT
# Konfiguracja poszczególnych interfejsów
#
# Interfejs zewnętrzny
$PROG -A INPUT -i $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
for HOST in $TRUSTED_HOSTS; do
$PROG -A INPUT -i $EXT -s $HOST -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
done
$PROG -A INPUT -i $EXT -p tcp --dport 113 -m state --state NEW -j REJECT
# Interfejs wewnętrzny (GOOD NET)
for HOST in $INT_EXCLUDE_HOSTS; do
$PROG -A INPUT -i $INT -s $INT_NET -d $HOST -j DROP
done
$PROG -A INPUT -p udp -i $INT --dport 67:68 -j ACCEPT
$PROG -A INPUT -i $INT -s $INT_NET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$PROG -A FORWARD -i $INT -s $INT_NET -o $EXT -j ACCEPT
# Interfejs wewnętrzny (BAD NET)
if [ -n "$BAD" ] && [ -n "$BAD_IP" ] && [ -n "$BAD_NET" ]; then
$PROG -A INPUT -p udp -i $BAD --dport 67:68 -j ACCEPT
$PROG -A INPUT -i $BAD -s $BAD_NET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$PROG -A FORWARD -i $BAD -s $BAD_NET -o $EXT -j ACCEPT
fi
# Ustawienia globalne
#
# Koniec
$PROG -A INPUT -l -j DROP
$PROG -A FORWARD -l -j DROP
;;
stop)
msg_stopping firewall
$PROG -P INPUT ACCEPT
$PROG -P OUTPUT ACCEPT
$PROG -P FORWARD ACCEPT
$PROG -F
$PROG -t nat -P POSTROUTING ACCEPT
$PROG -t nat -F
# for MODULE in $USE_MODULES; do
# rmmod -q $MODULE
# done
;;
restart)
$0 stop
$0 start
;;
status)
echo "=====> Filter status <===="
$PROG -L -n -v
echo
echo "=====> NAT status <===="
$PROG -L -n -v -t nat
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
<----ciach
oraz plik konfiguracyjny
/etc/sysconfig/firewall
<----ciach
# Konfiguracja interfejsów dla firewall'a
#
# Interfejs zewnętrzny
EXT="ppp0"
EXT_NET=""
EXT_IP=""
# Interfejs wewnętrzny (GOOD NET)
INT="eth0"
INT_NET="172.17.58.0/24"
INT_IP="172.17.58.1"
INT_EXCLUDE_HOSTS="" # Hosty/sieci z którymi nie można się łączyć z wewnątrz
# Interfejs wewnętrzny (BAD NET)
BAD=""
BAD_NET=""
BAD_IP=""
# Zaufane hosty/sieci które mogą się
# łączyć do wszystkich usług z zewnątrz (np. ssh)
TRUSTED_HOSTS="213.77.99.160/28"
# Modułu do załadowania
USE_MODULES="ip_conntrack ip_conntrack_ftp"
<----ciach
Może się na coś przyda :)
--
Pepe
Więcej informacji o liście dyskusyjnej pld-users-pl