Безопасный
способ настройки файрволла в 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
Комментариев нет:
Отправить комментарий