У вас есть хороший новый Linux-сервер… было бы обидно, если бы с ним что-то случилось. Он может нормально работать из коробки, но прежде чем запустить его в работу, необходимо выполнить 10 шагов, чтобы убедиться, что он надежно настроен. Детали этих шагов могут варьироваться от дистрибутива к дистрибутиву, но концептуально они применимы к любой версии Linux. Включив эти шаги на новых серверах, вы можете убедиться, что они имеют хотя бы базовую защиту от наиболее распространенных кибератак.
Купить оптимальный сервер можно в интернет-магазине galtsystems, по ссылке: https://galtsystems.com/catalog/platform/, Серверы в МСК по оптимальным ценам.
Самое первое, что вам нужно будет сделать, если это не было частью настройки вашей ОС, это изменить пароль root. Это должно быть самоочевидно, но может быть неожиданно упущено из виду во время обычной настройки сервера. Пароль должен состоять не менее чем из 8 символов, используя комбинацию прописных и строчных букв, цифр и символов. Вы также должны настроить политику паролей, которая определяет требования к устареванию, блокировке, истории и сложности, если вы собираетесь использовать локальные учетные записи. В большинстве случаев вам следует полностью отключить пользователя root и создать непривилегированные учетные записи пользователей с доступом sudo для тех, кому требуются повышенные права.
Одна из самых простых конфигураций, которые вам нужно будет выполнить, — это включить сетевое подключение, назначив серверу IP-адрес и имя хоста. Для большинства серверов вы захотите использовать статический IP-адрес, чтобы клиенты всегда могли найти ресурс по одному и тому же адресу. Если в вашей сети используются сети VLAN, подумайте, насколько изолирован сегмент сервера и где он лучше всего подойдет. Если вы не используете IPv6, отключите его. Задайте имя хоста, домен и информацию о DNS-сервере. Для резервирования следует использовать два или более DNS-серверов, и вам следует протестировать nslookup, чтобы убедиться, что разрешение имен работает правильно.
Предположительно, вы настраиваете свой новый сервер для определенной цели, поэтому убедитесь, что вы установили все пакеты, которые вам могут понадобиться, если они не являются частью используемого вами дистрибутива. Это могут быть пакеты приложений, такие как PHP, MongoDB, ngnix или вспомогательные пакеты, такие как pear. Аналогичным образом, все посторонние пакеты, установленные в вашей системе, должны быть удалены, чтобы уменьшить площадь сервера. Все это должно быть сделано с помощью решения для управления пакетами вашего дистрибутива, такого как yum или apt, для упрощения управления в будущем.
После того, как на вашем сервере установлены нужные пакеты, вы должны убедиться, что все обновлено. Не только установленные вами пакеты, но также пакеты ядра и по умолчанию. Если у вас нет требований к конкретной версии, вы всегда должны использовать последнюю производственную версию для обеспечения безопасности вашей системы. Обычно ваше решение для управления пакетами предоставляет самую последнюю поддерживаемую версию. Вам также следует рассмотреть возможность настройки автоматических обновлений в инструменте управления пакетами, если это работает для служб, которые вы размещаете на этом сервере.
Настройте свой сервер на синхронизацию его времени с серверами NTP. Это могут быть внутренние серверы NTP, если они есть в вашей среде, или внешние серверы времени, доступные для всех. Важно предотвратить смещение часов, когда часы сервера отклоняются от фактического времени. Это может вызвать множество проблем, включая проблемы с аутентификацией, когда разница во времени между сервером и инфраструктурой аутентификации измеряется перед предоставлением доступа. Это должно быть простой настройкой, но это критическая часть надежной инфраструктуры.
В зависимости от вашего дистрибутива iptables могут быть уже полностью заблокированы и требовать, чтобы вы открывали то, что вам нужно, но независимо от конфигурации по умолчанию, вы всегда должны взглянуть на нее и убедиться, что она настроена так, как вы хотите. Не забывайте всегда использовать принцип наименьших привилегий и открывать только те порты, которые вам абсолютно необходимы для служб на этом сервере. Если ваш сервер находится за каким-то выделенным брандмауэром, обязательно запретите все, кроме того, что там необходимо. Предполагая, что ваш iptables / брандмауэр по умолчанию ограничен, не забудьте открыть то, что вам нужно, чтобы ваш сервер выполнял свою работу!
SSH является основным методом удаленного доступа к дистрибутивам Linux и поэтому должен быть надлежащим образом защищен. Вы должны отключить возможность удаленного доступа root к SSH, даже если вы отключили учетную запись, чтобы на случай, если root по какой-либо причине будет включен на сервере, он все равно не будет доступен для удаленного использования. Вы также можете ограничить SSH определенными диапазонами IP-адресов, если у вас есть фиксированный набор IP-адресов клиентов, которые будут подключаться. При желании вы можете изменить SSH-порт по умолчанию, чтобы “скрыть” его, но, честно говоря, простое сканирование покажет новый открытый порт любому, кто захочет его найти. Наконец, вы можете полностью отключить аутентификацию по паролю и использовать аутентификацию на основе сертификатов, чтобы еще больше снизить вероятность использования SSH.
Вы очистили свои пакеты, но также важно настроить автозапуск нужных приложений при перезагрузке. Обязательно отключите все демоны, которые вам не нужны. Одним из ключей к защищенному серверу является максимальное сокращение активного пространства, чтобы для атаки были доступны только те области поверхности, которые требуются приложениям. Как только это будет сделано, оставшиеся службы должны быть максимально усилены для обеспечения отказоустойчивости.
Если вы когда-либо использовали дистрибутив Red Hat, вы, возможно, знакомы с SELinux, средством повышения надежности ядра, которое защищает систему от различных операций. SELinux отлично подходит для защиты от несанкционированного использования и доступа к системным ресурсам. Он также отлично подходит для взлома приложений, поэтому обязательно протестируйте свою конфигурацию с включенным SELinux и используйте журналы, чтобы убедиться, что ничего законного не блокируется. Помимо этого, вам необходимо изучить возможность повышения надежности любых приложений, таких как MySQL или Apache, поскольку у каждого из них будет набор рекомендаций для подражания.
Наконец, вы должны убедиться, что включен необходимый вам уровень ведения журнала и что у вас достаточно ресурсов для этого. В конечном итоге вам придется устранять неполадки на этом сервере, поэтому сделайте себе одолжение сейчас и создайте структуру ведения журнала, необходимую для быстрого решения проблем. Большинство программ имеют настраиваемое ведение журнала, но вам потребуется несколько проб и ошибок, чтобы найти правильный баланс между недостаточным количеством информации и ее избытком. Существует множество сторонних инструментов ведения журнала, которые могут помочь во всем, от агрегирования до визуализации, но сначала необходимо учитывать потребности каждой среды. Затем вы можете найти инструмент (ы), который поможет вам их заполнить.
Реализация каждого из этих шагов может занять некоторое время, особенно в первый раз. Но, установив процедуру первоначальной настройки сервера, вы можете гарантировать, что новые машины в вашей среде будут устойчивыми. Невыполнение любого из этих шагов может привести к довольно серьезным последствиям, если ваш сервер когда-либо станет объектом атаки. Их выполнение не гарантирует безопасность — случаются утечки данных, — но это значительно усложняет задачу злоумышленникам и потребует определенного мастерства для преодоления.