Введение
Вот вам отличный новый сервер Linux… Было бы жаль, если бы с ним что-то случилось. Он может работать сразу из коробки, но перед запуском в эксплуатацию необходимо выполнить 10 шагов для обеспечения безопасности конфигурации. Подробности этих шагов могут различаться в зависимости от дистрибутива, но общая концепция применима к любому дистрибутиву Linux. Выполнив эти шаги на новых серверах, вы можете гарантировать, что они будут хотя бы базово защищены от наиболее распространённых кибератак.
1 – Конфигурация пользователя
Первое, что вам нужно сделать, если это ещё не предусмотрено настройками вашей операционной системы, — это изменить пароль root. Это должно быть очевидно, но, как ни странно, при настройке сервера это можно упустить из виду. Пароль должен быть длиной не менее 8 символов и содержать сочетание заглавных и строчных букв, цифр и специальных символов. Кроме того, если вы планируете использовать локальные учётные записи, следует настроить политику паролей с указанием возраста, блокировки, истории и сложности. В большинстве случаев следует полностью отключить учетные записи root и создать не-root учётные записи с доступом sudo для тех, кому требуются повышенные привилегии.
2 – Конфигурация сети
Одна из самых простых настроек, которую вам необходимо выполнить, — это обеспечение сетевого подключения путем назначения серверу IP-адреса и имени хоста. Для большинства серверов рекомендуется использовать статический IP-адрес, чтобы клиенты всегда могли найти ресурс по одному и тому же адресу. Если в вашей сети используются VLAN, продумайте, насколько изолирован серверный раздел и где его лучше всего разместить. Если вы не используете IPv6, отключите его. Настройте имя хоста, домен и информацию о DNS-сервере. Для обеспечения избыточности следует использовать два или более DNS-сервера, а также протестируйте nslookup, чтобы убедиться в корректной работе разрешения имен.
3 – Управление пакетами
Вероятно, вы настраиваете новый сервер для определённой цели, поэтому установите все необходимые пакеты, если они не входят в используемый вами дистрибутив. Это могут быть служебные пакеты, такие как PHP, MongoDB, ngnix, или вспомогательные пакеты, например, Pear. Аналогично, все лишние пакеты, установленные в вашей системе, следует удалить, чтобы минимизировать нагрузку на сервер. Всё это следует сделать через систему управления пакетами вашего дистрибутива, например, Yum или apt, для упрощения управления в будущем.
4 – Установка и настройка обновлений
После установки необходимых пакетов на сервер необходимо убедиться, что всё обновлено. Это касается не только установленных пакетов, но и ядра и пакетов по умолчанию. Если вам не нужна определённая версия, всегда используйте последнюю рабочую версию для обеспечения безопасности системы. Обычно ваша система управления пакетами предоставляет последнюю поддерживаемую версию. Также следует настроить автоматическое обновление в системе управления пакетами, если это подходит для сервисов, размещенных на этом сервере.
5 – Конфигурация NTP
Настройте сервер для синхронизации времени с NTP-серверами. Это можно сделать, если в вашей среде есть внутренние NTP-серверы или внешние серверы времени, доступные любому пользователю. Важно предотвратить отклонение часов сервера от реального времени. Это может вызвать множество проблем, включая проблемы аутентификации, когда отклонение времени между сервером и инфраструктурой аутентификации измеряется до предоставления доступа. Это, должно быть, простой способ, но надёжная инфраструктура критически важна.
6 – Брандмауэр и iptables
В зависимости от вашего дистрибутива таблицы могут быть полностью заблокированы и предлагать открыть только то, что вам нужно, но независимо от конфигурации по умолчанию, всегда проверяйте и проверяйте, настроено ли всё так, как вам нужно. Всегда используйте принцип наименьших привилегий и открывайте только те порты, которые необходимы для служб на этом сервере. Если ваш сервер находится за выделенным брандмауэром, обязательно запретите всё, кроме того, что необходимо. Если ваш iptables/брандмауэр по умолчанию настроен на ограничения, не забудьте открыть всё, что вам нужно для работы сервера!
7 – Обеспечение безопасности SSH
SSH — основной метод удалённого доступа в дистрибутивах Linux, поэтому он должен быть надёжно защищён. Вам следует отключить возможность удалённого доступа по SSH для пользователя root, даже если вы отключили учётную запись. Таким образом, даже если по какой-то причине права root на сервере включены, удалённая эксплуатация всё равно будет невозможна. Вы также можете ограничить SSH определёнными диапазонами IP-адресов, если у вас есть фиксированный набор клиентских IP-адресов, с которых происходит подключение. При желании вы можете изменить порт SSH по умолчанию, чтобы скрыть его, но, честно говоря, простое сканирование покажет новый открытый порт любому, кто захочет его найти. Наконец, вы можете полностью отключить аутентификацию по паролю и использовать аутентификацию на основе сертификатов, чтобы ещё больше снизить вероятность эксплуатации SSH.
8 – Конфигурация демона
Вы очистили все пакеты, но также важно настроить автоматический запуск нужных программ при перезагрузке. Обязательно завершите работу всех ненужных демонов. Один из ключей к безопасности сервера — максимально сократить количество активных процессов, чтобы атаке были доступны только те области, которые требуются приложениям. После этого необходимо максимально усилить защиту оставшихся служб для обеспечения отказоустойчивости.
9 – SELinux и дальнейшее укрепление безопасности
Если вы когда-либо использовали дистрибутив Red Hat, вы, возможно, знакомы с SELinux — инструментом защиты ядра, который защищает систему от различных действий. SELinux отлично защищает от несанкционированного использования и доступа к системным ресурсам. Он также отлично справляется с взломом приложений, поэтому обязательно протестируйте свою конфигурацию с включённым SELinux и используйте журналы, чтобы убедиться, что ничего легитимного не блокируется. Кроме того, вам следует изучить приложения для защиты, такие как MySQL или Apache, поскольку у каждого из них есть свой набор рекомендаций.
10 – Вход
Наконец, убедитесь, что нужный уровень журналирования включён и у вас достаточно ресурсов для этого. В конечном итоге вам придётся решать проблемы с этим сервером, поэтому сделайте себе одолжение прямо сейчас и создайте структуру журналирования, необходимую для быстрого решения проблем. Большинство программ имеют настраиваемые журналы, но вам придётся методом проб и ошибок найти правильный баланс между нехваткой и недостатком информации. Существует ряд сторонних инструментов журналирования, которые могут помочь во всём, от агрегации до визуализации, но сначала следует оценить каждую среду с учётом её потребностей. Затем вы сможете найти инструменты, которые помогут вам заполнить эти данные.
Результат
Выполнение каждого из этих шагов может занять некоторое время, особенно в первый раз. Но, создав процедуру первоначальной настройки сервера, вы можете гарантировать отказоустойчивость новых машин в вашей среде. Невыполнение любого из этих шагов может иметь очень серьёзные последствия, если ваш сервер когда-либо станет целью атаки. Соблюдение этих правил не гарантирует безопасность (утечки данных случаются), но значительно усложняет задачу злоумышленникам, и для этого требуется определённый уровень мастерства.









