Назад | Перейти на главную страницу

Внесите в белый список разрешенные IP-адреса (входящие / исходящие) с помощью iptables

У меня есть несколько диапазонов IP-адресов, к которым я хочу, чтобы мой сервер мог подключаться, а пользователи могли подключаться. Все остальное нужно заблокировать.

Как мне сделать это с помощью iptables?

Моя ОС - это дистрибутив Linux на основе Debian.

Я бы предложил захватить инструмент настройки брандмауэра, такой Поджигатель, и оттуда. Но вот некоторые основы для вас.

#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

Это превратит вашу систему в несуществующую систему для запрещенных компьютеров.

Если вы хотите разрешить произвольные диапазоны, а не целые подсети, вы можете использовать модуль iptables iprange:

iptables -P INPUT DROP

iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT

например, разрешит трафик со всех машин с адресами от 192.168.1.30 до 192.168.1.50.

Если вы хотите разрешить входящий и исходящий трафик для одного и того же диапазона IP-адресов, я бы посоветовал вам создать конкретную цепочку, разрешающую эти IP-адреса и нацелив на нее все входящие и выходные цели:

- определить политики по умолчанию, чтобы удалить все:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

- создать новую цепочку:

iptables -N allowed_ips

- если источник находится в допустимом диапазоне, принять

iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT

- если нет, вернуться в цепочку вызывающих, чтобы продолжить обработку

iptables -A allowed_ips -j RETURN

- заставить весь трафик, входящий и выходящий из машины, проходить через нашу новую цепочку

iptables -A INPUT -j allowed_ips

iptables -A OUTPUT -j allowed_ips

и это все! конечно, вам могут понадобиться дополнительные правила, например, разрешающие весь трафик от / до интерфейса lo и т. д.

Как только вы будете довольны своими правилами, ты наверное хочешь спасти их. Комментарии в этой ссылке содержат несколько вариантов того, как это сделать.

Простой в использовании генератор правил iptables для простых нужд: ufw. Пакет доступен в нестабильной версии debian.

Также попробуйте Поджигатель. Доступен в ленни.

Вы также можете использовать ферма который я также использую в течение прошлого года и очень помог мне с такими случаями, как правила условного брандмауэра.