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

 24 марта 2014      
 Linux - CentOS      
 Комментариев еще нет

Брутфорс — это метод взлома основанный на переборе всех вариантов паролей. Когда злоумышленник пытается получить доступ к серверу перебирая все возможные комбинации. Учитывая производительность современных компьютеров это занимает на так много времени. Ранее я писал о защите от брута, и применительно к 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) в доступе будет отказано.



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

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


 Метки:  

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

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

Технический блог © 2016
SQL - 39 | 0,184 сек. | 7.72 МБ