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