Iptables: как разрешить только один ip через определенный порт?


25

Как я могу на моем сервере Ubuntu, в Iptables разрешить только один IP-адрес на определенный порт?

Благодарность

Ответы:


48

Один лайнер:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP  # if it's not 1.2.3.4, drop it

Более элегантное решение:

iptables -N xxx # create a new chain
iptables -A xxx --src 1.2.3.4 -j ACCEPT  # allow 1.2.3.4
iptables -A xxx --src 1.2.3.5 -j ACCEPT  # allow 1.2.3.5
iptables -A xxx --src 1.2.3.6 -j ACCEPT  # allow 1.2.3.6
iptables -A xxx -j DROP  # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx  # use chain xxx for packets coming to TCP port 777

Вы знаете, должен ли я также добавить это к ВЫХОДУ также?
Anonymous12345

@Camran: вам нужно быть более конкретным. В данном конкретном случае, если заменить INPUTс OUTPUTвами блокировать бы некоторые пакеты , отправленные несколько адресов самого (и не попадают / пересылаемые) сервер. Я сомневаюсь, что это имеет смысл, если, возможно, вы не хотите блокировать программы, которые привязываются к некоторым конкретным интерфейсам.
Кристиан Чиупиту

1
Не забывайте, что вы также можете указать свои источники в цепочке, например:--src 1.2.3.4/30
deed02392

Как я позже добавлю новый разрешенный IP в цепочку? Должен ли я сначала удалить DROP, затем ввести нового пользователя и снова вставить DROP, или есть лучшее решение?
maddo7

2
@Matthias:iptables -I xxx --src 7.8.9.10 -j ACCEPT
Кристиан Чиупиту

0

Вот пример из одной из моих систем CentOS (адреса были запутаны):

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT

на centos, где сделать эту конфигурацию постоянной? (в Ubuntu мы можем использовать /etc/network/if-up.d/anyfile)
Kokizzu

на CentOS это: service iptables save.
Мартин Цайтлер,

0

Я использую shorewall для настройки таблицы IP. Используйте правило, подобное тому, чтобы принимать от одного хоста до порта 123.

ACCEPT net: 192.0.2.1 $ FW tcp 1234

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.