iptables как заблокировать все кроме нескольких ip

24.09.2018 0 Автор grigory

Поделиться ссылкой:

Для блокировки всех 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.