Bash-скрипт для iptables

Нашёл свой давний bash-скрипт для iptables, мало ли кому-нибудь пригодится:

#!/bin/sh

IPT="/sbin/iptables"

#политики по-умолчанию для цепочек, применяемые к пакетам, не попавшим под действие правил.
${IPT} -P INPUT ACCEPT
${IPT} -P OUTPUT ACCEPT
${IPT} -P FORWARD ACCEPT

#сброс всех цепочек (таблиц)
${IPT} -F INPUT
${IPT} -F OUTPUT
${IPT} -F FORWARD
${IPT} -t nat -F POSTROUTING
${IPT} -t nat -F PREROUTING

#с интерфейса lo пакеты считаются принятыми.
${IPT} -A INPUT -i lo -j ACCEPT

#если destination-address из 127.0.0.0/8, выполняется REJECT
${IPT} -A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable

#разрешать доступ, если соединение установлено
${IPT} -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
${IPT} -A OUTPUT -j ACCEPT

#ssh
${IPT} -A INPUT -s 10.10.0.0/16 -p tcp -m tcp --dport 22 -j ACCEPT

#icmp
${IPT}  -A INPUT -s 10.10.0.0/16 -p icmp -m icmp --icmp-type 8 -j ACCEPT
${IPT}  -A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT  --reject-with  icmp-host-unreachable

#ftp
${IPT} -A INPUT -s 10.10.0.0/16 -p tcp -m tcp --dport 21 -j ACCEPT
${IPT} -A INPUT -s 10.10.0.0/16 -p tcp -m tcp --dport 50386:50394 -j ACCEPT

#www (для теста из lan)
#${IPT} -A INPUT -s 0.0.0.0/0  -p tcp -m tcp --dport 80 -j ACCEPT
${IPT} -A INPUT -s 10.10.0.0/16 -p tcp -m tcp --dport 80 -j ACCEPT

#Если пакет ни в одну из цепочек выше не попал – выполняется REJECT.
${IPT} -A INPUT -j REJECT --reject-with icmp-port-unreachable
${IPT} -A FORWARD -j REJECT --reject-with icmp-port-unreachable
Поделиться
Отправить
14 октября   Рабочие моменты
Популярное