Привет всем.
Настраиваю Iptables как учили, плюс смотрю примеры и поглядываю в ман. Вроде всё настроил верно, но хотелось бы услышать ваше мнение по одному правилу.
Шлюз с 2-умя сетевыми интерфейсами:
eth0 - Internet IP - 192.168.1.128
eth1 - Локальная сеть - 192.168.7.1
А вот скрипт для управления iptables:
Показать
#!/bin/sh
#
# iptables.rules - Запускает IP Firewall скрипт
#
# IPTables Configuration
init_file="/etc/network/if-pre-up.d/iptables"
rules_file="/etc/iptables.up.rules"
ipt="/sbin/iptables"
ipts="/sbin/iptables-save"
if [ ! -f ${init_file} ];then
cat > ${init_file} <<EOF
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules
EOF
chmod +x ${init_file}
fi
# Разрешить ПРОХОДЯЩИЕ пакеты.
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# Удаляем предыдущие правила
${ipt} -F
${ipt} -X
${ipt} -t nat -F
#
# Политики по умолчанию, которые выполняются в конце.
${ipt} -P INPUT DROP
${ipt} -P FORWARD DROP
${ipt} -P OUTPUT ACCEPT
#
# Разрешить ВХОДЯЩИЕ соединения на localhost
${ipt} -A INPUT -i lo -j ACCEPT
#
# Разрешить ВХОДЯЩИЕ - ПОРОЖДЕННЫЕ соединения на ВСЕ интерфейсы.
${ipt} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить ПРОХОДЯЩИЕ - ПОРОЖДЕННЫЕ соединения через ВНЕШНИЙ интерфейс в локальную сеть.
${ipt} -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Разрешить Ping
${ipt} -A INPUT -p icmp --icmp-type 8 -j ACCEPT
${ipt} -A INPUT -p icmp --icmp-type 11 -j ACCEPT
#
# Разрешить SSH соединения на tcp порт 22 с ЛЮБОГО IP.
${ipt} -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
#
# Разрешить ВХОДЯЩИИ соединения на определённые порты udp/tcp
# >>Internet
${ipt} -A INPUT -p tcp -i eth0 -m multiport --dport 21,113,115 -j ACCEPT # FTP, ident, SFTP
${ipt} -A INPUT -p udp -i eth0 --dport 113 -j ACCEPT # ident
# >>localNet
# >>ALL
${ipt} -A INPUT -p tcp -i eth1 -s 192.168.7.0/24 --dport 137:139 -j ACCEPT # NetBIOS
${ipt} -A INPUT -p udp -i eth1 -s 192.168.7.0/24 --dport 137:139 -j ACCEPT # NetBIOS
# >>TCP
${ipt} -A INPUT -p tcp -i eth1 -s 192.168.7.0/24 -m multiport --dport 53,80,88,389,428,443,445,631,8080,58558 -j ACCEPT # DNS, HTTP, Kerberos, LDAP, UDPinfo, HTTPS, ShareWinSmb, CUPS, Proxy, 58558
# >>UDP
${ipt} -A INPUT -p udp -i eth1 -s 192.168.7.0/24 -m multiport --dport 53,67:68,80,123,389,428,445,631,752,5353,36742,38775,47692 -j ACCEPT # DNS, DHCP, HTTP, NTP, LDAP, UDPinfo, ShareWinSmb, CUPS, 752, MDNS, 36742, 38775, 47692
${ipt} -A INPUT -p udp -i eth1 -s 192.168.7.0/24 --dport 33434:33534 -j ACCEPT # traceroute
#
# Разрешаем ПРОХОДЯЩИИ соединения из локальной сети в интернет используя SNAT
${ipt} -A FORWARD -i eth1 -o eth0 -s 192.168.7.0/24 -j ACCEPT
${ipt} -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT --to-source 192.168.1.128
#
# Сохраняем правила в автозагрузку
${ipts} > ${rules_file}
#
# Показать правила
${ipt} -v -n -L
#
1. Так как во время обучения, вроде бы я не пользовался правилом выделенным красным, поэтому оно меня немного смущает.
Хотя вроде оно и логично, но хотелось бы узнать мнения профессионалов.
2. Ещё я обратил внимание, что в некоторых примерах для этого правила добавляется ещё состояние "NEW"
Выглядит так: ${ipt} -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Почитав ман, не очень понял, нужно оно мне или нет. Без него интернет в локальной сети работает. За разъяснение буду признателен.
Благодарю,
Борис.