Centos заблокировать ip адрес
Утилита командной строки 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 нужно перезапустить:
Читайте также: