Компрометация доступов к серверу может обернуться многими неприятностями: появление сторонних скриптов, нагружающих ресурсы сервера, потеря или кража данных, расположенных на нём.
Первый признак сторонних подключений — появление подобных сообщений при авторизации по протоколу SSH:
Last failed login: Wed Dec 27 13:52:45 MSK 2017 from 192.168.0.1 on ssh:notty There were 9134 failed login attempts since the last successful login.
Если видите такие сообщения при авторизации на сервере — были осуществлены неудачные попытки входа. Злоумышленники целенаправленно подбирают SSH пароли либо делают это автоматически, с помощью уже заражённых компьютеров.
Чтобы избежать компрометации данных, воспользуйтесь следующими рекомендациями:
- Смените порт SSH
- Используйте только ключи SSH
- Установите Google Authenticator
- Настройте доступ с определённых IP
- Установите Fail2ban
- Настройте бэкапы на удалённое хранилище
Если выполните хотя бы один из пунктов, это уже поможет защитить сервер от вторжений.
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.
Как создать ключ для авторизации по 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
указать необходимые IP-адреса:
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ного ПО будет перенос данных на другой сервер или переустановка ОС с сохранением данных.
6. Настройте бэкапы на удалённое хранилище
Панель ISPmanager позволяет настраивать бэкапы не только на диск сервера, но и на облачные хранилища, например, Яндекс.Диск или Google Drive. Это позволит оперативно восстановить пользовательские данные, даже если они были полностью удалены с сервера.
Подробности в этой статье.