У меня есть несколько диапазонов 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.
Также попробуйте Поджигатель. Доступен в ленни.
Вы также можете использовать ферма который я также использую в течение прошлого года и очень помог мне с такими случаями, как правила условного брандмауэра.