17.06.2020

Как обеспечить безопасность VPS-сервера?

Стали владельцем VPS-сервера? Поздравляем с полезным приобретением! Но пить шампанское и праздновать открытие нового веб-сайта или приложения еще рано. Ведь хакеры ежедневно присматривают себе новых жертв, да и любопытные школьники постоянно ищут свежие площадки для применения кидди-скриптов.

В этой статье мы рассмотрим несложные методы, позволяющие защитить Linux и Windows-системы, и оставить хакеров и всех любопытных без добычи.

Общие советы

Регулярно обновляйте программное обеспечение
Регулярная установка обновлений и новейших версий программного обеспечения помогает обеспечить защиту сервера от уязвимостей, пока еще не известных хакерам, но о которых уже известно разработчикам. Для Windows рекомендуем настроить автоматическую загрузку и установку важных обновлений через «Центр обновления»:

В Linux для систем на основе CentOS можно использовать пакет yum-cron, который будет автоматически скачивать и устанавливать обновления, или пакет unattended-upgrades для систем на основе Ubuntu.

В системах на основе FreeBSD можно настроить ежедневную автоматическую проверку и загрузку патчей безопасности при помощи команды freebsd-update с параметром cron. Эта команда проверяет и скачивает обновления, но не устанавливает их автоматически. После скачивания пользователь получит электронное письмо с уведомлением и сможет установить обновления с помощью команды freebsd-update install.

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

Используйте ПО только из проверенных источников
Несмотря на распространенность open-source продуктов, перед установкой рекомендуем предварительно изучить найденные в них уязвимости, а скачивать такие программы советуем только с официальных сайтов. Неофициальные сайты, даже находящиеся в первой десятке поисковой выдачи Google, могут содержать вредоносные скрипты. Установка уязвимого или зараженного софта часто является причиной проблем с безопасностью инфраструктуры.

Знайте и ограничивайте свои сервисы
Деактивировав неиспользуемые сервисы и неиспользуемых демонов, можно достаточно сильно усилить безопасность виртуального сервера. Таким образом вы сократите количество возможных атак, поскольку атаковать неработающую службу или демона невозможно. Каждый включенный сервис нужно рассматривать как потенциальную угрозу. Если какая-то потенциально уязвимая служба, например, FTP, нужна на некоторое время, не забудьте после использования отключить ее. Кроме того, можно настроить брандмауэр таким образом, чтобы доступ к такой службе мог осуществляться только с безопасных адресов. Для этого можно использовать списки IP-адресов или доменных имен.

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

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

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

Резервное копирование
Не забудьте включить резервное копирование виртуальной машины. В случае успешной атаки злоумышленников восстановить резервную копию в безопасной среде (то есть без подключения к интернету) будет довольно легко. После же восстановления следует исключить возможность повторного взлома системы.

Используйте SFTP или SCP вместо FTP
FTP — это небезопасный протокол. С помощью этого протокола все данные отправляются в виде обычного текста, а это значит, что при прослушке соединения между сервером и локальной машиной можно увидеть и логин и пароль подключающегося пользователя. Лучше использовать безопасную альтернативу данного протокола — протокол SFTP. SFTP работает аналогично протоколу FTP, но при этом защищен протоколом SSH. А для подключения UNIX-машины к серверу Linux или FreeBSD еще лучше использовать протокол SCP. Этот протокол также использует SSH.

Обеспечение безопасности Windows Server 2008/2012

Рассмотрим наиболее используемые способы защиты виртуальных серверов на основе Windows Server.

Уделите должное внимание настройке Firewall
Для виртуальных серверов Microsoft Windows, доступных через Интернет и не имеющих дополнительных шлюзов безопасности, брандмауэр Windows является единственным инструментом защиты подключений к серверу. 

Отключение неиспользуемых правил позволит сократить количество портов, прослушивающих внешний трафик, что снизит вероятность атаки на эти порты. Например, для работы стандартного веб-сервера достаточно открыть порты 80 и 443.

Для открытых портов лучше ограничить источники подключений с помощью списка IP-адресов, c которых будет происходить подключение, через правила брандмауэра Windows:

Ниже представлен список портов, доступ к которым лучше ограничить только кругом клиентов, внесенных в список белых IP:

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

Рекомендуем сменить имя пользователя для стандартной учетной записи Администратор или Adminsitrator. Для этого выполните следующие шаги:

1. В оснастке «Редактор локальной политики безопасности» выберите «Локальные политики» – «Параметры безопасности» – «Учетные записи» — «Переименование учетной записи администратора».

2. Во вкладке «Параметр локальной безопасности» измените имя учетной записи администратора на никому неизвестное имя.

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

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

Не предоставляйте общий доступ к директориям без ввода пароля. Разграничивайте права общего доступа
Не разрешайте подключение к общим папкам сервера с помощью анонимного доступа. Даже если файлы в общем доступе не имеют никакой ценности, они смогут стать лазейкой, через которую злоумышленники получат возможность дальнейшей атаки системы. Значительно проще установить ограниченные права пользователям, которым не требуется полный доступ, чем следить за тем, чтобы какой-либо аккаунт не был взломан и использован для атаки.

Включите автоотключение сессий при бездействии
Включите запрос ввода пароля пользователя при подключении к сессии после установленного времени ее бездействия. Это исключит возможность простого входа в случае, когда пользователь забыл закрыть RDP-клиент на чужом персональном компьютере. Для конфигурации этой опции вы можете воспользоваться оснасткой «Конфигурация узла сеансов удаленных рабочих столов»:

Используйте Мастер настройки безопасности
Мастер настройки безопасности (SCW — Security Configuration Wizard) позволяет создавать файлы политики безопасности, которые затем можно перенести на различные серверы вашей инфраструктуры. Эти политики включают в себя правила использования сервисов, конфигурацию общих параметров системы и правил брандмауэра.

Корректно настройте групповые политики безопасности
Если вы используете групповые политики Active Directory, необходимо время от времени проводить их ревизию и повторную конфигурацию. Этот инструмент является одним из основных способов обеспечения безопасности инфраструктуры Windows.

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

Безопасность служб удаленных рабочих столов (RDP)
Протокол RDP используется для удаленного подключения к системам Windows и на сегодняшний день считается достаточно безопасным. Тем не менее безопасность этого протокола можно повысить еще больше, при помощи следующих методов.

1. Блокировка RDP-подключений для учетных записей с пустым паролем
Для блокировки подключений к удаленным рабочим столам, пользователям, для которых не указан пароль, можно использовать оснастку «Локальная политика безопасности». В ней следует установить параметр: «Учетные записи: Разрешить использование пустых паролей только при консольном входе».

2. Смена стандартного порта Remote Desktop Protocol
Смена порта RDP, используемого по умолчанию, является хорошей защитой от исследования well-known портов. Для этого следует при помощи редактора реестра (regedit) изменить параметр HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp Port Number:

Не забудьте создать разрешающее правило для этого порта в Брандмауэре Windows. После изменения порта необходимо перезагрузить сервер.

Для подключения к серверу через порт, установленный вручную, в программе «Подключение к удаленному рабочему столу» после IP-адреса или доменного имени сервера следует прописать нужный порт:

Защита RDP-сессии с помощью SSL/TLS
Если вы подключаетесь к RDP, не используете VPN-подключение и вам нужен безопасный канал связи, то можно настроить SSL/TLS-туннелированные соединение. 

Опцию RDP через TLS можно включить через групповую политику безопасности сервера удаленных рабочих столов, где необходимо активировать опцию запроса определенного уровня безопасности для удаленных подключений. Рекомендуемое значение этой опции — SSL (TLS 1.0).

Обеспечение безопасности в Linux

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

Рассмотрим наиболее распространенные меры безопасности, которые необходимо принять в серверной среде Linux.

Блокирование доступа с помощью брандмауэра
Самая простая мера защиты — это активация и настройка брандмауэра. В мире Linux существует большое количество брандмауэров:

Безопасное удаленное подключение к системе с помощью SSH
Стандартный и достаточно безопасный способ подключения к виртуальному серверу Linux — это использование протокола SSH. Этот протокол позволяет выполнить сквозное шифрование, передать незашифрованный трафик по защищенному соединению, использовать X-forwarding (графический интерфейс пользователя по сетевому соединению) и многое другое.

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

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

Метод входа с SSH-ключами подразумевает создание надежной пары ключей для аутентификации:

Пароль или SSH-ключи

Блокировка вредоносных IP-адресов с помощью fail2ban
Система fail2ban позволяет отслеживать журналы регистрации входа на сервер, что позволяет отметить адреса, с которых осуществлялось большое количество неудачных входов. Такие события позволяют предположить, что с этих адресов осуществляется попытка подобрать пароль. Обнаружив такие попытки, fail2ban создает правило брандмауэра, которое на время не разрешает подключение с этих адресов.

Внедрение IDS/IPS для обнаружения вторжений на сервер
Система обнаружения вторжений, также известная как IDS, заносит в каталог конфигурации сведения о файле в заведомо исправном состоянии. Затем она сравнивает записанные данные с целью обнаружить измененные файлы или конфигурации. Кроме того, такие системы анализируют сетевой трафик, ищут там сигнатуры атак и автоматически блокируют такие попытки.

Для защиты одного хоста можно использовать систему Samhain. Эта система выпускается под open-source лицензией и использует несколько методов анализа, позволяющих полностью охватить все события, происходящие в системе:

Разумеется, мы рассмотрели только небольшое количество возможностей защиты виртуального сервера от атак и не рассматривали вопросы защиты веб-приложений и веб-серверов. Но они заслуживают отдельной статьи.