Веб-Мастеру

Как заблокировать ip в iptables

При работе в любой сети передачи данных, например, локальной вычислительной сети (ЛВС), сети Интернет, часто возникает необходимость ограничить доступ какого-то конкретного узла к другому узлу сети, или конкретного узла ко всем компьютерам, находящимся под вашим управлением. Каждый компьютер, использующий при обмене данными протокол IPv4 или IPv6, имеет уникальный, в определенных рамках, номер.

Этот номер называется IP адресом. Мы рассмотрим в нашей статье блокировку IP-адреса IPv4 для ограничения доступа узла с данным идентификатором к определенному компьютеру, на котором мы настраиваем правила брандмауэра Netfilter с помощью пакета iptables. В прошлых статьях мы изучили возможность

Есть второе действие для блокирования всех пакетов от конкретного узла или к конкретному узлу — это REJECT. Данное действие предусматривает при блокировании пакета отправку служебной информации источнику пакета о выполнении блокировки. То есть в данном случае узел отправитель будет уведомлен, что пакет был заблокирован Netfilter. В данном случае чтобы заблокировать ip iptables надо выполнить:

sudo iptables -t filter -A INPUT -s 8.8.8.8/32 -j REJECT

Следует отметить, что, как в случае с портами, существует возможность блокирования исходящего трафика и входящего трафика. То есть, если мы хотим заблокировать доступ конкретного узла сети к нашей машине, то мы блокируем входящий трафик:

sudo iptables -t filter -A INPUT -s 8.8.4.4/32 -j REJECT

Если же мы захотим заблокировать доступ нашего компьютера к конкретному узлу в сети, например, Интернет, то мы блокируем исходящий трафик:

sudo iptables -t filter -A OUTPUT -d 8.8.8.8/32 -j REJECT

2. Как заблокировать подсеть iptables?

Блокирование конкретного адреса это частный случай блокирования подсети. Подсеть — это строго ограниченная часть всего пространства IP адресов, используемая для адресации определенного подмножества всех компьютеров глобальной сети. Подсеть задается маской. Маска может быть задана в виде четырех, разделенных точками, чисел или в виде одного числа. Например: 255.255.255.0 — это маска посети, и /24 — маска подсети. При чем это одинаковые маски, просто записанные в разной форме.

Не будем вдаваться в значение маски, это информация для отдельной статьи. Отметим только, что все множество адресов IPv4 разбито на сети, сети имеют классы, которые задают количество адресов в сетях, и их практическое назначение. А сети, в свою очередь разбиваются на подсети, для отдельных организаций и частных лиц. И сеть, и подсеть задаются с помощью маски сети. Теперь давайте рассмотрим как забанить диапазон ip адресов iptables.

Так вот, например, если мы хотим заблокировать доступ к конкретной организации, подмножество адресов которой мы знаем, мы сделаем это с помощью известного нам адреса сети (подсети) и маски. Правило блокировки будет выглядеть следующим образом:

sudo iptables -t filter -A INPUT -s 8.0.0.0/9 -j DROP

В данном случае мы заблокировали подсеть адресов диапазона 8.0.0.0 — 8.127.255.255. Другой вариант маски будет выглядеть так:

sudo iptables -t filter -A INPUT -s 8.0.0.0/255.128.0.0 -j DROP

Стоить заметить, что всё множество адресов IPv4 разбито на подмножества по отдельным регионам мира. Поэтому существует возможность блокировать доступ отдельных регионов мира с помощью блокирования IP сетей. Ведет выдачу IP сетей и протоколирование выданных блоков адресов организация IANA. По ссылке

мы можем отследить выданные блоки и заблокировать нужные нам, как отдельные подсети. Например, это правило блокирует сеть, выданную европейскому региону:

sudo iptables -t filter -A INPUT -s 2.0.0.0/255.0.0.0 -j DROP

3. Как заблокировать IP сетевом интерфейсе?

Обычно у компьютера один физический интерфейс подключения. Но, бывают случаи, когда в защищаемом устройстве присутствуют несколько сетевых интерфейсов, подключенных к разным сетям, или к одной сети, но разными путями (протоколами, маршрутами, организациями). В таком случае часто бывает нужна блокировка ip iptables с определенного интерфейса. Правило блокирования в этом случае будет выглядеть так:

sudo iptables [-t таблица] -A INPUT -i [имя интерфейса входа] -s [IP адрес/маска] -d [IP адрес/маска] -j [действие]

Для входящего сетевого интерфейса:

sudo iptables [-t таблица] -A OUTPUT -o [имя интерфейса выхода] -s [IP адрес/маска] -d [IP адрес/маска] -j [действие]

Для исходящего сетевого интерфейса. В частном случае входящий и исходящий интерфейс один и тот же.

Например, чтобы заблокировать все пакеты от IP адреса 8.8.8.8, поступающие нам с интерфейса enp0s3, можно использовать правило:

sudo iptables -t filter -A INPUT -i enp0s3 -s 8.8.8.8/32 -j DROP

Чтобы заблокировать все пакеты, уходящие к машине с IP адресом 8.8.8.8, с нашего узла через интерфейс enp0s3 следует использовать правило:

sudo iptables -t filter -A OUTPUT -o enp0s3 -d 8.8.8.8/32 -j DROP

Как узнать доступные сетевые интерфейсы и их параметры можно в статье настройка сети из консоли в Ubuntu.

4. Как разблокировать IP адрес?

По умолчанию в межсетевом экране Netfilters используется действие ACCEPT для всех таблиц и цепочек. Поэтому, чтобы заблокировать IP адрес, необходимо добавить правило с действием DROP, что мы рассмотрели выше. Соответственно, чтобы разблокировать адрес, необходимо удалить уже установленное правило. Как удалить уже написанное правило мы рассмотрели в статье как удалить правило iptables.

Также для того, чтобы ограничить доступ к компьютеру более строго, мы можем заменить правило по умолчанию ACCEPT на правило DROP или REJECT с помощью команды

sudo iptables -t [таблица] -P [цепочка] [действие]

Например, следующая команда установит правило по умолчанию для таблицы filter цепочки INPUT действие по умолчанию -отбрасывать пакеты:

sudo iptables -t filter -P INPUT DROP

В таком случае, чтобы разблокировать IP iptables адрес, необходимо будет задать правило для данного IP адреса с действием ACCEPT:

sudo iptables -t filter -A INPUT -i enp0s3 -s 8.8.8.8/32 -j ACCEPT

Выводы

Итак, мы сегодня обсудили как заблокировать ip iptables или же целую подсеть адресов. Данная операция необходима, чтобы запретить доступ внешнего узла в сети к нашему компьютеру. Также у нас есть в арсенале два действия для таких правил — одно, DROP, заставит удаленную машину думать, что наш узел в данный момент вообще отсутствует в сети, а другое, REJECT, позволит удаленному узлу понять, что пакет был отброшен из-за правил межсетевого экрана.

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

Источник: losst.ru

Похожие записи

Загрузка ....