Пример настройки ipchains для внешнего сервера (ipchains linux script firewall)
Ключевые слова: ipchains, linux, script, firewall, (найти похожие документы)
From: btr <none at btr.name>
Newsgroups: email
Date: Mon, 20 Oct 2004 14:31:37 +0000 (UTC)
Subject: Пример настройки ipchains для внешнего сервера
Пример настройки ipchains для внешнего сервера WWW, DNS, POP3, IMAP
Полдня потратил на то чтобы найти более менее рабочий пример, не нашел,
короче пришлось самому ваять.
Данный конфиг ipchains-а, открывает для локальной сети службы FTP, SSH, SMTP, WWW,
DNS, POP3, IMAP.
Для внешнего мира остается только SMTP, DNS и WWW.
#!/bin/sh
# write btr icq:#105360
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
echo 1 > /proc/sys/net/ipv4/ip_forward
if [ ! -x /sbin/ipchains ]
then
exit 0
fi
# Ваш интерфейс смотрящий в Инет.
INT="eth0"
LOOPBACKINT="lo"
# IP адрес на интерфейсе.
IPADDR="195.195.195.195"
# Ваша сеть
NET="195.195.195.0/24"
LOOPBACK="127.0.0.0/8"
LOCALHOST="127.0.0.0/8"
ANYWHERE="any/0"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
case "$1" in
start)
INT="eth0"
LOOPBACKINT="lo"
# Описание выше
IPADDR="195.195.195.195"
NET="195.195.195.0/24"
LOOPBACK="127.0.0.0/8"
LOCALHOST="127.0.0.0/8"
ANYWHERE="any/0"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
# Сбрасываем правила и выставляем разрешить все по дефолту.
ipchains -F
ipchains -X
ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward ACCEPT
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
ipchains -A forward -i lo -j ACCEPT
# Разрешаем ICMP
ipchains -A input -i $INT -p icmp --icmp-type source-quench -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type source-quench -d 0.0.0.0/0 -j ACCEPT
ipchains -A input -i $INT -p icmp --icmp-type parameter-problem -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type parameter-problem -d 0.0.0.0/0 -j ACCEPT
ipchains -A input -i $INT -p icmp --icmp-type destination-unreachable -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type destination-unreachable -d 0.0.0.0/0 -j ACCEPT
ipchains -A input -i $INT -p icmp --icmp-type time-exceeded -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type time-exceeded -d 0.0.0.0/0 -j ACCEPT
ipchains -A input -i $INT -p icmp --icmp-type echo-reply -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type echo-request -d 0.0.0.0/0 -j ACCEPT
ipchains -A output -i $INT -p icmp --icmp-type echo-reply -d 0.0.0.0/0 -j ACCEPT
ipchains -A input -i $INT -p icmp --icmp-type echo-request -d $IPADDR -j ACCEPT
# ХЗ для чего это но надо =)))
ipchains -A output -i $INT -p tcp -s $IPADDR -d $NET -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $NET -d $IPADDR -j ACCEPT
# SMTP, чтобы почта ходила. Юзается для всего мира.
ipchains -A output -i $INT -p tcp -s $IPADDR -d $ANYWHERE 25 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $ANYWHERE 25 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 25 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 25 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT
# FTP открываем чисто для своих =)
ipchains -A output -i $INT -p tcp -s $IPADDR -d $NET 21 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $NET 21 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $NET $UNPRIVPORTS -d $IPADDR 21 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 21 -d $NET $UNPRIVPORTS -j ACCEPT
# POP3 для клиентов.
ipchains -A output -i $INT -p tcp -s $IPADDR -d $NET 110 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $NET 110 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $NET $UNPRIVPORTS -d $IPADDR 110 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 110 -d $NET $UNPRIVPORTS -j ACCEPT
# SSH открываем для своей сети.
ipchains -A output -i $INT -p tcp -s $IPADDR -d $NET 22 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $NET 22 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $NET $UNPRIVPORTS -d $IPADDR 22 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 22 -d $NET $UNPRIVPORTS -j ACCEPT
# WWW для всего мира естественно.
ipchains -A output -i $INT -p tcp -s $IPADDR -d $ANYWHERE 80 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $ANYWHERE 80 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 80 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 80 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT
# IMAP для клиентов.
ipchains -A output -i $INT -p tcp -s $IPADDR -d $NET 143 -j ACCEPT
ipchains -A input -i $INT -p tcp ! -y -s $NET 143 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p tcp -s $NET $UNPRIVPORTS -d $IPADDR 143 -j ACCEPT
ipchains -A output -i $INT -p tcp ! -y -s $IPADDR 143 -d $NET $UNPRIVPORTS -j ACCEPT
# DNS для всех.
ipchains -A output -i $INT -p udp -s $IPADDR -d $ANYWHERE 53 -j ACCEPT
ipchains -A input -i $INT -p udp -s $ANYWHERE 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p udp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 53 -j ACCEPT
ipchains -A output -i $INT -p udp -s $IPADDR 53 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT
# NTP, для своей сети, юзается для коррекции времени =))
ipchains -A output -i $INT -p udp -s $IPADDR -d $NET 113 -j ACCEPT
ipchains -A input -i $INT -p udp -s $NET 113 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $INT -p udp -s $NET $UNPRIVPORTS -d $IPADDR 113 -j ACCEPT
ipchains -A output -i $INT -p udp -s $IPADDR 113 -d $NET $UNPRIVPORTS -j ACCEPT
# разрешаем ICMP
ipchains -A input -i $INT -p icmp -d $IPADDR -j ACCEPT
ipchains -A output -i $INT -p icmp -s $IPADDR -j ACCEPT
# Остальное, что не разрешено в запретку.
ipchains -A input -i $INT -j DENY
ipchains -A output -i $INT -j DENY
ipchains -A forward -i $INT -j DENY
;;
forward)
ipchains -F
ipchains -X
ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward ACCEPT
#MASQ
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
ipchains -A forward -i lo -j ACCEPT
ipchains -A forward -j REJECT
;;
stop)
echo -n "Shutting Firewalling Services: "
ipchains -F
ipchains -X
ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward ACCEPT
;;
restart|reload)
$0 stop
$0 start
;;
*)
echo -n "Usage: ipchains {start|stop|restart|reload}"
exit 1
esac
exit 0