- 📑 Блокирование ip адреса при помощи iptables
- Как заблокировать ip на UBUNTU 16.04/18.04/20.04 LTS & etc через iptables
- Примеры действий iptables
- Таблицы iptables
- Варианты таблиц iptables:
- Cинтаксис запуска iptables
- Перечень основных действий iptables
- Дополнительные параметры iptables
- Как показать текущие правила iptables?
- Как сбросить все правила iptables?
- Правила iptables «по умолчанию»
- Как заблокировать ip или ip подесть в iptables?
- Как разблокировать ip или ip подесть в iptables?
- Схема движения пакетов по цепочкам в различных таблицах iptables
- Сохранение правила Iptables
- Официальный мануал по iptables
- Полезные команды iptables
- Сброс всех правил iptables при помощи cron
- Сбросить счетчики iptables
- Как в одном правиле iptables добавить сразу несколько (диапазон) портов
- Рубрики
- Как заблокировать IP адрес с помощью iptables на Linux
- Как заблокировать IP адрес с помощью iptables на Linux
- Как заблокировать IP -адрес ?
- Как заблокировать подсеть ?
- Как сохранить заблокированный IP -адрес ?
- Как разблокировать IP- адрес?
📑 Блокирование ip адреса при помощи iptables
Достаточно часто при работе с VDS возникает необходимость заблокировать особо надоедливые IP адреса. Для портов HTTP можно конечно использовать плагины CMS, настройки .htacess или nginx.conf. Но есть еще порты SSH сервера, почтового сервера и т.п.
Лучше всего, с наименьшими затратами, блокировать ip адреса при помощи iptables (для ipv4). Iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) Netfilter для ядер Linux, начиная с версии 2.4.
Существенно облегчает жизнь использование fail2ban. Но иногда нужно просто забанить какой то ip-шник без всяких правил и ко всему серверу.
Самый простой и эффективный способ заблокировать ip:
sudo iptables -A INPUT -s XXX.XXX.XXX.XXX -j DROP
Этой командой добавляется правило блокирующее с ip адреса XXX.XXX.XXX.XXX все входящие запросы к серверу.
Вместо DROP можно поставить REJECT. Насчет целесообразности использования того или другого можно услышать диаметрально противоположные мнения.
DROP — просто закрывает соединение и не отправляет ничего в ответ. Соединение потом убивается по таймауту, время которого при желании можно сократить. В итоге при множестве запросов мы не посылаем ничего в ответ. Однако при сканировании закрытых портов, они будут помечаться как filtered, что говорит, что что-то всё-таки слушает порт.
REJECT — сбрасывает соединение и отправляет в ответ сообщение, указанное в опции —reject-with. По умолчанию отправляется host is unreachable. При множестве запросов — множество ответов, но при сканировании порты будут unreachable. Ресурсов сервера будет потребляться больше.
Посмотреть все правила можно командой:
sudo iptables -n -L -v --line-numbers
- -L : Показать список правил.
- -v : Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы ‘K’, ‘M’ or ‘G’.
- -n : Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).
- —line-numbers: Нумерация правил.
На экране получим нечто подобное:
Chain INPUT (policy ACCEPT 6796 packets, 3406K bytes) num pkts bytes target prot opt in out source destination 1 926 46804 DROP all -- * * XXX.XXX.XXX.XXX 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 6697 packets, 4944K bytes) num pkts bytes target prot opt in out source destination
Разблокировать строку можно по номеру правила:
или указав правило полностью:
sudo iptables -D INPUT -s XXX.XXX.XXX.XXX -j DROP
Настроенные блокировки ip будут действовать до следующей перезагрузки системы. Чтобы они восстанавливались при последующих загрузках системы, можно использовать разные методы.
Один из самых простых – установить пакет iptables-persistent, с помощью которого можно будет сохранять создаваемые правила в отдельные конфигурационные файлы, которые в свою очередь будут автоматически загружаться после перезагрузки системы.
sudo apt-get install iptables-persistent
Для сохранения правил нужно набрать:
sudo service iptables-persistent save
Как заблокировать ip на UBUNTU 16.04/18.04/20.04 LTS & etc через iptables
Input — обрабатываются входящие подключения вроде подключения по протоколу SSH или при отправке на веб-сайт каких-либо файлов.
Forward — цепочка формируется при активации проходящего соединения, когда информация предназначена «третьему» компьютеру, а текущий сервер выполняет роль маршрутизатора.
Output — исходящие пакеты данных, например, при запуске какого-либо сайта в браузере или при проверке скорости соединения и доступности PING.
В реальной работе сервера постоянно формируется минимум два вида пакетов – Input и Output. Т.к. на каждый запрос пользователя сервер обязан дать ответ (сначала о поступлении данных на сервер, а затем и о результате обработки) или отклонить вредоносный запрос. Если «принято решение» отказать в доступе, об этом также сообщается пользователю (REJECT). Иначе запрос зависнет, и пользователь будет видеть пустой экран (DROP).
Примеры действий iptables
- ACCEPT – пропустить пакет данных далее по цепочке;
- DROP – полностью удалить пакет;
- REJECT – отклонить запрос и направить пользователю ответ с информацией об этом;
- LOG – инициируется запись в лог-файл об обработанном пакете;
- QUEUE – отправка данных на компьютер пользователя.
Правила проверки устанавливаются в зависимости от характера соединения. Возможен мониторинг IP-адреса, порта подключения, отправителя, заголовка. Если пакет не проходит хотя бы по одному критерию, осуществляется действие ACCEPT (сквозное пропускание пакета, который не требуется блокировать файрволом). Фильтрация возможна на двух этапах:
- prerouting – система только получила пакет, и нет команды «что с ним делать»: обрабатывать на сервере, возвращать пользователю или пропускать насквозь;
- postroutnig – обработка после оценки «пункта назначения».
Таблицы iptables
Существует еще один «уровень» обработки – это таблицы, содержащие правила обработки тех или иных действий над пакетами. Например, фильтрация данных в Iptables осуществляется в таблице filter.
Варианты таблиц iptables:
- raw – предназначен для работы с «сырыми» данными, еще не прошедшими обработку;
- mangle – используется для модификации пакетов;
- nat – обеспечивает работу сервера в качестве маршрутизатора;
- filter – основная таблица, используемая «по умолчанию».
Cинтаксис запуска iptables
iptables -t таблица действие цепочка дополнительные_параметры
Перечень основных действий iptables
- -A – добавить правило в цепочку;
- -C – проверить применяемые правила;
- -D – удалить текущее правило;
- -I – вставить правило с указанным номером;
- -L – вывести правила текущей цепочки;
- -S – вывести все активные правила;
- -F – очистить все правила;
- -N – создать цепочку;
- -X – удалить цепочку;
- -P – установить действие «по умолчанию».
Дополнительные параметры iptables
- -p – вручную установить протокол (TCP, UDP, UDPLITE, ICMP, ICMPv6, ESP, AH, SCTP, MH);
- -s – указать статичный IP-адрес оборудования, откуда отправляется пакет данных (ip-источник);
- -d – установить IP получателя;
- -i – настроить входной сетевой интерфейс;
- -o – то же самое в отношении исходящего интерфейса;
- -j – выбрать действие при подтверждении правила.
Как показать текущие правила iptables?
iptables -L iptables -L INPUT iptables -L INPUT -n -v iptables -L --line-numbers
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 123.123.123.101 anywhere 2 REJECT all -- 123.123.123.102 anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
Как сбросить все правила iptables?
sudo iptables -F sudo iptables -F Input
Правила iptables «по умолчанию»
Разрешаем все цепочки INPUT и OUTPUT, запрещаем FORWARD.
sudo iptables -p INPUT ACCEPT sudo iptables -p OUTPUT ACCEPT sudo iptables -p FORWARD DROP
Как заблокировать ip или ip подесть в iptables?
sudo iptables -t filter -A INPUT -s 123.456.789.101 -j DROP или sudo iptables -t filter -A INPUT -s 123.456.789.101/32 -j DROP
Как разблокировать ip или ip подесть в iptables?
sudo iptables -t filter -D INPUT -s 123.456.789.101 -j DROP или sudo iptables -t filter -D INPUT -s 123.456.789.101/32 -j DROP
Схема движения пакетов по цепочкам в различных таблицах iptables
Сохранение правила Iptables
В Ubuntu 16.04-20.04 процесс требует ввода команды:
sudo /sbin/iptables-save > /dir/filename
Официальный мануал по iptables
Полезные команды iptables
Сброс всех правил iptables при помощи cron
В момент настройки вы можете случайно допустить ошибку и создать правило, которое заблокирует сервер и все возможности подключиться к нему, включая доступ по ssh.
Открываем таблицу заданий cron:
Вписываем следующее правило:
#каждые 30 минут очищаем все правила iptables и делаем действием по умолчанию для всех цепочек ACCEPT */30 * * * * sleep 1 && /sbin/iptables -P INPUT ACCEPT > /dev/null 2>&1 */30 * * * * sleep 2 && /sbin/iptables -P OUTPUT ACCEPT > /dev/null 2>&1 */30 * * * * sleep 3 && /sbin/iptables -P FORWARD ACCEPT > /dev/null 2>&1 */30 * * * * sleep 4 && /sbin/iptables -F > /dev/null 2>&1
Теперь в случае ошибки сервер каждые 30 минут будет сбрасывать все настройки iptables. После настройки не забываем удалить данное правило и проверить сохранность всех внесенных изменений!
Сбросить счетчики iptables
В iptables для каждой цепочки и каждого правила есть два счетчика — счетчик обработанных пакетов и счетчик пропущенного / заблокированного трафика. Их можно посмотреть командой:
Иногда вам потребоваться их обнулить, это делается следующей командой:
Как в одном правиле iptables добавить сразу несколько (диапазон) портов
Для этого используем следующее выражение
*********************** #При помощи следующей команды смотрим номер правила, которое нам здесь необходимо удалить: iptables -L INPUT --line-number #Запомним номер и удалим правило под номером 2 iptables -D INPUT 2 *********************** ############## дополнительно #Отклоняем все подключения на порт 80 и 443 порт сервера c ip# 37.120.136.252: iptables -A INPUT -p tcp -s 37.120.136.252 -m multiport --dports 80,443 -j REJECT #Блокируем без ответа все подключения на порт 80 и 443 сервера c ip# 37.120.136.252: iptables -A INPUT -p tcp -s 37.120.136.252 -m multiport --dports 80,443 -j DROP
Рубрики
При заказе по этой ссылке бесплатно помогу настроить и подготовить сервер к повседневной эксплуатации.
Как заблокировать IP адрес с помощью iptables на Linux
Как заблокировать IP адрес с помощью iptables на Linux
Я установил и запустил CentOS на моем сервере , и я часто нахожу , что мой сервер подвергается нападению другими компьютерами. Грубая сила SSH атаки, сканирование портов , сканирование вирусов и так далее. В этой теме я расскажу и покажу вам на готовом примере, как можно блокировать IP -адрес на сервере Linux с помощью IPTables .
Во-первых, я буду считать что вы уже используете IPTables . Если вам нужна помощь в настройке, то прочитайте эту статью.
Как заблокировать IP -адрес ?
Пример. Я хочу заблокировать входящий запрос от некоторого IP, предположим 192.168.244.134 , то нужно войти как root и ввести следующую команду:
# iptables -I INPUT -s 192.168.244.134 -j DROP
Где ,
— I: Вставка цепи в верхней части правил .
— s: Матч IP -адрес источника .
— j : Перейти к указанным целевым цепям , если пакету соответствует текущее правило .
Чтобы отбрасывать пакеты , приходящие на интерфейс eth0 с 192.168.244.134 , введите следующую команду:
# iptables -I INPUT -i eth0 -s 192.168.244.134 -j DROP
Иногда, стоит заблокировать IP следующим образом:
# iptables -A INPUT -s 11.22.33.44 -j REJECT
- -A: Добавляет правило в таблицу INPUT(входящие пакеты) для IP указанного ИП и выполнет действие REJECT(полностью отбрасывать пакеты не показывая признаков жизни даже по пингу).
- — s: Матч IP -адрес источника .
- — j : Перейти к указанным целевым цепям , если пакету соответствует текущее правило .
Как заблокировать подсеть ?
Используйте следующий синтаксис для блокирования 10.0.0.0 /8:
# iptables -I INPUT -s 10.0.0.0/8 -j DROP
Как сохранить заблокированный IP -адрес ?
Чтобы сохранить заблокированный IP -адрес для Iptables в файл конфигурации , введите следующую команду:
Как разблокировать IP- адрес?
Во-первых, вам нужно отобразить заблокированный IP -адрес вместе с номером строки и прочей информации, для этого введите следующую команду
# iptables -L INPUT -n --line-numbers # iptables -L INPUT -n --line-numbers | grep 192.168.244.134
Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 192.168.244.134 0.0.0.0/0 2 LOCALINPUT all -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT udp -- 213.152.14.11 0.0.0.0/0 udp spts:1024:65535 dpt:53
Чтобы разблокировать 192.168.244.134 необходимо удалить номер строки 1, для этого введите:
Тема «Как заблокировать IP адрес с помощью iptables на Linux» окончена.