Centos заблокировать ip адрес

Обновлено: 04.07.2024

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

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

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

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

iptables -t <таблица> <команда> <цепочка> [номер] <условие> <действие>

<таблица>

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

<команда>

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

<цепочка>

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

firewalld - это инструмент управления брандмауэром для операционных систем Linux.

Он предоставляет функции брандмауэра, выступая в качестве интерфейса для платформы netfilter ядра Linux с помощью утилиты nftables userspace (до версии v0.6.0 iptables backend), выступая в качестве альтернативы программе командной строки nft.

Имя firewalld соответствует соглашению Unix об именовании системных демонов, добавляя букву "d". firewalld написан на Python .

Предполагалось, что он будет перенесен на C++ , но проект переноса был заброшен в январе 2015 года.

Проверить текущий статус

Чтобы проверить статус firewalld выполните

sudo systemctl status -l firewalld

● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-11-22 00:00:01 EEST; 2h 55min ago 1637554220 Docs: man:firewalld(1) Main PID: 783 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service └─783 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid Nov 22 07:12:20 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon. Nov 22 07:12:20 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon. Nov 22 07:12:20 localhost.localdomain firewalld[783]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

Firewall

Список открытых портов

8443/tcp 3389/tcp 2222/tcp

Список активных зон

public interfaces: enp0s3 enp0s8

sudo firewall-cmd --list-all

Открыть порт

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

Затем нужно перезапустить firewall

sudo firewall-cmd --reload

sudo firewall-cmd --list-ports

8443/tcp 3389/tcp 2222/tcp 19999/tcp

Если вам вдруг стало интересно - что за порт 19999 - его использует Locust

Заблокировать порт

sudo firewall-cmd --remove-port=22/tcp --permanent
sudo firewall-cmd --remove-port=53/udp --permanent
sudo firewall-cmd --reload

Разрешить сервис

Заблокировать сервис

Добавить IP в "белый" список

Чтобы добавить один IP адрес

sudo firewall-cmd --permanent --add-source=192.168.56.101

Чтобы добавить всю подсеть 255.255.255.0 выполнить

sudo firewall-cmd --permanent --add-source=192.168.2.0/24
sudo firewall-cmd --reload

Удалить IP из "белого" списка

Чтобы удалить один IP адрес

sudo firewall-cmd --permanent --remove-source=192.168.2.50
sudo firewall-cmd --reload

Чтобы удалить всю подсеть 255.255.255.0 выполнить

sudo firewall-cmd --permanent --remove-source=192.168.2.50/24
sudo firewall-cmd --reload

Заблокировать IP

Чтобы заблокировать входящие соединения с определённого IP адреса воспользуйтесь rich-rule

Посмотреть все rich-rules

Чтобы посмотреть все существующие rich-rules выполните

sudo firewall-cmd --list-rich-rules

rule family="ipv4" source address="192.168.56.109" reject

Удалить правило

Чтобы удалить существующий rich-rule выполните

Межсетевой экран в системе CentOS 7 контролируется программой iptables (для ipv4) и ip6tables (для ipv6).

С помощью утилиты iptables мы можем:

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

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

2. Установка утилит межсетевого экрана iptables-services.

Отключение встроенного по умолчанию межсетевого экрана firewalld:

Установка iptables-services взамен firewalld:

Активация iptables-services на сервере:

И проверка работы:

Ответ:


Log-файл хранится здесь: /var/log/messages .

Файл настроек хранится здесь: /etc/sysconfig/iptables .

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

3. Показать статус.

Для начала деактивируем межсетевой экран любым способом и посмотрим как будет выглядеть система с отключенным межсетевым экраном и с включённым.

Вводим команду и смотрим на отключенный межсетевой экран:

Ответ:


Вводим команду и смотрим на включенный межсетевой экран:

Ответ:


4. Отобразить список правил с номерами строк.

Теперь выведем тоже самое, но с ключом демонстрации номеров строк:

Ответ:


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

5. Отобразить INPUT или OUTPUT цепочки правил.

Чтобы посмотреть что входит в ваш сервер:

Ответ:


и выходит из вашего сервера:

Ответ:


6. Остановить, запустить, перезапустить межсетевой экран.

Можно также использовать команды iptables для того, чтобы остановить межсетевой экран и удалить все правила:

7. Удалить правила межсетевого экрана.

Чтобы отобразить номер строки с существующими правилами:

Получим список IP-адресов. Просто посмотрим на номер слева и удалим соответствующую строку.

К примеру для номера 3 :

Или найдем IP-адрес источника 202.54.1.1 и удалим из правила:

8. Добавить правило в межсетевой экран.

Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк:

Ответ:


Чтобы вставить правило между 1 и 2 строкой:

Проверим, обновилось ли правило:

Ответ:


9. Сохраняем правила межсетевого экрана.

Сохранить их можно через утилиту iptables-save :

10. Восстанавливаем правила межсетевого экрана.

Восстановить их так же можно через утилиту iptables-restore :

11. Устанавливаем политики по умолчанию.

Внимание! Если вы сделаете это на удалённой машине или виртуальной машине, то вы потеряет над ней контроль и связь оборвётся! Пропустите этот шаг, если вы работаете удалённо! Вы не вернёте контроль над сервером, пока не внесете изменения в межсетевой экран через физическую консоль сервера.

Чтобы сбрасывать весь трафик:

Ответ:


После вышеперечисленных команд ни один пакет не покинет данный хост.

Ответ:


Ответ:


12. Блокировать только входящие соединения.

Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:

Ответ:


Ответ:


Ответ:


13. Сбрасывать адреса изолированных сетей в публичной сети.

Список IP-адресов для изолированных сетей:

14. Заблокировать входящие запросы порта.

Чтобы заблокировать все входящие запросы порта 80:

Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4 :

15. Заблокировать запросы на исходящий IP адрес.

Чтобы заблокировать определенный домен, узнаем его адрес:

Ответ:


Найдем CIDR для 157.240.205.35 :

Ответ:


Заблокируем доступ на 157.240.205.35/16 :

Также можно использовать домен для блокировки:

Ответ:


Как видно, ресурс заблокирован!

16. Заблокировать соединение.

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

Посмотрим какие сетевые интерфейсы у нас имеются на сервере:

Ответ:


Запрограммируем межсетевой экран не принимать от 192.168.0.39 соединения на сетевом интерфейсе eth0 .

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

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

Ответ:


Ответ:


Как видно 192.168.0.15 категорически отказывается принимать какие-либо сигналы с 192.168.0.39 .

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

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

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

Действие настроек аналогично примеру выше, но уже для всего диапазона IP-адресов.

17. Разрешить или запретить ICMP Ping запросы.

17.1. Чтобы запретить ping :

17.2. Разрешить для определенных сетей / хостов:

17.3. Разрешить только часть ICMP запросов:

Примечание! Предполагается, что политики по умолчанию для входящих установлены в DROP .

Примечание! Разрешим отвечать на запрос.

18. Открыть диапазон портов.

19. Открыть диапазон адресов.

19.1. Разрешить подключение к порту 80 , если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 .

19.2. Пример для nat .

20. Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP , чтобы заблокировать порт.

20.1. Ssh tcp port 22.

20.2. Cups (printing service) udp/tcp port 631 для локальной сети.

20.3. Time sync via NTP для локальной сети (udp port 123).

20.4. Tcp port 25 (smtp).

20.5. DNS server ports.

20.7. Tcp port 110 (pop3).

20.8. Tcp port 143 (imap).

20.9. Samba file server для локальной сети.

20.10. Proxy server для локальной сети.

20.11. Mysql server для локальной сети.

20.12. Основные настройки iptables для web-сервера.

Запретим все входящие соединения:

Разрешим все исходящие соединения:

Разрешить входящие соединения с localhost:

Разрешить входящие соединения, которые уже были установлены:

Блокировать все нулевые пакеты:

Блокировать все пакеты XMAS:

Защищаемся от syn-flood:

Откроем порт 22, чтобы была возможность подключаться к серверу по SSH

20.13. Почта, порты для служб.

Открываем порты 25 и 465 для smtp-трафика:

Открываем порты 110 и 995 для pop-трафика:

Открываем порты 143 и 993 для imap-трафика:

21. Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется connlimit модуль.

Чтобы разрешить только 3 ssh соединения на одного клиента:

22. Помощь по iptables.

Для поиска помощи по iptables, воспользуемся man :

Чтобы посмотреть помощь по определенным командам и целям:

23. Проверка правила iptables.

Проверяем открытость / закрытость портов:

Ответ:


Проверяем открытость / закрытость определенного порта:

Ответ:


Проверим, что iptables разрешает соединение с 80 портом:

Ответ:


Если всё закрыто, то никакого ответа не будет.

В противном случае откроем его для всех:

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

Читайте также: