Защита от BruteForce. Ограничение доступа к сайту по IP адресам.

Опубликовано: 24 марта 2014 / Обновлено: 15 января 2018
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 5659
Комментарии: 0

Брутфорс — это метод взлома основанный на переборе всех вариантов паролей. Когда злоумышленник пытается получить доступ к серверу перебирая все возможные комбинации. Учитывая производительность современных компьютеров это занимает на так много времени. Ранее я писал о защите от брута, и применительно к CentOS рекомендовал установить Fail2Ban.

По прошествии нескольких месяцев я собрал статистику. К моему серверу ежедневно пытались подобрать пароль от 10 до 20 раз. При этом 99% нехороших людей приходили с китайскими IP адресами. И первое, что пришло в голову — это ограничить доступ к моему серверу посетителям из Китая и/или тем, что пользуется китайскими прокси, то есть всем у кого IP принадлежат Китайской Народной Республике. Тем более, что мой блог, расположенный на данном сервере ориентирован на русскоговорящих пользователей.
Но в последствии я пришел к выводу, что доступ по SSH необходимо давать только моему компьютеру, а всем остальным блокировать вне зависимости от географического положения, ведь ничто не мешает злоумышленникам использовать анонимные прокси-серверы из других стран, а не только китайские.

Использование hosts.allow и hosts.deny для ограничения доступа к серверу

Чтобы осуществить задуманное, воспользуемся встроенными средствами самой операционной системы. В CentOS, а также в других версиях Linux и FreeBSD, есть специальные файлы конфигурации, которые регламентируют доступ к серверу по IP адресам. То есть кому можно подключиться к серверу, а кому нет. Разрешающие правила описываются в файле /etc/hosts.allow, а запрещающие — в /etc/hosts.deny.

Синтаксис, правила написания hosts.allow и hosts.deny

Правило написания разрешения или блокировки простое: Сервис Двоеточие Пробел Адрес.
В качестве наименования сервисов сервера могут выступать имена демонов SSHD, HTTPD, и прочих, а также всеобщий параметр ALL. И чтобы заблокировать всем доступ к серверу по SSH необходимо в файл /etc/hosts.deny добавить следующее:

sshd: ALL

Но чтобы при этом Вы сами не потеряли возможность общаться с сервером необходимо добавить свой(и) адрес(а) в файл /etc/hosts.allow

sshd: my.IP.ad.dres

Естественно my.IP.ad.dres — это Ваш реальный адрес в интернете. Узнать его, к примеру, можно на главной странице сайта 2ip.ru просто посетив его.

Если же у Вас динамический IP адрес, а таких пользователей в России и ближнем зарубежье большинство. То необходимо узнать весь блок адресов выдаваемый вашим провайдером и внести его в «белый список».
К примеру для моего домашнего компьютера:
Захожу на сайт 2ip.ru и вижу адрес 178.78.11.26
Узнаю полный диапазон провайдера на сервисе nic.ru/whois/:

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

И внести необходимые изменения в файл /etc/hosts.allow:

sshd: 178.78.0.0/255.255.192.0

Вот собственно и все. Доступ к серверу по SSH получат только компьютеры с адресами из /etc/hosts.allow, а всем остальным (ALL в файле /etc/hosts.deny) в доступе будет отказано.

Вместо заключения

Следует четко понимать, что описанный метод лишь ограничивает доступ к серверу. Поэтому следует принять и другие меры защиты, описанные в моей статье о защите от брута.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2024
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 6 | 0,215 сек. | 13.89 МБ