Безопасность VPS-сервера

09 October 2010 #vps#security#ubuntu

При использовании shared hosting не нужно беспокоиться о безопасности. Все находится в руках администраторов сервиса. И совершенно другая ситуация возникает, когда арендуешь VPS-сервер. Вся ответственность за происходящее ложиться на плечи владельца.

Что нужно сделать для того, чтобы почувствовать себя в относительной безопасности? Так ли сложно организовывать систему безопасности?

Fail2ban

Первая линия обороны, на которую необходимо обратить внимание – это защита SSH-сервиса. VPS-сервер находится на удалении от администратора и может управляться только с помощью SSH. И есть немало желающих заполучить полный доступ к серверу. Проводятся и брутфорс-атаки, подбирают пароли. Нагружаются сервера постоянными соединениями.

Бороться с этим довольно просто. Достаточно на сервере установить и настроить пакет fail2ban.

На сервере под управлением Debian/Ubuntu даем команду:

$ sudo apt-get install fail2ban

И теперь остается только настроить его, для это редактируется файл /etc/fail2ban/jail.conf. По умолчанию включена защита только ssh-соединений. По сути этого достаточно, однако не помешает включить защиту еще ряда сервисов, например vsftpd, если он используется на сервере. Для этого достаточно в соответствующем разделе конфигурационного файла изменить значение параметра enabled с false на true.

После изменений конфигурации необходимо перезапустить сервис fail2ban:

$ sudo service fail2ban restart

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

Для проверки числа попыток подбора паролей можно воспользоваться командой:

$ zcat /var/log/auth.log* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c

Сейчас, на моем сервере, она выдает следующее:

1818 Sep 6
 183 Sep 7
 118 Sep 9
 596 Sep 10
   7 Sep 13
   5 Sep 15
   7 Sep 16
  13 Sep 17
   4 Sep 18
   7 Sep 19
   6 Sep 20
  14 Sep 22
   3 Sep 23
   9 Sep 24
   6 Sep 25
   3 Sep 26

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

UFW

Помимо защиты сервера от непосредственного проникновения, неплохо его защитить его от посягательств на запущенные сервисы. Можно воспользоваться проверенным временем iptables. Куда проще воспользоваться утилитой UFW, которая используется в последних версиях Ubuntu по умолчанию. Она ставится по умолчанию вместе с самой системой и находится в отключенном состоянии. Все что нужно – это прописать необходимые правила и активировать фаервол.

UFW – это надстройка над iptables, которая позволяет на очень простом языке задавать правила netfilter ядра операционной системы. Синтаксис очень прост. По умолчанию разрешаются все исходящие соединения и блокируются все входящие. Проходящие пакеты запрещены по умолчанию.

$ sudo ufw status

для проверки текущего состояния фаервола и активных правил.

$ sudo ufw allow 80

для разрешения входящих соединений по 80 порту tcp/udp. Есть возможность указания используемого протокола, например 80/tcp.

Помимо указания портов, есть возможность использования шаблонов приложений, которые можно посмотреть командой

$ sudo ufw app list

И, соответственно, для включения нужного профиля, используется команда:

$ sudo ufw allow Nginx Full

Перед включением фаервола необходимо как минимум прописать разрешающее правило для SSH-соединений. Сделать это можно несколькими способами:

$ sudo ufw allow OpenSSH

или

$ sudo ufw allow 22/tcp

Теперь активируем фаервол:

$ sudo ufw enable

И расслабляемся. Теперь SSH-соединения защищены от атак перебором пароля. И сам сервер прикрыт от воздействия на опасные сервисы.