На linux-сервере / маршрутизаторе я хочу заблокировать порт 80 только для одного IP (пример: 1.2.3.4). Мне дали этот пример:

### Block Incoming Port Requests (BLOCK PORT)
# To block port 80 only for an ip address 1.2.3.4, enter:
$ iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
$ iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

Я предполагаю, что нужна только первая строка. Я не понимаю, что делает эта строка:

$ iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

2 ответа2

0

Сначала вам следует обратиться к странице справочника команды, если вы не понимаете, почему / как она работает. От man iptables:

[!] -p, --protocol протокол

Протокол правила или пакета для проверки. Указанный протокол может быть одним из tcp, udp, udplite, icmp, esp, ah, sctp или специальным ключевым словом "all", или может быть числовым значением, представляющим один из этих протоколов или другой. Имя протокола из /etc /protocol также разрешено. А!msgstr "аргумент перед протоколом инвертирует тест. Число ноль эквивалентно всем. "all" будет соответствовать всем протоколам и будет использоваться по умолчанию, если эта опция не указана.

[!] -s, --source address [/mask] [, ...]

Спецификация источника. Адрес может быть сетевым именем, именем хоста, сетевым IP-адресом (с /mask) или обычным IP-адресом. Имена хостов будут разрешены только один раз, прежде чем правило будет отправлено в ядро. Обратите внимание, что указание любого имени для разрешения с помощью удаленного запроса, такого как DNS, является действительно плохой идеей. Маска может быть либо маской сети, либо простым числом, указывающим количество единиц в левой части маски сети. Таким образом, маска 24 эквивалентна 255.255.255.0. А!msgstr "аргумент перед спецификацией адреса инвертирует смысл адреса. Флаг --src является псевдонимом для этой опции. Можно указать несколько адресов, но это расширится до нескольких правил (при добавлении с -A) или приведет к удалению нескольких правил (с -D).

-j, --jump target

Это указывает цель правила; что делать, если пакет соответствует ему. Целью может быть определенная пользователем цепочка (отличная от той, в которой содержится это правило), одна из специальных встроенных целей, которые немедленно решают судьбу пакета, или расширение (см. Ниже ДОПОЛНЕНИЯ). Если эта опция опущена в правиле (и -g не используется), то совпадение с правилом не повлияет на судьбу пакета, но счетчики в правиле будут увеличены.

[!] -i, - в имени интерфейса

Имя интерфейса, через который был получен пакет (только для пакетов, входящих в цепочки INPUT, FORWARD и PREROUTING). Когда "!"аргумент используется перед именем интерфейса, смысл инвертирован. Если имя интерфейса заканчивается на «+», то любой интерфейс, начинающийся с этого имени, будет совпадать. Если эта опция не указана, любое имя интерфейса будет совпадать.

ТСР

Эти расширения могут использоваться, если указан `--protocol tcp '. Он предоставляет следующие возможности: [..]

[!] --destination-port, - dport port [: port]

Порт назначения или спецификация диапазона портов. Флаг --dport является удобным псевдонимом для этой опции. [..]

Поэтому команда iptables, о которой вы спрашиваете о прочтении: TCP-пакеты drop (-j DROP) (-p tcp) с IP-адресов 192.168.1.0-192.168.1.255 (-s 192.168.1.0/24) направлены на порт 80 (--dport 80) на этом хосте (-A INPUT) и входит на интерфейс eth1 (-i eth1).'

Обратите внимание, что, если флаг -t не указан, подразумевается -t filter (это также упоминается в руководстве).

Обновление (на основе комментария от ОП):
Приведенная выше строка iptables не имеет ничего общего с пакетами, поступающими с IP-адреса 1.2.3.4, и, вероятно, должна быть пропущена, если серверу / маршрутизатору не нужно блокировать пакеты, исходящие из подсети 192.168.1.0/24.

0

Чтобы заблокировать IP-адрес злоумышленника под названием 1.2.3.4, введите только:

$ iptables -A INPUT -s 1.2.3.4 -j DROP 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .