Белый список разрешенных IP-адресов (вход / выход) с использованием iptables

21

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

Как я должен сделать это с iptables?

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

Фрэнк Баннистер
источник

Ответы:

27

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

#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
Zenham
источник
3
Вы знаете, что можете отформатировать свой код в сообщениях об ошибках сервера, используя кнопку 101010. Таким образом, ваши комментарии не будут кричать. Просто выберите (перетащите курсор мыши) код и затем нажмите кнопку 101010 над текстовым полем.
Джейсон Тан
2
Аааа, спасибо, я этого не осознавал. Теперь я знаю :)
Zenham
1
+1 за СУЩЕСТВУЮЩИЙ, СВЯЗАННЫЙ - слишком много людей не делают этого.
Альнитак,
1
Ради любви к Богу, пожалуйста, установите правило DROP по умолчанию LAST! Я заблокировал себя (и все остальное!) Из машины, следуя этому порядку операций.
Бендо
1
Грозный ответ. ОП ничего не говорит об удалении всех текущих соединений. Теперь я заблокирован, потому что предположил, что верхний ответ имеет смысл.
omikes
14
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

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

Кевин М
источник
7

Если вы хотите разрешить произвольные диапазоны, а не целые подсети, вы можете использовать модуль 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 и т. д.

Thiagodrv
источник
1

Если вы довольны своими правилами, вы, вероятно, захотите их сохранить . Комментарии в этой ссылке имеют несколько вариантов, как это сделать.

Простой в использовании генератор правил iptables для простых нужд - это UFW . Пакет доступен в нестабильной версии Debian.

Также попробуйте Firestarter . Доступно в Ленни.

Не сейчас
источник
0

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

giomanda
источник