iptables как заблокировать все кроме нескольких ip
Поделиться ссылкой:
Для блокировки всех ip адресов кроме выбранного диапазона я использовал простой набор правил.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -s X.X.X.X -j ACCEPT
iptables -A OUTPUT -d X.X.X.X -j ACCEPT
Ниже расшифруем каждую строку для более детального понимания как это работает.
#блокируем все входящие и исходящие запросы
iptables -P INPUT DROP
iptables -P OUTPUT DROP
# Принимаем входящие с адреса X.X.X.X
iptables -A INPUT -s X.X.X.X -j ACCEPT
#Принимаем исходящие с адреса X.X.X.X
iptables -A OUTPUT -d X.X.X.X -j ACCEPT
Для разрешения доступа из подсетей можно использовать такой запрос
iptables -A INPUT -s X.X.X.X/24 -j ACCEPT
iptables -A OUTPUT -d X.X.X.X/24 -j ACCEPT
Нужный набор правил был сохранен в файле (допустим /root/ipt) Пример файла ниже.
#!/bin/bash
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -s X.X.X.X -j ACCEPT
iptables -A OUTPUT -d X.X.X.X -j ACCEPT
После выполнения данного скрипта наши правила применятся, но не будут сохранены при перезагрузке. Для сохранения при перезагрузке необходимо выполнить следующий набор действий.
iptables-save > /root/iptables
Для того что бы данный набор правил включался при перезагрузке необходимо в файл /etc/rc.d/rc.local внести дополнительную строку с восстановлением настроек.
/sbin/iptables-restore < /root/iptables
Теперь при перезагрузке у нас будет запускаться нужный нам набор правил. Данная настройка тестировалась на CentOS 7.