Облачные вычисления резко изменили сценарий сервера. Многие платформы предоставляют бесплатные облачные серверы Linux, и вы можете развернуть свои серверы Linux за считанные минуты с помощью этих облачных платформ.
Когда вы запускаете новый сервер, особенно если он виден в Интернете, он будет немедленно доступен для злоумышленников, которые проверяют открытые серверы на предмет неправильной конфигурации и уязвимостей с помощью своих автоматизированных сценариев ботов.
После установки сервера Linux вы должны сделать несколько вещей, чтобы убедиться, что ваш сервер не взломан.
871 неудачных попыток входа в систему и 54 заблокированных IP-адресов. Весь трафик от неавторизованных людей или скриптов, пытающихся войти на наш сервер.
Несколько важных первых шагов помогут вам защитить ваши новые сборки сервера от компрометации.
Мы рассмотрели здесь два самых популярных дистрибутива серверов Linux: Ubuntu и CentOS/Red Hat. Пожалуйста, проверьте, какой Linux вы используете.
Большинство советов здесь являются общими и должны быть применимы к другим Linux, если не указано иное.
Вот что мы рекомендуем вам проверить, чтобы обеспечить безопасность вашего сервера Linux.
Root всемогущ, и вам не нужны все время права root.
root также является допустимым именем пользователя почти в каждой системе Linux. Это означает, что если включена удаленная проверка подлинности, половина работы злоумышленника — получение действительного имени пользователя — выполнена.
Кроме того, если злоумышленник может войти в систему с правами root, никаких дополнительных разрешений для выполнения каких-либо действий в системе не требуется.
По этим причинам лучше всего войти в систему как пользователь без полномочий root и отключить вход в систему с правами root для удаленного доступа с помощью SSH (объяснено позже).
Мы предполагаем, что вы вошли в систему как root.
Добавьте нового пользователя с помощью команды useradd. Замените <username> любым именем пользователя по вашему выбору.
useradd <username>
Установите пароль с помощью команды passwd для нового добавленного пользователя:
passwd <username>
Поскольку вы будете входить в эту учетную запись удаленно с помощью Secure Shell (SSH), вы захотите иметь возможность выполнять привилегированные действия, требующие root-доступа. Это означает, что у учетной записи должны быть разрешения sudo.
Процесс создания пользователя SUDO на Ubuntu и CentOS похож, но группа, которую вы будете добавлять пользователя отличается.
Вы должны войти в систему как root, чтобы выполнить этот шаг.
На CentOS и Red Hat, то группа wheel является стандартной группой, используемой для предоставления пользователям Sudo разрешения. Добавьте пользователя в эту группу с помощью команды usermod :
usermod -aG wheel <username>
Ubuntu использует группу sudo для управления пользователями sudo.
usermod -aG sudo <username>
Важно, чтобы для SSH была включена аутентификация на основе ключей, чтобы он работал, когда мы отключаем аутентификацию на основе пароля.
Взломанные, скомпромитированные пароли — очень распространенный способ для злоумышленников получить доступ к системам. Целевой фишинг, спам-рассылка, которая побуждает ничего не подозревающего пользователя предоставить учетные данные, — это всего лишь один из распространенных методов получения учетных данных.
Если кто-то получит ваше имя пользователя и пароль в системе, в которой включена аутентификация на основе ключей, а аутентификация на основе пароля отключена для удаленного доступа через SSH, украденный пароль больше не предоставит им доступ к этому серверу.
Включив аутентификацию на основе ключа и на более позднем этапе отключив аутентификацию на основе пароля, вы значительно снизите свои шансы на использование SSH против вас. Это один из простейших способов обезопасить SSH-сервер.
Полагаем, у вас уже включен SSH на вашем сервере. Что вам нужно сделать, так это сгенерировать ключи SSH на вашем персональном компьютере (с которого вы войдете на сервер).
Получив ключи SSH, вы должны добавить открытый ключ в authorized_keys на нашем сервере для пользователя без полномочий root.
Внимание! Не теряйте ssh-ключи от вашего персонального компьютера. Сделайте резервную копию этих ключей. Если вы отключите аутентификацию на основе пароля позже и потеряете ключи SSH, вы будете заблокированы на своем собственном сервере.
Перед тем как включить брандмауэр в своей системе, вы должны убедиться, что SSH разрешен. В противном случае вы можете быть заблокированы в своей системе при удаленном доступе к ней.
Ubuntu использует несложный брандмауэр ( ufw ), а CentOS/Red Hat использует firewalld.
В CentOS/Red Hat используйте команду firewall-cmd:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
В Ubuntu используйте команду ufw следующим образом:
sudo ufw allow ssh
Брандмауэр гарантирует, что на ваш сервер может поступать только специально разрешенный трафик. Если злоумышленник получает вредоносную программу на вашем сервере и пытается установить связь через запрещенный порт или если служба случайно включена, ее нельзя использовать для компрометации вашего сервера или дальнейшей его компрометации.
В системах CentOS/Red Hat включите службу firewalld systemd :
sudo systemctl start firewalld sudo systemctl enable firewalld
В Ubuntu используйте эту команду:
sudo ufw enable
Один из способов, которым злоумышленник может взломать ваш сервер, — это ошибки в программном обеспечении, на котором работают ваши службы. Баннер может отображать информацию о том, какую версию OpenSSH или операционной системы вы используете. Нет смысла давать информацию плохим парням. Заставьте их работать на это!
По умолчанию в CentOS/Red Hat не отображается баннер, поэтому никаких действий не требуется.
В Ubuntu вы можете использовать:
sudo echo "DebianBanner no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
Хотя администраторы нередко используют пересылку SSH для шифрования трафика, который в противном случае может передавать открытый текст, если вы не используете его, вам следует отключить его. Пересылка может использоваться злоумышленником для шифрования трафика, чтобы вам было труднее его просматривать, или для получения трафика, который в противном случае был бы заблокирован для передачи с использованием авторизованного порта и службы.
В CentOS/Red Hat добавьте следующее//etc/ssh/sshd_config:
DisableForwarding yes
В Ubuntu добавьте DisableForwarding yes в файл 10-my-sshd-settings.conf:
sudo echo "DisableForwarding yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
Практически в каждой системе Linux есть пользователь root. Разрешение этой учетной записи использовать SSH сопряжено с двумя рисками.
Отключение использования учетной записи root для SSH-подключений сводит на нет оба риска.
На CentOS/Red Hat , найдите строку PermitRootLogin yes в//etc/ssh/sshd_config и изменить его на:
PermitRootLogin no
В Ubuntu добавьте PermitRootLogin no в файл 10-my-sshd-settings.conf:
sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
Перед отключением аутентификации по паролю в SSH убедитесь, что у вас настроена и протестирована аутентификация на основе ключей, как указано в шаге 3.
Отключение аутентификации на основе пароля блокирует злоумышленников, которые пытаются угадать ваш пароль или которые с помощью социальной инженерии заставили вас ввести ваши учетные данные или украли их любым способом, от доступа на ваш сервер с помощью SSH.
Злоумышленник должен иметь ваш открытый и закрытый ключи, чтобы попасть на ваш сервер.
На CentOS/Red Hat, найдите строку PasswordAuthentication yes в //etc/ssh/sshd_config и изменить его на:
PasswordAuthentication no
В Ubuntu добавьте PasswordAuthentication no в файл 10-my-sshd-settings.conf:
sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
rhosts связан с rsh, устаревшим протоколом, замененным защищенной оболочкой. Если пользователь пытается создать вредоносный файл rhosts, этот параметр явно игнорирует его.
На CentOS/Red Hat , найдите строку #IgnoreRhosts yes в //etc/ssh/sshd_config и изменить его на:
IgnoreRhosts yes
В Ubuntu добавьте IgnoreRhosts yes в файл 10-my-sshd-settings.conf:
sudo echo "IgnoreRhosts yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
Fail2ban следит за файлами журналов для настроенных служб, таких как SSH, и блокирует IP-адреса злоумышленников от подключения к вашему серверу после заданного количества попыток в течение заданного времени.
Если злоумышленник сделает более 5 неудачных попыток в течение трех часов, его IP-адрес будет заблокирован, например, на 12 часов.
Fail2ban можно настроить для защиты других служб, таких как веб-сайты, работающие на веб-сервере nginx или веб-сервере Apache.
Вы можете следовать нашему подробной статьи по использованию Fail2Ban.
Как упоминалось ранее, устаревшая служба с эксплойтом может позволить злоумышленнику проникнуть на ваш сервер без необходимости даже входа в систему, если уязвимость достаточно серьезна! Чтобы снизить этот риск, крайне важно быстро применять обновления безопасности.
Для установки сервера Ubuntu по умолчанию включены автоматические обновления безопасности, поэтому никаких действий с обновлениями не требуется.
Чтобы настроить автоматические обновления в CentOS/Red Hat, вы установите приложение под названием dnf-automatic и включите для него таймер, используя следующие команды:
sudo dnf upgrade sudo dnf install dnf-automatic -y sudo systemctl enable --now dnf-automatic.timer
Вы можете проверить таймер, запустив:
sudo systemctl status dnf-automatic.timer
Найдите слово «loaded» в строке «Loaded:» и «active» в строке «Active:».
В зависимости от вашего личного вкуса и того, для чего вы обычно настраиваете свои серверы, может быть больше или меньше шагов.
Это лишь некоторые из самых простых проверок безопасности, но то, что вы должны сделать после установки сервера Linux.
Выполнение этих действий вручную на нескольких серверах может быть болезненным и излишне трудоемким.
Это некоторые из рекомендаций. Как насчет вас? Есть что добавить к этому списку? Предоставьте свое предложение в разделе комментариев.
Настроить базовый firewall.
Ufw самый простой для начала.
И неплохо бы сделать минимум список правил и описанием для чего каждое из них.