Статьи

Запрет всей страны с помощью IPTables / IPSet |

  1. Автор: DGhost

Пару лет назад я был бы шокирован этой простой идеей. Запретить когда-либо всей стране пользоваться услугами одного из моих общедоступных серверов. Я бы никогда не предложил и даже не согласился с такой идеей. Это было давным-давно, и теперь ландшафт Интернета настолько изменился, что я решил использовать это простое, но очень эффективное решение. Я имею в виду, это идет вразрез с основной природой существования Интернета; Информация хочет быть бесплатной, и она должна быть доступна всем, кто хочет получить к ней доступ, в любой точке мира. И все же, я здесь сегодня, запрещаю целым странам навсегда пользоваться услугами веб-служб и электронной почты на некоторых серверах, которыми я управлял. Зачем? Потому что я устал от некоторых организаций, злоупотребляющих серверами. Мне надоело постоянно проверять состояние сетей, за которыми я должен следить. Я устал видеть, что почти в 99% случаев атаки всегда идут из одних и тех же стран. Итак, после многих лет размышлений, осенью 2013 года я наконец сдался и начал запрещать целые страны iptables. После многих месяцев его использования, единственный вывод, который у меня есть, почему я не сделал этого раньше?

Техническое требование и конфигурация очень просты, мы пройдем их очень скоро, но прежде чем сделать это, давайте сделаем шаг назад, чтобы подумать о том, почему мы хотели бы это сделать и что мы собираемся достичь с помощью такой установки. Я управляю и контролирую множество различных типов серверов. Большинство из них являются частными, и некоторые из них являются публичными. Все они имеют разные уровни безопасности, но общедоступные требуют особого внимания и более тщательного контроля. Очевидная причина; это серверы, предлагающие услуги всем в интернете без особого безопасного доступа к нему. В основном веб-страницы, электронная почта, FTP и доступ к базе данных. Иногда у них есть специальные службы, но они, как правило, являются исключением, а не нормой. Конечно, некоторые базовые средства для защиты сервисов уже настроены с использованием ключей для входа по SSH, сложности пароля; чтобы убедиться, что у пользователя есть надежный пароль (обратите внимание на себя; убедитесь, что не использовать один и тот же пароль для моего багажа и для щита планеты Друидия ), fail2ban и / или WAF запретить IP-адреса для внешней атаки, OSSEC для внутренней атаки и т. д. Но даже со всеми этими различными уровнями защиты, некоторые проблемы все еще могут возникнуть. Как старая версия WordPress, которая размещается и никогда не обновляется, или плагин любой веб-платформы, которая имеет большую дыру в безопасности и никогда не была исправлена. Внешние / общедоступные серверы - это совершенно другой тип серверов, потому что по самой простой причине - безопасность. Вы должны точно знать, во что вы ввязываетесь, когда настраиваете публичный сервер. Это почему? Потому что всегда кто-то где-то пытается взломать сервер и взять его под контроль. Причины этого не так важны, это может быть для запуска DDOS-атаки, превращения его в FTP / Torrent-сервер для Warez, размещения баннеров для распространения вирусов или какого-то нового вида фишинга / спама / интриги или просто для удовольствия Это. 14 лет назад было довольно легко настроить публичный сервер, потому что на него редко нападали. Теперь, сегодня, это происходит каждую секунду, если не 10 раз в секунду. Пароль грубой силы постоянно делается против всех публичных серверов в Интернете. Возможно, вы изменили порт по умолчанию для вашей службы SSH с 22 на любой другой, вы избегаете только сценариев, а не профессиональных - которые являются наиболее опасными / проблемными. И даже если вы используете много разных типов слоев для защиты вашего сервера, вы действительно никогда не будете защищены от какой-либо конкретной атаки, такой как DDOS, если у вас нет денег на покупку сверхмощного брандмауэра или использование специализированной службы, такой как Черный лотос ,

Куда я клоню? В настоящее время официально заняться задницей / работой на полную ставку - мониторинг общественного сервера на предмет безопасности. И знаешь, что? Большинство этих атак, в основном, всегда происходят из конкретной страны. Просто используя fail2ban и получая сообщения по электронной почте, когда пароль взломан, вы можете точно знать, из какой страны исходит IP-адрес, который его сделал. Возьмите эту страницу например , Одна из старых версий fail2ban имела в своем конфигурационном файле по умолчанию, например, для сообщения электронной почты на [email protected]. Первоначальный автор, вероятно, думал, что этого не было, но, увы, да, оно существует! У кого-то была необычная идея зарегистрировать этот адрес электронной почты, и он записывал электронные письма, которые отправляются на него для анализа статистики. На этой веб-странице вы можете проверить, какие страны чаще всего атакуют паролем для перебора и какие страны наиболее уязвимы для него. Другой сервис, который вы можете проверить, это www.blocklist.de - служба отчетности fail2ban , Многие пользователи fail2ban зарегистрировали учетную запись в этой службе и отправляют им информацию о том, кто (IP) в данный момент атакует их. Вы можете скачать их основной список и добавить его в свой брандмауэр.

Но после всего вышесказанного, если вы подумаете об этом, это постоянное бесконечное колесо безопасности. Я начал думать об этой идее запрета всей страны более 3 лет назад. Я знал, что это может быть «легко» сделано благодаря простой функции, которую мы можем использовать сегодня, - гео IP-местоположению. Все IP-адреса предоставляются в определенных и, в большинстве случаев, смежных блоках для стран, и они зарегистрированы в многочисленных базах данных, доступных бесплатно, в Интернете. Итак, я начал думать, кто из моих пользователей находится в других странах? Если все серверы, которые я ищу, расположены в Северной Америке, я могу легко проверить, что все пользователи на нем также находятся в Америке. Если на этом сервере всего менее 100 сотен пользователей, его можно легко проверить с помощью журналов различных служб. Конечно, я также должен был предупредить пользователей серверов о своем намерении. Например, запрет на одну конкретную страну, потому что 97% всех атак методом "грубой силы", которые были проведены против всех служб на этом сервере, были из этой страны. Поэтому, объяснив это всем пользователям, я также могу предложить им какое-то исключение: если они когда-либо путешествуют в эту страну, они могут отправить мне электронное письмо с учетной записи электронной почты, не принадлежащей моему серверу, например, используя свою учетную запись gmail или hotmail и давая мне публичный адрес, где они могут быть расположены, чтобы я мог выдвинуть исключение в брандмауэре. К счастью, такого сценария еще никогда не было.

Так что нам нужно? брандмауэр точно. Iptables в этом случае и Ipset с этим. Зачем? Из-за того, как работает iptables. Когда устанавливается соединение с сервером linux, на котором работает iptables, вы должны знать, что iptables берет IP и сравнивает его со своим внутренним списком. построчно. Теперь представьте, что у вас есть список iptables, состоящий из тысячи строк. Как вы думаете, это замедлит процесс подключения? Вы ставите. Если в вашем списке много записей, например, в диапазоне сотен разных IP-адресов, и некоторые из них являются блоком IP-адресов, использование только Iptables неэффективно. Вот почему вам нужно Ipset , Я настоятельно рекомендую вам узнать, как работает Ipset, если вы собираетесь запретить всю страну. Ipset нужен iptables для работы и редко устанавливается по умолчанию на сервер Linux. В этом примере я использую CentOS 6.5, а для установки ipset достаточно просто набрать:

# yum -y установить ipset

Вот и все, готово. Поскольку ipset находится в базовом репо, мне даже не нужно подключаться к стороннему репо, чтобы установить его. libmnl должен быть установлен автоматически вместе с зависимостью. Для других дистрибутивов команда может отличаться, но идея та же. Теперь для следующей части, если вы когда-нибудь выполняли поиск в Google (или любой другой системе веб-поиска) по поводу термина «страна запрета iptables», вы быстро поймете, что существует множество способов сделать это. Большинство из них все хорошие. Хитрость заключается в том, чтобы узнать, где вы получаете «основной список» для IP-адресов, принадлежащих конкретной стране. Многие веб-сайты предоставляют эту информацию, но не все они обновлены. Есть 2 основных способа сделать это. Во-первых, это подключиться к сервису с помощью некоторых инструментов в Linux для получения «живого» списка Geo IP, или второй способ - это загрузить список с веб-страницы и поместить текстовый файл на ваш сервер. Вы быстро подумаете, что первый способ должен быть лучше, потому что запрос выполняется на другом сервере, и у вас всегда будет актуальный список. И все же, именно здесь у вас, вероятно, будет больше всего проблем. Большинство из этих внешних серверов предоставляют эти услуги бесплатно и не всегда подключены к Интернету, что означает, что он остановит работу вашего iptables / ipset. Кроме того, многие из этих серверов даже не обновляют свой список географических IP-адресов. Я предпочитаю второй способ. Вы получаете список Geo IP с веб-страницы, а затем просто копируете этот список в текстовый файл на своем сервере. Недостаток в том, что вам нужно обновлять этот список самостоятельно (или вы даже можете создать скрипт с помощью cron, который сделает это за вас). В любом случае, это руководство пытается упростить его, и я буду использовать второй способ. Смирись! Таким образом, один из самых популярных сайтов для базы данных Geo IP был ipdeny.com сайт, но кажется, что они не обновлялись в течение некоторого времени. Другая база данных предлагает ограниченный бесплатный доступ к списку, но большинство из них будет взимать с вас плату за подписку - обычно это включает в себя право на прямой запрос о подключении по Geo IP. Ты получаешь то, за что платишь. Для бесплатного доступа вы можете получить список стран, которые вы хотите из любой IP2Location, Maxmind Geolite Бесплатная база данных или же Блоки IP страны , Тот, который я предпочитаю, это бесплатно и в актуальном состоянии это тот из Простой пингвин (черт побери, сайт сейчас не работает, сейчас я рекомендую ipdeny.com). Этот список оптимизирован, чтобы быть максимально коротким в формате CIDR. Нажмите на страну, которую вы хотите запретить, и загрузите текстовый файл на свой сервер Linux. Теперь у вас есть ipset и список стран, которые вы хотите запретить. Следующий вопрос, который вы должны задать, прежде чем бросить молот запрета, хотите ли вы запретить этой стране подключаться к любым портам на вашем сервере - как ко всем портам. Или вы хотите запретить стране для подключения к определенному порту - например, порт 22 для службы sshd?

Пару лет назад я был бы шокирован этой простой идеей

Теперь пришло время использовать мой могучий молот запрета.

Перед запуском цикла создания бана давайте создадим набор в IPSet, назовем его «геоблок», имя может быть любым, каким вы хотите, этот набор будет заполнен списком IP-адресов стран, которые вы хотите запретить.

sudo ipset создать хеш геоблока: net, порт

Вот цикл, который нужно запустить для запрета доступа к службе SSHD в списке стран. Если вы хотите запретить другую службу, просто измените порт по умолчанию 22 на тот, который вам нужен. В первой строке между {} введите Код страны, который вы хотите запретить, между каждым из них - я также рекомендую сохранить этот цикл в файле сценария оболочки:

для IP в $ (wget -O - http://www.ipdeny.com/ipblocks/data/countries/ enjcn,ru,kr,pk,tw,sg,hk Event.zone)
делать
# обычный бан - заблокировать порт 22 для countryXX
sudo ipset добавить геоблок $ IP, 22
сделанный

Если вы хотите использовать свой молот для запрета на доступ к каким-либо службам на вашем сервере, мы просто изменим код цикла для этого;
для IP в $ (wget -O - http://www.ipdeny.com/ipblocks/data/countries/ enjcn,ru,kr,pk,tw,sg,hk Event.zone)
делать
# запретить все - заблокировать countryX
sudo ipset добавить геоблок $ IP
сделанный

Теперь давайте посмотрим, правильно ли заполнен ваш набор, просто запустите эту команду, чтобы показать содержимое набора с именем geoblock:

# sudo ipset list geoblock

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

# sudo ipset del geoblock | "Сетевое имя"

Все подробности о ipset смотрите в руководстве к команде. Теперь, когда набор создан так, как вы хотите, нам нужно добавить это в правила IPtables. Вы можете сделать это, выполнив эту команду:

# sudo iptables -I INPUT -m set --set geoblock src -j DROP

Если вы перезапустите iptables, это правило не будет постоянным, не забудьте запустить команду «# service iptables save», чтобы сделать ее постоянной. Есть еще один полезный трюк, это сделать обратный список. допустим, вы не хотите блокировать определенные страны, а хотите, чтобы только некоторые страны из вашего списка могли общаться с вашим сервером и блокировали остальные? Это довольно просто и умно. Вам нужно отредактировать скрипт цикла создания вашего IPset, но вместо того, чтобы выбирать страны, которые вы хотите запретить, вы будете выбирать только те страны, которые вы хотите разрешить, и создавать свой список из этого. После этого вы будете использовать эту команду для iptables, чтобы отбрасывать все входящие соединения с IP-адресов, которые не перечислены в вашем наборе IPSet;

# sudo iptables -A INPUT -m set --set! geoblock src -j DROP

Опять же, не забудьте сохранить свои правила iptables, если хотите сделать их постоянными. Вот и все, теперь у вас есть возможность блокировать связь целых стран с вашими серверами.

Автор: DGhost

Системный администратор и консультант более 14 лет. Я всегда использовал компьютеры с детства. Я специализируюсь на сетях, серверах и внутренней работе в Интернете. Мой блог ориентирован на персонал с точки зрения некоторых технологий, Интернета, науки и Интернета в целом. Если вам интересно, почему этот сайт на французском и английском языках, это потому, что я французский канадец, который также говорит по-английски, а иногда, когда я пьян, балуюсь по-испански. DGhost Est plongé dans l'informatique depuis son plus jeune ge. Специальное предложение и услуги, определяемые как Интернет и секреты. Блог о сыновьях и информационных технологиях, l'informatique, les Sciences et la technologie.

Похожие

Я использовал бета-версию Google Maps Navigation на своем Google Nexus One, и она показала себя оче...
Я использовал бета-версию Google Maps Navigation на своем Google Nexus One, и она показала себя очень хорошо,
Как оплатить игры в интернете с помощью быстрых платежей?
... помощью кредитной карты или средств на своем счете PayPal, который финансируется за счет переводов с банковского счета или другого счета PayPal. Paysafecard - способ оплаты, основанный на методе предоплаты. Чтобы совершить транзакцию, вы покупаете специальную карту определенного номинала с напечатанным кодом, которая вводится в нужный момент при совершении покупок в Интернете. BLIK - самая популярная польская система мобильных платежей, основанная на использовании одноразовых
Обновление прошивки Nook Simple Touch 1.1.0
Вчера Nook Simple Touch получил серьезное обновление программного обеспечения. Сообщения Барнса и Нобла об этом обновлении приводили в замешательство, и они не опубликовали подробный список изменений и исправлений ошибок. Выпуски новостей усилили путаницу, попутно выпуская пресс-релизы Барнса и Нобла, не проверяя факты. В этом посте я выложу факты об обновлении, а затем расскажу свое мнение об этих изменениях в контексте моего
Превратите любой источник VGA, DVI, HDMI в прямую трансляцию с помощью Skype
В этом руководстве объясняется, как использовать популярное программное обеспечение для видеоконференций Skype ™ для потоковой передачи или трансляции сигнала источника видео VGA, SDI, DVI или HDMI ™ удаленному зрителю. Skype - это привлекательная коммуникационная платформа с двусторонней аудио- и видеосвязью.
Как сделать игру как Doodle Jump с помощью Corona Tutorial Part 1
Это сообщение в блоге от члена команды iOS Tutorial Team Якоб Гундерсен , инди-разработчик игр, который управляет Инди Амбиции блог. Проверьте его последнее приложение - Фактор Самурай! Готов поспорить, что когда вы проснулись этим утром, вашей
Cryptojacking - Cryptomining в браузере
Вступление Cryptomining это процесс, с помощью которого транзакции криптовалюты проверяются и добавляются в открытую книгу, известную как blockchain , В то же время криптование также является средством, с помощью которого выпускаются новые криптовалютные монеты. Криптомайнинг выгоден своему

Комментарии

Как оплатить игры в интернете с помощью быстрых платежей?
Как оплатить игры в интернете с помощью быстрых платежей? Проверьте платежную систему CashBill

Зачем?
После многих месяцев его использования, единственный вывод, который у меня есть, почему я не сделал этого раньше?
Это почему?
И знаешь, что?
Итак, я начал думать, кто из моих пользователей находится в других странах?
Так что нам нужно?
Зачем?
Как вы думаете, это замедлит процесс подключения?
Или вы хотите запретить стране для подключения к определенному порту - например, порт 22 для службы sshd?
Допустим, вы не хотите блокировать определенные страны, а хотите, чтобы только некоторые страны из вашего списка могли общаться с вашим сервером и блокировали остальные?

Новости