Как защитить сервер от взлома

Компрометация доступов к серверу может обернуться многими неприятностями: появление сторонних скриптов, нагружающих ресурсы сервера, потеря или кража данных, расположенных на нём.

Первый признак сторонних подключений — появление подобных сообщений при авторизации по протоколу SSH:

Last failed login: Wed Dec 27 13:52:45 MSK 2017 from 51.15.193.10 on ssh:notty
There were 9134 failed login attempts since the last successful login.

Если видите такие сообщения при авторизации на сервере — были осуществлены неудачные попытки входа. Злоумышленники целенаправленно подбирают SSH пароли либо делают это автоматически, с помощью уже заражённых компьютеров.

Чтобы избежать компрометации данных, воспользуйтесь следующими рекомендациями:

1. Смените порт SSH

Для этого в файле /etc/ssh/sshd_config необходимо раскомментировать и изменить Port 22 на свободный, это может быть любое число до 65536.

После чего перезапустить службу командой service sshd restart.

2. Используйте только ключи SSH

Преимущество ключа перед паролем в том, что его почти невозможно подобрать.

Пара ключей создаётся командой ssh-keygen. Секретный ключ (файл без расширения) копируется на ПК, а публичный (имяключа.pub) — в файл .ssh/authorized_keys на сервере.

Чтобы отключить авторизацию по паролю, в том же конфиге SSH нужно изменить директиву PasswordAuthentication yes на PasswordAuthentication no и перезапустить службу — останется авторизация только по ключу SSH.

3. Установите Google Authenticator

В отличие от приватных ключей, телефон всегда под рукой.

На сервер приложение устанавливается командой apt-get (yum) install google-authenticator

После установки запускается командой google-authenticator

После установки приложения на экране терминала появится секретный ключ. Его нужно добавить в Google Authenticator на смартфон и скопировать аварийные ключи восстановления.

Особенность программы в том, что при подключении по ключу код авторизации запрашиваться не будет, только при входе по паролю, если он включён.

Помимо самого сервера, рекомендуется также защитить двухфакторной аутентификацией и панели управления: вход в ISPmanager, VMmanager. Это делается через пункт Настройки пользователя в правом верхнем углу экрана:

При входе будет так же запрошен временный код:

Если ключ не добавляется, проверьте время на телефоне и сервере — оно должно совпадать.

4. Настройте доступ с определённых IP

Если планируется подключаться к серверу только с определённых IP-адресов, то можно внести строки в файл /etc/hosts.deny sshd: ALL

В файл /etc/hosts.allow Sshd: 188.120.252.0/24

Таким образом будет запрещён доступ по SSH для всех подсетей, кроме указанной.

После этого нужно перезапустить службу командой service sshd restart.

В панели управления ISPmanager можно настроить фаервол через пункт Система → Брандмауэр. Для серверов с KVM-виртуализацией здесь можно заблокировать не только целые подсети, но и отдельные страны:

5. Установите Fail2ban

Чтобы не блокировать адреса злоумышленников вручную, можно установить Fail2ban. Программа предназначена для блокировки подозрительных и частых подключений.

Установка проста: yum install fail2ban Centos или apt-get install fail2ban для Debian/Ubuntu.

Все политики настраиваются в /etc/fail2ban/jail.conf

Например, политика для защиты SSH:

[ssh-iptables]

enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/secure maxretry = 3

Если предоставляете доступы к серверу сторонним специалистам, имейте в виду человеческий фактор. После окончания работ доступы к серверу рекомендуется менять.

Если в результате манипуляций доступ к серверу был заблокирован, авторизоваться можно через VNC в панели VMmanager либо IPMI через DCImanager.

Если же сервер взломан на уровне администратора и стал частью ботнета, осуществляющего атаки на другие серверы, оптимальным способом избавиться от вредоноcного ПО будет перенос данных на другой сервер или переустановка ОС с сохранением данных.

С заражением сайтов на PHP и рассылкой спама с сервера поможет модуль ImunifyAV.

6. Настройте бэкапы на удалённое хранилище

Панель ISPmanager позволяет настраивать бэкапы не только на диск сервера, но и на облачные хранилища, например, Яндекс.Диск или Google Drive. Это позволит оперативно восстановить пользовательские данные, даже если они были полностью удалены с сервера.