Linux iptables запретить доступ

linux-notes.org

Как заблокировать IP адрес с помощью iptables на Linux

Я установил и запустил CentOS на моем сервере , и я часто нахожу , что мой сервер подвергается нападению другими компьютерами. Грубая сила SSH атаки, сканирование портов , сканирование вирусов и так далее. В этой теме я расскажу и покажу вам на готовом примере, как можно блокировать IP -адрес на сервере Linux с помощью IPTables .

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

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

Пример. Я хочу заблокировать входящий запрос от некоторого IP, предположим 192.168.244.134 , то нужно войти как root и ввести следующую команду:

Где ,
— I: Вставка цепи в верхней части правил .
— s: Матч IP -адрес источника .
— j : Перейти к указанным целевым цепям , если пакету соответствует текущее правило .

Чтобы отбрасывать пакеты , приходящие на интерфейс eth0 с 192.168.244.134 , введите следующую команду:

Иногда, стоит заблокировать IP следующим образом:

  • -A: Добавляет правило в таблицу INPUT(входящие пакеты) для IP указанного ИП и выполнет действие REJECT(полностью отбрасывать пакеты не показывая признаков жизни даже по пингу).
  • — s: Матч IP -адрес источника .
  • — j : Перейти к указанным целевым цепям , если пакету соответствует текущее правило .

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

Используйте следующий синтаксис для блокирования 10.0.0.0 /8:

Как сохранить заблокированный IP -адрес ?

Чтобы сохранить заблокированный IP -адрес для Iptables в файл конфигурации , введите следующую команду:

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

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

Чтобы разблокировать 192.168.244.134 необходимо удалить номер строки 1, для этого введите:

Тема «Как заблокировать IP адрес с помощью iptables на Linux» окончена.

11 thoughts on “ Как заблокировать IP адрес с помощью iptables на Linux ”

Разблокировать IP адрес, помогите как!

В чем собственно проблема, тогда смогу помочь?

Коллеги помогите советом, я не большой специалист в iptables поэтому нужна ваша помощь.
Ситуация следующая, есть софт работающий на CentOS 6.6 который периодически отправляет информацию на различные ip компании изготовителя. Адресов много и они периодически меняются, закрыть по ip не вариант. Нужно заткнуть этот фонтан. Но оставить возможность пользователям работать и удаленно подключаться.
Те надо прибить весь трафик с хоста, который инициирован самим хостом. Но разрешить исходящий трафик для пользователей, те типа reflexive acl если пользоваться терминами cisco.

Так закрой все соединения на входящий трафик, только разреши доступ с определенных IP (можно указать маску для IP-шников). И разреши все исходящие соединения. Так же, можно сделать подключения не по логину\паролю, а по ключу. Нужно больше информации о твоей задачи.

Доброго времени суток!
Прошу сильно не пинайте, только начинаю разбираться с iptables…

Но тоже проблема, на Mandriva стоит VBox, на Боксе поднят почтовый сервер на Win2008 сервер H-Mail ip 192.185.0.55

Постоянно пытаются ломать. ( IP разные, уже целый список)
—————————————————————
3949 15:03:16.618245 vnesh_IP 180.166.46.151 SMTP S: 535 Authentication failed. Too many invalid logon attempts.
—————————————————————
делаю так iptables -I INPUT -s 180.166.46.151 -j DROP

IP может меняться и по этому может не блокироваться, можно попробовать вот так сделать (для некоторой подсети):

Но мой совет для этой задачи — это использовать Fail2Ban. Я очень подробно рассказывал что и как в своей статье ( Но это для Unix/Linux ОС):
http://linux-notes.org/ustanovka-fail2ban/

Уверен, что она поможет со взломом почтового сервера и не только…

Понял спасибо.
А если такое правило:

Здравствуйте. Хочу заблокировать ВСЕ айпи Китая. Прямо все, без исключений. Как это можно реализовать?

Смотря для каких целей ( если для web-сервера — можно установить и использовать GeoIP и забанить сразу целую страну). Если просто заблокировать страну с IPtables, то вот список IP адресов и для примера я взял China (ПРИМИТЕ ВО ВНИМАНИЕ, что IPtables тормозит при обработке большого количества правил. Мой совет — использовать IPset, я рассказывал на своем сайте как он работает):

Читайте также:  Ноутбук при выключении снова включается windows 10

Здравствуйте! Может кто нибудь сможет ответить, как можно разрешить подключение на внешний интерфейс freepbx15 etc1 только с 1 Ip адреса(остальное всё запретить), и разрешить все подключения для внутреннего интерфейса etc0. И как понять, что используется в приоритете, фаерволл freepb или fail2ban, потому что когда запрещаю правила в iptables, то подключения всё равно проходят.

Здравствуйте
можно ли в айпитеблсе ограничить доступ к интернету кроме белого списка айпи?

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Как заблокировать 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.

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

Читайте также:  Восстановить загрузчик для windows 10

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

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

Источник

Настройка netfilter с помощью iptables

Утилита командной строки iptables используется для настройки брандмауэра netfilter, встроенного в систему на базе ядра Linux.

Данная инструкция подходит как для чайников, которые хотят разбираться в аспектах защиты сети, так и опытных специалистов в качестве шпаргалки.

Принцип настройки

Общий синтаксис использования iptables:

iptables -t [номер]

Правила netfilter распределены по 4-м таблицам, каждая из которых имеет свое назначение (подробнее ниже). Она указывается ключом -t, но если данный параметр не указан, действие будет выполняться для таблицы по умолчанию — filter.

Команды указывают, какое именно действие мы совершаем над netfilter, например, создаем или удаляем правило.

Читайте также:  Убрать проверку обновлений windows

В каждой таблице есть цепочки, для каждой из которых создаются сами правила. Например, для вышеупомянутой таблицы filter есть три предопределенные цепочки — INPUT (входящие пакеты), OUTPUT (исходящие) и FORWARD (транзитные).

[номер]

Некоторые команды требуют указания номера правила, например, на удаление или редактирование.

Условие описывает критерии отработки того или иного правила.

Ну и, собственно, что делаем с пакетом, если он подходит под критерии условия.

* справедливости ради, стоит отметить, что ключ с действием не обязан идти в конце. Просто данный формат чаще всего встречается в инструкциях и упрощает чтение правил.

Ключи iptables и примеры их использования

Для работы с таблицами (iptables -t)

Напоминаю, все правила в netfilter распределены по таблицам. Чтобы работать с конкретной таблицей, необходимо использовать ключ -t.

Ключ Описание
-t filter Таблица по умолчанию. С ней работаем, если упускаем ключ -t. Встроены три цепочки — INPUT (входящие), OUTPUT (исходящие) и FORWARD (проходящие пакеты)
-t nat Для пакетов, устанавливающий новое соединение. По умолчанию, встроены три цепочки — PREROUTING (изменение входящих), OUTPUT (изменение локальных пакетов перед отправкой) и POSTROUTING (изменение всех исходящих).
-t mangle Для изменения пакетов. Цепочки — INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING.
-t raw Для создания исключений в слежении за соединениями. Цепочки: PREROUTING, OUTPUT.

Команды

Нижеперечисленные ключи определяют действия, которые выполняет утилита iptables.

Ключ Описание и примеры
-A Добавление правила в конец списка:
iptables -A INPUT -s 192.168.0.15 -j DROP
запретить входящие с 192.168.0.15.
-D Удаление правила:
iptables -D INPUT 10
удалить правило в цепочке INPUT с номером 10.
-I Вставка правила в определенную часть списка:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
вставить правило 5-м по списку.
-R Замена правила.
iptables -R OUTPUT 5 -s 192.168.0.15 -j ACCEPT
заменить наше 5-е правило с запрещающего на разрешающее.
-F Сброс правил в цепочке.
iptables -F INPUT
-Z Обнуление статистики.
iptables -Z INPUT
-N Создание цепочки.
iptables -N CHAINNEW
-X Удаление цепочки.
iptables -X CHAINNEW
-P Определение правила по умолчанию.
iptables -P INPUT DROP
-E Переименовывание цепочки.
iptables -E CHAINNEW CHAINOLD

Условия

Данные ключи определяют условия правила.

Ключ Описание и примеры
-p Сетевой протокол. Допустимые варианты — TCP, UDP, ICMP или ALL.
iptables -A INPUT -p tcp -j ACCEPT
разрешить все входящие tcp-соединения.
-s Адрес источника — имя хоста, IP-адрес или подсеть в нотации CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
запретить входящие с узла 192.168.0.50
-d Адрес назначения. Принцип использования аналогичен предыдущему ключу -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
запретить исходящие на узел 192.168.0.50
-i Сетевой адаптер, через который приходят пакеты (INPUT).
iptables -A INPUT -i eth2 -j DROP
запретить входящие для Ethernet-интерфейса eth2.
-o Сетевой адаптер, с которого уходят пакеты (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPT
разрешить исходящие с Ethernet-интерфейса eth3.
—dport Порт назначения.
iptables -A INPUT -p tcp —dport 80 -j ACCEPT
разрешить входящие на порт 80.
—sport Порт источника.
iptables -A INPUT -p tcp —sport 1023 -j DROP
запретить входящие с порта 1023.

Перечисленные ключи также поддерживают конструкцию с использованием знака !. Он инвертирует условие, например,
iptables -A INPUT -s ! 192.168.0.50 -j DROP
запретит соединение всем хостам, кроме 192.168.0.50.

Действия

Действия, которые будут выполняться над пакетом, подходящим под критерии условия. Для каждой таблицы есть свой набор допустимых действий. Указываются с использованием ключа -j.

Таблица Действие Описание
filter ACCEPT Разрешает пакет.
DROP Запрещает пакет.
REJECT Запрещает с отправкой сообщения источнику.
nat MASQUERADE Для исходящих пакетов заменяет IP-адрес источника на адрес интерфейса, с которого уходит пакет.
SNAT Аналогично MASQUERADE, но с указанием конкретного сетевого интерфейса, чей адрес будет использоваться для подмены.
DNAT Подмена адреса для входящих пакетов.
REDIRECT Перенаправляет запрос на другой порт той же самой системы.
mangle TOS Видоизменение поля TOS (приоритезация трафика).
DSCP Изменение DSCP (тоже приоритезация трафика).
TTL Изменение TTL (время жизни пакета).
HL Аналогично TTL, но для IPv6.
MARK Маркировка пакета. Используется для последующей фильтрации или шейпинга.
CONNMARK Маркировка соединения.
TCPMSS Изменение значения MTU.

Примеры часто используемых команд iptables

Общие команды

Просмотр правил с их номерами:

iptables -L —line-numbers

Для каждой таблицы смотреть правила нужно отдельно:

Источник

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