Блокировать пинг с определенного IP-адреса

Мой сервер - Ubuntu 12.04: -> IP 192.168.56.100 У меня есть клиент Ubuntu 13.04: -> IP 192.168.56.101

Мне нужно заблокировать пинг от клиента к серверу, поэтому я написал правило IPTABLE.

iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP

Теперь клиент не может пропинговать сервер, с этой частью все в порядке, но сервер не может пинговать с клиентом, что не должно происходить. Перед добавлением этого правила и сервер, и клиент могут пропинговать друг друга.

Пожалуйста, скажите мне, что мне здесь не хватает ...

Даны правильные ответы, но как это работает .... ??? Добавление --icmp-type echo-запроса решает проблему, но это правило добавляется в правила цепочки INPUT, так как же это правило в любом случае может связываться с цепочкой OUTPUT, поскольку оно блокирует пинг для клиента.

1
задан 9 February 2014 в 14:39

2 ответа

Как я понимаю, команда ping отправляет эхо-запрос ICMP хосту, а затем отвечает хосту эхо-ответ ICMP. Поэтому, если вы заблокируете все ICMP, ping вообще не будет работать.

Вы должны добавить это:

iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP

Это заблокирует только запрос, но не ответ

Ответ на ваш вопрос в комментариях

Это не блокирует исходящий запрос пинга. Он блокирует все входящие ICMP-пакеты.

Когда вы выполняете ping:

  1. ping отправляют пакет запроса ICMP на 192.168.56.101 (это исходящий ICMP)

  2. 192.168.56.101 принять этот пакет и отправить ответный ICMP-пакет обратно на ваш сервер

  3. Теперь ваш сервер iptables блокирует этот входящий ответный пакет. Вот что происходит.

Вы можете проверить это с помощью этой команды sudo tcpdump ip proto \\icmp на 192.168.56.101. Он покажет вам все ICMP запросы / ответы онлайн.

Сделайте это:

  1. Удалите это правило с сервера:

    iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 192.168.56.101 -j DROP

  2. Добавьте это правило в свой сервер:

    iptables -A INPUT -i eth0 -p ICMP -s 192.168.56.101 -j DROP

  3. Теперь выполните эту команду для 192.168.56.101:

    sudo tcpdump ip proto \\icmp

  4. Выполнить ping 192.168.56.101 на сервере.

Теперь вы должны увидеть на 192.168.56.101, что он получает запрос проверки связи и отправляет ответ. Но iptables на сервере блокирует этот ответ.

0
ответ дан 9 February 2014 в 14:39

Очевидно, вы не получите ответ. Ping-запрос состоит из двух частей:

  • Клиент -> Сервер: эхо-запрос ICMP (он же «ping»)
  • Сервер -> Клиент: эхо-ответ ICMP (он же pong) ")

Блокировка всех типов ICMP принесет неприятности . Если вы хотите запретить клиенту "пинговать" (отправляя запрос PING), используйте на сервере следующее правило:

-A INPUT -i eth0 -s 192.168.56.101/32 -p ICMP --icmp-type echo-request -j DROP

Чтобы клиент не отправлял Во-первых, для запроса проверки связи ICMP вы можете применить это правило к клиенту :

-A OUTPUT -o eth0 -d 192.168.56.100/32 -p ICMP --icmp-type echo-request -j DROP

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

Интересно, почему вы хотите заблокировать запросы ping в локальной сети? С ARP клиент все еще может знать, что этот сервер подключен к сети.

0
ответ дан 9 February 2014 в 14:39

Другие вопросы по тегам:

Похожие вопросы: