📑 Блокирование ip адреса при помощи iptables
Лучше всего, с наименьшими затратами, блокировать ip адреса при помощи iptables (для ipv4). Iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) Netfilter для ядер Linux, начиная с версии 2.4.
Существенно облегчает жизнь использование fail2ban. Но иногда нужно просто забанить какой то ip-шник без всяких правил и ко всему серверу.
Самый простой и эффективный способ заблокировать ip:
Этой командой добавляется правило блокирующее с ip адреса XXX.XXX.XXX.XXX все входящие запросы к серверу.
Вместо DROP можно поставить REJECT. Насчет целесообразности использования того или другого можно услышать диаметрально противоположные мнения.
DROP — просто закрывает соединение и не отправляет ничего в ответ. Соединение потом убивается по таймауту, время которого при желании можно сократить. В итоге при множестве запросов мы не посылаем ничего в ответ. Однако при сканировании закрытых портов, они будут помечаться как filtered, что говорит, что что-то всё-таки слушает порт.
REJECT — сбрасывает соединение и отправляет в ответ сообщение, указанное в опции —reject-with. По умолчанию отправляется host is unreachable. При множестве запросов — множество ответов, но при сканировании порты будут unreachable. Ресурсов сервера будет потребляться больше.
Посмотреть все правила можно командой:
На экране получим нечто подобное:
Разблокировать строку можно по номеру правила:
или указав правило полностью:
Удалить все правила:
Настроенные блокировки ip будут действовать до следующей перезагрузки системы. Чтобы они восстанавливались при последующих загрузках системы, можно использовать разные методы.
Один из самых простых – установить пакет iptables-persistent, с помощью которого можно будет сохранять создаваемые правила в отдельные конфигурационные файлы, которые в свою очередь будут автоматически загружаться после перезагрузки системы.
Как заблокировать доступ по IP-адресу в Linux?
Как известно сеть интернет — не безопасная среда, где кроме всего полезного часто встречаются и вредоносные сущности. Одной из немаловажных задач администратора сервера является обеспечение безопасности и работоспособности машины. Классический пример – некий извне, производит огроменный поток запросов какой-либо страницы сайта. В конечном итоге это может вызвать большую нагрузку и сбои в работе сайта. Закрыть доступ такому «пользователю» к ресурсу, пожалуй, это рациональное решение, так или иначе, до выяснения обстоятельств и причин таких нагрузок.
В операционной системе Linux есть утилита IPTables, работа с которой может выполняться из командной строки. Данная утилита является стандартным интерфейсом управления работой межсетевого экрана, его так же называют брандмауэром NETFilter, который стал использоваться в системе Linux с версией ядер начиная от 2.4. Для использования данной утилиты вам необходимо иметь привилегии суперпользователя.
Теперь к действию, предположим у нас есть IP адрес, с которого идут нежелательные запросы: 91.207.7.182, заблокировать доступ в IPTables можно таким образом:
Данная строка добавляет (-A) правило в таблицу INPUT (данная таблица нужна для работы с входящими пакетами), указанный нами IP-адрес, а так же действие, предпринимаемое при обращении с этого IP-адреса, в нашем случае REJECT – пакеты будут полностью игнорироваться, таким образом, с его стороны сервер будет не виден, даже если пробовать пинговать. Кроме того, вместо значения REJECT так же предусмотрено использование команды DROP, в этом случае обращаемый узел получит ответ от сервера. Однако есть информация, что в некоторых случаях, при большом количестве запросов, использование команды DROP может привести к сбоям в работе сервера. Выводы делайте сами.
После ввода строки из вышеуказанных команд, следует сохранить данные.
В случае если этого не делать, после перезагрузки в IPTables данных о наших записях не будет.
linux-notes.org
Как заблокировать IP адрес с помощью iptables на Linux
Иногда, стоит заблокировать IP следующим образом:
Используйте следующий синтаксис для блокирования 10.0.0.0 /8:
Как разблокировать 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 может меняться и по этому может не блокироваться, можно попробовать вот так сделать (для некоторой подсети):
Но мой совет для этой задачи — это использовать Fail2Ban. Я очень подробно рассказывал что и как в своей статье ( Но это для Unix/Linux ОС):
http://linux-notes.org/ustanovka-fail2ban/
Уверен, что она поможет со взломом почтового сервера и не только…
Понял спасибо.
А если такое правило:
Здравствуйте. Хочу заблокировать ВСЕ айпи Китая. Прямо все, без исключений. Как это можно реализовать?
Смотря для каких целей ( если для web-сервера — можно установить и использовать GeoIP и забанить сразу целую страну). Если просто заблокировать страну с IPtables, то вот список IP адресов и для примера я взял China (ПРИМИТЕ ВО ВНИМАНИЕ, что IPtables тормозит при обработке большого количества правил. Мой совет — использовать IPset, я рассказывал на своем сайте как он работает):
Здравствуйте! Может кто нибудь сможет ответить, как можно разрешить подключение на внешний интерфейс freepbx15 etc1 только с 1 Ip адреса(остальное всё запретить), и разрешить все подключения для внутреннего интерфейса etc0. И как понять, что используется в приоритете, фаерволл freepb или fail2ban, потому что когда запрещаю правила в iptables, то подключения всё равно проходят.
Здравствуйте
можно ли в айпитеблсе ограничить доступ к интернету кроме белого списка айпи?
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
linux-notes.org
Утилита iptables в Unix/Linux
Знак диез «#» говорит нам что команду нужно запускать от рута.
1. Чтобы показать статус, нужно:
Ниже приведен пример вывода iptables для не настроенного фаервола:
Вывод будет отличаться если Вы настроите свой брандмауэр под свои нужды, приведу пример уже для настроенного iptables: 
2. Чтобы вывести правила в виде списка, а так же с нумерацией строчек:
В итоге у Вас будет примерно это на выводе: 
3. Чтобы можно было отобразить INPUT, OUTPUT цепочки правил нужно выполнить:
4. Чтобы застопать, стартануть или перезапустить файрвол нужно выполнить:
Использовать средства самой ОС:
Можете заюзать команды iptables чтобы можно было остановить фаервол и удалить все наши правила:
5. Если нужно удалить правила в фаерволе следует выполнить:
Если нужно вывести нумерацию строк с уже имеющимися правилами:
Как увидеть список IP-шников. Нужно посмотреть слева на нумерацию и я могу удалить строки которые уже присутствуют. Например для номера 4:
Или поищем IP-шник источника (192.168.244.134) и после чего удалим его из наших правил:
Пояснение по ключу:
-D : служит для удаления 1 или пары правил из цепи.
6. Если Вы хотите прописать новое правило в фаервол, выполните:
Если необходимо добавить одно или парочку правил в одну цепочку, то для начала выведем список с нумерацией строк:
Допустим Вам нужно вставить правило между первой и второй строкой, то нужно выполнить:
Убедимся, обновилось ли наше правило:
7. Что бы сохранить правило (а) в фаерволе нужно.
Можно это сделать с помощью следующей команды:
8. Чтобы восстановить правило (а) в фаерволе нужно.
Можно это сделать с помощью следующей команды:
Если необходимо, можно сохранить все правила в файл:
Тогда чтобы вернуть правила, можно использовать команду:
9. Чтобы вернуть как все и было (Установить все как было по дефолту).
Чтобы вернуть как было весь трафик нужно выполнить:
После того как вы выполните команды что выше, то ни 1 из пакетов не покинет прописанный хост.
10. Чтобы заблокировать только входящие соединения нужно выполнить:
Чтобы сбросить все не инициированные вами входящие пакеты, но разрешать исходящий трафик следует выполнить эти команды:
Исходящие пакеты и те, которые были сохранились в рамках установленной сессии — разрешены.
11. Как сбросить адрес изолированных сетей в публичной сети?
Список айпишников для всей изолированной сети ( изолированных сетей):
12. Чтобы заблокировать определенный IP адрес нужно:
192.168.244.144 — Это айпишник надоедливого человека, допустим мы его захотели забанить.
13. Как сделать блокировку входящего запроса с порта?
Если вам нужно например сделать блокировку всех входящих запросов с порта 80, то выполните:
Чтобы сделать блокировку запроса на порту 80 с ИП-адреса 192.168.244.144 нужно:
14. Как заблокировать запросы на исходящий айпишник?
Чтобы сделать блокировку определенного домена, то для начала нужно узнать его IP:
Вывод: linux-notes.org has address 65.178.248.45
Найдем CIDR для 65.178.248.45:
Вывод: CIDR: 65.178.2145.0/18
Сделаем блокировку на 65.178.2145.0/18:
Можно кат же заблокировать сам домен:
15. Как записать события или сбросить их?
Чтобы сделать запись в ЛОГ движение пакетов перед сбросом, добавим некоторое правило:
Посмотрим лог (по умолчанию /var/log/messages):
16. Записать некоторое событие и сбросить (с ограничениями по количеству записей).
Чтобы не заполнить какой то раздел большим журналом, можно сделать ограничение на количество записей с использованием опции «-m». Например, чтобы записывать каждые 4 минуты и максимум 6 строк выполните:
17. Как разрешить или запретить запросы ICMP Ping на сервак?
Чтобы запретить выполните:
Чтобы разрешить для некоторых сетей а так же хостов нужно выполнить:
Чтобы разрешить только небольшую часть ICMP запросов нужно сделать следующее (имеется в виду, что политика по дефолту для входящих она установлена в DROP):
Разрешить отвечать на данный запрос:
18. Как можно открыть диапазон определенных портов?
Сделать это можно очень просто, стоит указать в каких пределах можно открыть порты, в данном примере я открою с 666-6666:
19. Как можно открыть диапазон определенных ИП адресов?
Например нужно разрешить подключение Apache по порту 80 если адреса в диапазоне от 192.168.244.66 до 192.168.244.244, а сделать это можно следующим образом:
Приведу пример еще и для nat-а:
20. Покажу как можно открыть или закрыть стандартные порты.
Делается это следующим образом, нужно заменить ACCEPT на DROP, чтобы заблокировать какой то порт. Для службы ssh tcp по порту 22:
Для службы cups (printing service) или udp/tcp по порту 631 в локальной сети:
Синхронизация времени (time sync) через службу NTP в локальной сети (udp по порту 123):
Для службы tcp по порту 25 (smtp):
Для службы dns server-а по порту 53:
Для служб http или https, а так же для www server по порту 80 и 443:
Для tcp по порту 110 (pop3):
Для tcp по порту 143 (imap):
Для службы Samba file server в локальной сети по портам: 137, 138, 139, 445:
Для proxy server-а в локальной сети по порту 3128:
Для mysql server-а для локальной сети по порту 3306:
21. Если нужно как то ограничить количество одновременных соединений на сервер для конкретного ИП-адреса.
Если это нужно сделать, то нам нужно использовать connlimit модуль. для того чтобы разрешить только 4 ssh соединения для одного клиента выполните:
Если нужно установить количество запросов для HTTP например до 23 с маской 24:
Пояснения по ключикам:
—connlimit-above 23 : Говорит, что данное правило выполняется когда количество соединений больше 23.
—connlimit-mask 24 : Говорит какую маску нужно использовать, у меня это 24.
22. Перенаправление трафика с одного порта на другой
Например, для перенаправления всего входящего трафика с 80-го порта на порт 8080, выполните:
23. Как сбросить счетчики пакетов?
Чтобы увидеть счетчики iptables, выполните:
Чтобы очистить / сбросить счетчики для всех правил:
Для сброса счетчиков только для цепочки INPUT:
Чтобы сбросить счетчики только для правила №4 в цепочке INPUT:
Как получить помощь по iptables?
Чтобы найти помощь по iptables,используйте мануал (man):
Если нужно просмотреть только по конкретным командам и целям, используйте:
Чтобы выполнить проверку правил iptables на открытые и закрытые порты:
Чтобы выполнить проверку правил iptables на открытые и закрытые определенные порты, допустим по порту 80:
Посмотрим разрешает ли соединение с 80 портом в iptables:
Или можно его открыть для всех:
Так же можно это проверить и с использованием телнет (telnet):
Можете заюзать nmap для такой же проверки:
Iptables очень хороший инструмент для сисадмина.
Вот еще полезное чтиво:
Если есть необходимость быстро и не трудно сделать защиту дома на Ubuntu, то нужно знать, что существует удобная консольная надстройка над iptables- ее название UFW, а к данной программе имеется графическая часть под названием GUFW. На этом я заканчиваю данную статью «Утилита iptables в Unix/Linux», надеюсь что я нормально расписал все.
8 thoughts on “ Утилита iptables в Unix/Linux ”
Iptables и фильтрация трафика от бедных и ленивых инакомыслящих
Актуальность блокировки посещений запрещенных ресурсов затрагивает любого админа, которому могут официально предъявить невыполнение закона или распоряжения соответствующих органов.
Зачем изобретать велосипед тогда, когда есть специализированные программы и дистрибутивы для наших задач, например: Zeroshell, pfSense, ClearOS.
Еще один вопрос оказался у начальства: А есть ли у используемого продукта сертификат безопасности нашего государства?
У нас был опыт по работе с перечисленными дистрибутивами:
Рассматриваемое решение не претендует на уникальность, но хочется задать вопрос: «А зачем на предприятии приспосабливаться под сторонние сомнительные продукты с серьезными аппаратными требованиями когда можно рассмотреть альтернативный вариант?».
Если в РФ есть список Роскомнадзора, в Украине — приложение к Решению Совета НацБезопасности (напр. вот), то на местах руководители тоже не спят. Например, нам был передан список запрещенных сайтов, по мнению руководства ухудшающих производительность труда на рабочем месте.
Общаясь с коллегами на других предприятиях, на которых по умолчанию запрещены все сайты и только по запросу с разрешения начальника можно получить доступ к конкретному сайту, уважительно улыбнувшись, подумав и «покурив над проблемой» пришло понимание того, что жизнь все-таки хороша и мы начали свой поиск.
Имея возможность не только аналитически посмотреть, что пишут в «книгах домохозяек» про фильтрацию трафика, но и посмотреть что происходит на каналах разным провайдеров мы подметили следующие рецепты (любые скрины немного обрезаны, прошу понять и простить):
| Провайдер 1 | — не заморачивается и навязывает собственные ДНС сервера и прозрачный прокси-сервер. Ну что. зато у нас есть доступ туда куда надо (если нам это надо :)) |
| Провайдер 2 | — считает что его верхний провайдер должен об этом думать, техподдержка верхнего провайдера даже призналась почему я не могу открыть необходимый мне не запрещенный сайт. Я думаю что картинка вас развеселит 🙂 |
Как оказалось, они имена запрещенных сайтов переводят в айпи адреса и блокируют именно IP (не беспокоит их то, что на этом IP адресе может размещаться и 20 сайтов).
А что делать с ВПН (браузеру Opera уважение) и плагинами для браузеров? Играясь по-началу с узловым Mikrotik у нас даже появился ресурсоемкий рецепт на L7, от которого в последствии пришлось отказаться (запрещенных названий может быть и побольше, печально становится когда кроме своих прямых обязанностей по маршрутам, на 3х десятках выражений загрузка процессора PPC460GT уходит в 100%).
.
Что стало понятно:
ДНС на 127.0.0.1 абсолютно не панацея, современные версии браузеров таки позволяют обходить подобные траблы. Ограничить всех пользователей урезанными правами нельзя, и нельзя забывать об огромном количестве альтернативных ДНС. Интернет не статичен, и кроме новых ДНС адресов, запрещенные сайты покупают новые адреса, изменяют домены верхнего уровня, могут добавить/удалить символ в своем адресе. Но все же имеет право жить что-то типа (субъективно: в такой защите вижу как браузер в недоумении все же ждет ответа, и страница, в которой есть элементы запрещенного контента, загружается долго):
Вполне действенным было бы получение списка IP адресов из списка запрещенных сайтов, но по указанным выше соображениям мы перешли к соображениям о Iptables. Существовал уже живой балансировщик на CentOS Linux release 7.5.1804.
Применение sudo обусловлено тем, что у нас есть небольшой хак для управления через WEB интерфейс, но как показал опыт использования такой модели сроком более года, то WEB не так уж и нужен. После внедрения было желание перечень сайтов завести в БД и т.п. Количество заблокированных хостов более 250 + десяток адресных пространств. Действительно есть проблема при переходе на сайт по https соединению, как и системного администратора у меня есть претензии к браузерам :), но это частные случаи, большинство срабатываний к отсутствию доступа к ресурсу всё таки на нашей стороне, так же успешно блокируем Opera VPN, плагины типа friGate и телеметрию от Майкрософт.





