Как заблокировать адрес в linux

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

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

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

Как заблокировать ip с помощью iptables

1. Как заблокировать конкретный IP

Для блокирования IP адреса используются действия DROP и REJECT. Рассмотрим общий синтаксис действия по блокированию.

sudo i ptables [ -t таблица ] -A [ цепочка ] -s [ IP адрес/маска ] -d [ IP адрес/маска ] -j [ действие ]

  • -s [IP адрес/маска] — IP адрес источника пакета, к которому мы хотим применить действие;
  • -d [IP адрес/маска] — IP адрес получателя пакета, к которому мы хотим применить действие.

Например, вот это правило чтобы запретить ip iptables блокирует все входящие на защищаемую машину пакеты от узла, с IP адресом 8.8.8.8. При этом следует заметить, что узел источник пакетов при использовании действия DROP не получит никакой ответной информации от защищаемого узла. Для него всё будет выглядеть так, как будто данный узел в данный момент отсутствует в сети.

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

Есть второе действие для блокирования всех пакетов от конкретного узла или к конкретному узлу — это 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 следует использовать правило:

Читайте также:  Linux create process with name

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, позволит удаленному узлу понять, что пакет был отброшен из-за правил межсетевого экрана.

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Как разрешить или заблокировать порт и IP-адрес с помощью Firewalld, iptables и UFW в Linux

В Linux брандмауэр необходим для контроля входящего и исходящего сетевого трафика. Разрешить или заблокировать IP-адреса и порты с помощью брандмауэра очень просто. Ниже приведены команды для разрешения или блокирования IP-адресов и портов с помощью различных брандмауэров.

firewall

Firewalld

Firewalld — это инструмент управления брандмауэром в ОС Linux. Он конфигурируется с помощью XML-файлов. Мы можем использовать интерфейс командной строки firewall-cmd для настройки и управления правилами брандмауэра.

Разрешить входящий трафик порта 80. Приведенная ниже команда разрешит трафик для порта 80, до перезапуска.

sudo firewall-cmd --zone=public --add-port=80/tcp

Разрешите входящий порт 80 в брандмауэре, постянно.

sudo firewall-cmd --zone=public --permanent --add-port=80/tcp

Запретите исходящий порт номер 25. Следующая команда заблокирует все исходящие соединения с порта 25.

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp -d 127.0.0.1 --dport=25 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport=25 -j REJECT firewall-cmd --reload

Запретите входящий порт номер 80. Следующая команда запретит весь трафик для порта 80.

sudo firewall-cmd --remove-port=80/tcp --permanent

Выполните приведенную ниже команду для блокирования IP-адреса в Firewalld. Замените 173.248.192.12 на ваш IP-адрес.

sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='173.248.192.12' reject".

Откройте порт для определенного IP-адреса в Firewalld. Добавьте IP-адрес источника и порт (3306), который вы хотите открыть на локальном сервере Linux. После этого перезагрузите настройки firewalld, чтобы применить изменения.

firewall-cmd --zone=mariadb-access --add-source=173.248.192.12 --permanent firewall-cmd --zone=mariadb-access --add-port=3306/tcp --permanent firewall-cmd --reload

Iptables

Iptables использует набор таблиц, в которых есть цепочки, содержащие набор встроенных или определенных пользователем правил. Используя эти правила, мы можем фильтровать сетевой трафик на машинах Linux.

Читайте также:  Scripts for kali linux

Выполните следующую команду, чтобы разрешить все входящие соединения HTTP (порт 80).

sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Вторая команда разрешает исходящий трафик установленных HTTP-соединений, что необходимо, если политика исходящих соединений не установлена на ACCEPT.

Выполните приведенную ниже команду, чтобы разрешить несколько входящих портов. Команда ниже будет принимать трафик с портов 22, 53 и 80.

/sbin/iptables -A INPUT -p tcp --match multiport --dports 22,53,80 -j ACCEPT

Запретите входящий порт 80 с помощью IPtables. Следующая команда запретит все входящие соединения для порта 80.

/sbin/iptables -A INPUT -p tcp --dport 80 -j DROP /sbin/service iptables save

Заблокируйте IP-адрес в IPtables. Замените 173.248.192.11 на ваш IP-адрес.

sudo iptables -A INPUT -s 173.248.192.11 -j DROP

Открытие порта для определенного IP-адреса в IPtables. Разрешить входящий SSH с определенного IP-адреса или подсети.

sudo iptables -A INPUT -p tcp -s 173.248.192.11 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

UFW — Uncomplicated Firewall

UFW также известен как Uncomplicated Firewall. Он подходит для брандмауэров на основе хостов. Он поддерживает IPv4 и IPv6.

Разрешить входящий порт 80. Следующая команда разрешит весь трафик с порта 80.

Разрешить несколько входящих портов. Команда ниже разрешит входящий трафик с портов 53, 80 и 443.

Запретить входящий трафик с порта 80. Приведенная ниже команда запретит весь входящий трафик для порта 80.

Запретить исходящий порт 25. Следующая команда запретит весь исходящий трафик с порта 25.

Заблокировать IP-адрес в UFW. Вы можете заблокировать любой IP-адрес для входящего трафика на вашем компьютере.

sudo ufw deny from 173.248.192.11

Открыть порт для определенного IP-адреса в UFW. Следующая команда откроет порт 80 для указанного IP-адреса. Вы можете заменить его на свой IP-адрес.

sudo ufw allow from 173.248.192.11 to any port 80

Источник

Оцените статью
Adblock
detector