#!/bin/sh#################################### Задаем некоторые переменные:
IPTABLES="/usr/sbin/iptables" # Переменная, задающая путь к файлу запуска iptables
####################################
start_fw()
{
# Включить перенаправление пакетов через ядро
echo 1 > /proc/sys/net/ipv4/ip_forward
#
$IPTABLES -P OUTPUT DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
# ================ Таблица 'фильтр', автоматические правила
# принимать устанвленные сессии
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# ================ Таблица 'фильтр', политика набора правил
#
# Правило 0 (eth0)
# правила антиспуфинга
$IPTABLES -N In_RULE_0
$IPTABLES -A INPUT -i eth0 -s 192.168.1.2 -m state --state NEW -j In_RULE_0
$IPTABLES -A FORWARD -i eth0 -s 192.168.1.2 -m state --state NEW -j In_RULE_0
$IPTABLES -A In_RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- DENY "
$IPTABLES -A In_RULE_0 -j DROP
#
# Правило 1 (lo)
#
$IPTABLES -A INPUT -i lo -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -o lo -m state --state NEW -j ACCEPT
#
# Правило 2 (для всех)
#
# SSH доступ к хосту; полезно для ICMP
# ping запросов
$IPTABLES -N Cid4148X2782.0
$IPTABLES -A OUTPUT -d 192.168.1.2 -m state --state NEW -j Cid4148X2782.0
$IPTABLES -A Cid4148X2782.0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p icmp -m icmp --icmp-type 0/0 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p icmp -m icmp --icmp-type 8/0 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p icmp -m icmp --icmp-type 11/0 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p icmp -m icmp --icmp-type 11/1 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p tcp -m tcp -m multiport --dports 445,113,139,22 -j ACCEPT
$IPTABLES -A Cid4148X2782.0 -p udp -m udp -m multiport --dports 138,137 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp --icmp-type 3 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp --icmp-type 0/0 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp --icmp-type 11/0 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp --icmp-type 11/1 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 445,113,139,22 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p udp -m udp -m multiport --dports 138,137 -m state --state NEW -j ACCEPT
#
# Правило 3 (для всех)
#
$IPTABLES -A INPUT -s 192.168.1.2 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT
#
# Правило 4 (для всех)
#
$IPTABLES -N RULE_4
$IPTABLES -A OUTPUT -m state --state NEW -j RULE_4
$IPTABLES -A INPUT -m state --state NEW -j RULE_4
$IPTABLES -A FORWARD -m state --state NEW -j RULE_4
$IPTABLES -A RULE_4 -j LOG --log-level info --log-prefix "RULE 4 -- DENY "
$IPTABLES -A RULE_4 -j DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
#############################################
}
case "$1" in
start) echo -n "Starting firewall: iptables"
start_fw
echo "."
;;
stop) echo -n "Stopping firewall: iptables"
iptables -F
iptables -X
echo "."
;;
save) echo -n "Saving firewall: iptables"
iptables-save > /etc/rules-save
echo "."
;;
restart) echo -n "Restarting firewall: iptables"
iptables -F
iptables -X
cat /etc/rules-save | iptables-restore
echo "."
;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
echo "."
;;
*) echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
exit 1
;;
esac
exit 0