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

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

Первый признак сторонних подключений — появление подобных сообщений при авторизации по протоколу 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
  2. Используйте только ключи SSH
  3. Установите Google Authenticator
  4. Настройте доступ с определённых IP
  5. Установите Fail2ban
  6. Настройте бэкапы на удалённое хранилище

Если выполните хотя бы один из пунктов, это уже поможет защитить сервер от вторжений.

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, Billmanager. Это делается через пункт Настройки пользователя в правом верхнем углу экрана:

 

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

 

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

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 и рассылкой спама с сервера поможет модуль VirusDie. Он удаляет вредоносные скрипты и вставки в файлах, через ISPmanager модуль можно настроить по удобному расписанию и смотреть отчёты об устраненных вирусах.

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

 

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

Подробности в этой статье.