Правильная конфигурация для обеспечения безопасности вашего сервера

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

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

Минимальная установка и надежный пароль

Еще до того, как вы приступите к реальным мерам предосторожности и настроите свой сервер безопасным образом, вы можете повлиять на будущий потенциал безопасности вашего веб-проекта. Независимо от того, выбираете ли вы систему Windows или Linux, при установке действует следующий принцип: Сервер должен содержать только то программное обеспечение, которое необходимо для выполнения его задач. Причина в том, что любое установленное приложение представляет собой потенциальный риск для безопасности и может негативно повлиять на производительность. Чтобы предложить злоумышленникам как можно меньше возможностей, следует устанавливать или активировать только необходимые компоненты системы и обращаться только к проверенному программному обеспечению сторонних производителей.

После установки необходимо сначала установить пароль root (системы Linux). Стандартно значение не задается, а учетная запись администратора также блокируется до тех пор, пока вы не сделаете соответствующую запись. После установки операционная система обычно автоматически предлагает создать учетную запись пользователя, включая пароль, которая является точкой доступа root. Если вы арендовали сервер у провайдера и получили существующий root-логин, необходимо изменить пароль. Для этого необходимо войти на сервер через SSH (из системы Linux) или PuTTY (из системы Windows) и ввести следующую команду в соответствующем терминале для входа root для изменения пароля:

passwd

После этого вы можете указать свой пароль, который затем потребует проверки. Обязательно выбирайте максимально длинный пароль, не только буквы, но и специальные символы и цифры. Кроме того, рекомендуется использовать менеджер паролей для сохранения пароля, чтобы вы могли получить к нему доступ в любое время. Затем попробуйте подключиться к новому root-логину. Если все сделано правильно, вы можете отключить SSH-соединение, установленное в самом начале.

Совет

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

Изменение портов SSH

Для доступа к серверу через SSH по умолчанию используется порт 22. Он автоматически вводится при переустановке системы. Преступники, которые ищут бреши в системе, в первую очередь будут проводить свои попытки атак (в основном автоматические попытки входа в систему) через этот порт. Просто выбрав другой порт для зашифрованных удаленных соединений, вы минимизируете риск нежелательного доступа. Для этого достаточно открыть файл конфигурации SSH sshd_config в текстовом редакторе по вашему выбору. В следующем примере кода файл вызывается стандартным редактором nano для Linux:

nano /etc/ssh/sshd_config

Найдите соответствующую строку и замените номер порта 22 на любое другое число. Однако помните, что существует еще несколько портов по умолчанию для других служб (например, порт 80 для HTTP), которые по возможности не следует использовать. Во-первых, посмотрите на список стандартных портов, который управляется IANA (Internet Assigned Numbers Authority) и может быть просмотрен на его официальной домашней странице.
Кроме того, вы можете просмотреть список в файле /etc/ services.

Примечание

Прежде чем изменения в sshd_config станут активными, необходимо перезапустить службу SSH. В Debian это делается с помощью команды /etc/init.d/ssh restart. Если вы пользователь Ubuntu, перезапустите службу с помощью команды ‘service ssh restart’.

Отключите вход по SSH для пользователей Root

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

useradd -g users -d /home/nutzer1 -m -s /bin/bash user1

С ее помощью вы можете создать учетную запись пользователя user1, которая также добавляется в группу пользователей (-g). Кроме того, домашний каталог/home/user1 назначается этому профилю пользователя (-d). Команда указывает оболочку bash в качестве оболочки по умолчанию (-s /bin/bash). Наконец, определите надежный пароль для этой новой учетной записи входа в систему:

passwd user1

Теперь проверьте, работает ли вход в систему с созданной учетной записью пользователя, и только в случае успеха приступайте к работе над проектом (заблокировав себя от учетной записи root).  Для этого вам понадобится SSH-конфигурация sshd_config, которую вы можете открыть в удобном для вас редакторе. Найдите запись ‘PermitRootLogin yes’ и замените ее на ‘PermitRootLogin no’. После перезапустите службу SSH через командную строку:

/etc/init.d/ssh restart (alternativ: service ssh restart)

Удаленный доступ к учетной записи root больше невозможен. Вы просто входите в систему с созданным вами профилем (профилями) пользователя и в любое время (после входа в систему) переходите на учетную запись root, если она вам снова понадобится.

su

Вы также можете использовать строку AllowGroups в конфигурационном файле, чтобы определить, каким пользователям разрешено подключаться к серверу через SSH. Для этого просто создайте группу (addgroup) и добавьте в нее нужных пользователей (adduser). Затем добавьте имя выбранной группы в sshd_config (например, AllowGroupsssh_user).

Примечание

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

Уведомление по электронной почте при входе в систему SSH

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

Соответствующий скрипт (здесь: /opt/shell-login.sh), который вы можете легко создать самостоятельно, должен содержать следующий код для этой цели:

#!/bin/bash

echo "Log in to $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
finger

Затем добавьте следующую строку в файл профиля /etc/profile:

/opt/shell-login.sh | mailx -s "SSH-Log-in to YOUR-HOSTNAME" mailadresse@example.com

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

chmod 755 /opt/shell-login.sh
Примечание

Если пользователь устанавливает SSH-соединение с помощью такой программы, как WinSCP, которая не выполняет полный вход в систему, описанный здесь сценарий оболочки не отправляет письмо!

Отключение неиспользуемых портов

Открытые порты, как правило, не представляют серьезной угрозы безопасности. Поскольку они необходимы для связи с отдельными службами и приложениями, важно, чтобы определенные порты были включены по умолчанию, например, порты 80 и 443 для HTTP или HTTPS соединений, или порт SSH по вашему выбору. Если вам удалось реализовать минимальную установку системы и получить доступ к небольшому количеству сторонних приложений, то количество других необходимых портов можно регулировать. Риск заключается в том, что эти открытые интерфейсы будут использоваться только в том случае, если отвечающие программы имеют бреши в защите, и преступники пользуются этим фактом. Опасность такого рода потенциальных атак возрастает в связи с увеличением количества используемых приложений.

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

Регулярное обновление программного обеспечения

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

Например, если вы хотите защитить сервер Windows, который получает автоматические обновления, вы можете задать определенные инструкции для процесса обновления в области Windows Update. Таким образом, вы можете настроить, когда и как регулярно проверять наличие обновлений, устанавливать ли обновления и когда система должна перезагружаться. Существуют специальные сценарии, такие как apt-listchanges или apticron для систем Linux, которые ежедневно информируют вас о новых доступных пакетах программного обеспечения и позволяют загрузить их. Другие сценарии, такие как неуправляемые обновления, будут загружать автоматическую установку.

Примечание

Убедитесь, что у вас есть измененный процесс обновления, который позволяет вам быть в курсе обновлений. Это позволит вам лучше понять и исправить ошибки, возникающие в результате процесса обновления.

Защита серверов Windows и Linux от атак методом перебора

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

Разумеется, для защиты от таких атак нет необходимости в сложном и дорогостоящем программном обеспечении. Поскольку каждая попытка входа в систему регистрируется, получает ответ и записывается в файлы журнала, простые инструменты анализа могут помочь.
Fail2ban (Linux-/POSIX-системы) или RdpGuard (Windows) проверяют соответствующие файлы журналов, обнаруживают необычное поведение и блокируют IP-адреса подозрительных пользователей.

Примечание

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

Безопасная настройка сервера: С самого начала установите средства мониторинга

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

Простой программой такого рода, которую можно быстро настроить, является Monit, которая легко устанавливается на многие дистрибутивы Linux через администратора пакетов. Это приложение с открытым исходным кодом (лицензия GNU-AGPL) выборочно отслеживает процессы, файлы, облака, хосты, программы или скрипты после запуска. Также можно отслеживать системные ресурсы — процессор, память и абсолютное использование системы. В конфигурационном файле Monit можно выбрать, какие значения или события генерируют уведомление по электронной почте. Если вам требуется больше информации, рекомендуется использовать программу мониторинга Nagios. Она несколько сложнее, но основная версия с открытым исходным кодом, и ее можно расширить с помощью различных плагинов. Виртуальная машина также может позволить запустить его на платформе Windows.

Доверие — хорошо, резервное копирование — лучше

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

Нет недостатка в мощных инструментах, которые могут поддержать вас не только при создании, но и при импорте резервной копии. Бесплатным приложением, о котором следует упомянуть, является программа синхронизации rsync, получившая свое название от одноименного протокола и доступная в различных формах практически для всех распространенных платформ (macOS, Windows, Linux). Этот инструмент поддерживает копию данных вашего сервера в актуальном состоянии, отмечая все изменения оригинала в режиме реального времени. Помимо общего резервного копирования сервера, программа также автоматически защищает базу данных.

Примечание

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

Оцените статью
cdelat.ru
Добавить комментарий