Безопасный
способ настройки файрволла в Debian.
Изучив вот эти
страницы, нижеописанное можно и не
смотреть
Сначала сделаем
предохранитель. Скрипт, отключающий
фильтрацию трафика:
nano ~/disable_fw.sh
#!/bin/bash
RHEL=false
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
main() {
if [ "$RHEL" == "true" ];
then
# reset firewall using redhat script
/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
else
# for all other Linux distro use following rules to reset firewall
reset_iptables ${IPT} "/proc/net/ip_tables_names"
reset_iptables ${IPT6} "/proc/net/ip6_tables_names"
fi
}
reset_iptables() {
local ipt_bin="${1}"
local tables="${2}"
$ipt_bin -P INPUT ACCEPT
$ipt_bin -P OUTPUT ACCEPT
$ipt_bin -P FORWARD ACCEPT
$ipt_bin -F
$ipt_bin -X
$ipt_bin -Z
for table in $(<$tables)
do
$ipt_bin -t $table -F
$ipt_bin -t $table -X
$ipt_bin -t $table -Z
done
}
main
Зарядим этот
скрипт в cron, чтобы вырубал нам файрволл
каждые пять минут:
nano /etc/crontab ... SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin */5 * * * * root bash /root/disable_fw.sh
Проверим, как
оно работает, создав простое правило
фильтрации и отследив, исчезнет ли оно
в течение пяти минут:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT watch -d "iptables -L --line-numbers -nv"
Теперь напишем
правила фильтрации:
nano ~/iptables.test.rules *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 55 -j DROP -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set -j ACCEPT # -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
Загрузим их в
файрволл
iptables-restore < /root/iptables.test.rules
и проверим как-нибудь.
Допустим, все
работает как надо.
Раз работает,
можно настроить загрузку правил при
старте сети (запуске машины):
iptables-save > /etc/iptables.up.rules nano /etc/network/if-pre-up.d/iptables #!/bin/sh /sbin/iptables-restore < /etc/iptables.up.rules # EOF chmod +x /etc/network/if-pre-up.d/iptables
Аналогично
для IPv6
Правила
фильтрации для IPv6:
nano ~/ip6tables.test.rules *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p ipv6-icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 55 -j DROP -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set -j ACCEPT #-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp6-adm-prohibited -A FORWARD -j REJECT --reject-with icmp6-adm-prohibited COMMIT
Загрузка для
теста
ip6tables-restore < /root/ip6tables.test.rules
и как-то проверить.
Когда готово,
обеспечить загрузку правил при запуске
сети:
ip6tables-save > /etc/ip6tables.up.rules nano /etc/network/if-pre-up.d/iptables #!/bin/sh /sbin/iptables-restore < /etc/iptables.up.rules /sbin/ip6tables-restore < /etc/ip6tables.up.rules
Финальные
проверки (перезапуск хоста, простукивание
портов, etc).
И отключение
предохранителя, закомментировав запуск
обнулятора в cron:
nano /etc/crontab ... #*/5 * * * * root bash /root/disable_fw.sh
Наслаждайтесь.
original post http://vasnake.blogspot.com/2015/01/firewall.html

Комментариев нет:
Отправить комментарий