5 простых советов по обеспечению безопасности вашего сервера Linux

Серверы Linux являются основой современного Интернета. Сегодня почти каждый веб-сайт и сервис, доступный через веб-браузер, работает на дистрибутиве Linux. Здесь мы покажем вам, как вы можете защитить свой сервер Linux.
Содержание
- Удалите доступ Root по SSH
- Используйте публичную пару ключей для доступа по SSH
- Укрепите брандмауэр вашего сервера Linux
- Создайте нового пользователя для каждой службы
- Укрепите ядро вашего сервера
- Часто задаваемые вопросы
Примечание: Этот учебник был создан с использованием сервера Ubuntu, но он также должен применяться к другим дистрибутивам Linux, включая ваш локальный веб-сервер.
1. Удалите доступ Root по SSH
Один из самых быстрых способов защитить свой сервер Ubuntu — это обеспечить безопасность вашего SSH-демона, отключив доступ Root по SSH. По умолчанию сервер OpenSSH позволяет любому входящему соединению входить как пользователь root.
Например, выполнение следующей команды на уязвимом сервере приведет к появлению окна входа:

Это может стать проблемой, так как ваш сервер остается открытым и уязвимым для атак методом подбора паролей. Чтобы это исправить, войдите на свой сервер Linux и обновите файл конфигурации вашего SSH-демона.
Как только вы находитесь на своем сервере Linux, отредактируйте файл конфигурации SSH:
sudonano/etc/ssh/sshd_config
Найдите переменную PermitRootLogin в GNU Nano, нажав Ctrl + W и введя PermitRootLogin.

Измените значение PermitRootLogin с “yes” на “no”, затем сохраните файл, нажав Ctrl + o, затем Ctrl + x.
Чтобы применить новое значение, перезапустите SSH-демон сервера с помощью systemctl:
sudo systemctl restart ssh
2. Используйте публичную пару ключей для доступа по SSH
Еще один быстрый способ защитить ваш сервер Linux — это создать публичную пару ключей между вашим локальным и SSH-учетной записью. Этот подход пропускает процесс входа по паролю и автоматически аутентифицирует вас на удаленном сервере.
Чтобы создать публичную пару ключей, вам сначала нужно выполнить следующую команду на вашем локальном компьютере:
ssh-keygenПрограмма keygen спросит вас несколько деталей о ключе, который вы хотите создать. Вы можете спокойно оставить эти параметры по умолчанию, нажав Enter три раза.

Экспортируйте свой новый публичный ключ на ваш удаленный сервер, используя программу ssh-copy-id. Это простая утилита, которая подготавливает как локальные, так и удаленные машины для аутентификации по публичному ключу через SSH.
ssh-copy-id [email protected]
Войдите на вашу удаленную машину, выполнив следующую команду:
Также возможно дополнительно защитить ваш сервер Linux, удалив окно входа в SSH. Откройте файл конфигурации вашего демона с помощью следующей команды:
sudonano/etc/ssh/sshd_configНайдите переменную PasswordAuthentication и измените ее значение с “yes” на “no”.

Перезагрузите ваш SSH-демон, выполнив следующую команду:
sudo systemctl restart sshd3. Укрепите брандмауэр вашего сервера Linux
Помимо ограничения доступа к SSH, вы также можете улучшить безопасность вашего сервера Linux, настроив брандмауэр. По умолчанию новая машина на Linux будет принимать все входящие соединения с любого порта.
Это может стать проблемой, так как оставляет ваш сервер уязвимым для атаки сканирования портов. Например, злоумышленник может просканировать вашу машину на наличие незащищенных портов и использовать это для поиска подходящего эксплойта.

Один из способов исправить это — установить ufw, простой клиент брандмауэра, который может контролировать порты и адреса, доступные внешнему миру.
Выполните следующую команду для установки ufw в Ubuntu:
sudo apt install ufw
Установите правила по умолчанию для ufw. Это политики, которые ваш брандмауэр будет следовать для любого порта, который вы не настраиваете. Правильная практика — убедиться, что вы блокируете все входящие соединения:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Настройте ваш брандмауэр для сервисов, которые вы хотите запустить на вашей машине. Например, выполнение следующих команд позволит вам войти по SSH и разместить веб-сервер:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443Наконец, вам нужно активировать вашу новую конфигурацию брандмауэра, выполнив sudo ufw enable. Кроме того, вы можете проверить, работает ли ваш брандмауэр, выполнив эту команду:
sudo ufw status
4. Создайте нового пользователя для каждой службы
По умолчанию каждый файл и программа в системе Linux принадлежат определенному пользователю и группе. Чтобы изменить систему, вам нужно иметь соответствующие разрешения для соответствующих папок.
Один из способов повышения безопасности вашего сервера Linux — это создание нового учетной записи пользователя для каждой новой службы. Этот подход позволяет ограничить привилегии для каждой службы их собственной учетной записью пользователя.

Для этого выполните следующие команды:
sudo useradd -s/bin/bash-d/home/new-service -m-Gsudo new-service
sudopasswd new-service- Флаг
-sустанавливает системную оболочку для новой учетной записи пользователя. В моем случае моя новая учетная запись использует Bash в качестве своей оболочки. - Оба флага
-dи-mустанавливают каталог по умолчанию для новой учетной записи. - Флаг
-G, с другой стороны, добавляет новую учетную запись в любые вторичные группы, которые вы укажете. Например, добавление новой учетной записи в группу sudo позволит ей выполнять команды суперпользователя. - Команда
passwdпозволяет вам установить новый пароль для новой учетной записи пользователя.
После завершения вы можете использовать свою новую учетную запись, либо выйдя из своей текущей учетной записи, либо выполнив su new-service.

5. Укрепите ядро вашего сервера
Ядро — это одна из самых важных частей системы Linux и является связующим звеном между аппаратным обеспечением вашей машины и программным обеспечением. Например, компиляция собственного ядра Linux позволяет вам включить поддержку экзотического оборудования и функций.

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

Однако важно отметить, что sysctl не охватывает весь процесс жесткой настройки ядра, поскольку обеспечение безопасности ядра во многом зависит от ваших потребностей.
С учетом этого, вы можете выполнить следующие команды, чтобы предотвратить сообщение ядра о любой диагностической информации:
sudo sysctl kernel.kptr_restrict=2
sudo sysctl kernel.dmesg_restrict=1
sudo sysctl kernel.kexec_load_disabled=1
Вы также можете выполнить следующие команды, чтобы указать вашему ядру отвергать любые фальшивые запросы соединения, сделанные на ваш сервер:
sudo sysctl net.ipv4.tcp_syncookies=1
sudo sysctl net.ipv4.tcp_rfc1337=1
Эти команды, с другой стороны, заставят ядро проверять каждое входящее соединение на машину:
sudo sysctl net.ipv4.conf.all.rp_filter=1
sudo sysctl net.ipv4.conf.default.rp_filter=1
Наконец, следующий набор команд предотвратит любые входящие соединения от перенаправления сетевого трафика на другой шлюз. Это предотвратит вашу машину от попадания в ловушку атаки «человек посередине».
sudo sysctl net.ipv4.conf.all.accept_redirects=0
sudo sysctl net.ipv4.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.secure_redirects=0
sudo sysctl net.ipv4.conf.default.secure_redirects=0
sudo sysctl net.ipv6.conf.all.accept_redirects=0
sudo sysctl net.ipv6.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.send_redirects=0
sudo sysctl net.ipv4.conf.default.send_redirects=0
Советы: помимо приведенных выше советов, вы также можете воспользоваться этими инструментами с открытым исходным кодом для защиты вашего сервера Linux.
Часто задаваемые вопросы
Я потерял свой локальный компьютер. Все еще возможно ли войти на мой сервер Ubuntu через SSH?
В большинстве случаев вход через SSH, если он использует только аутентификацию по публичному ключу, не должен быть возможен. Однако все еще может быть возможно получить доступ к окну SSH, если вы не отключили переменную PasswordAuthentication.
Кроме того, вы можете либо физически обратиться к машине и обновить “/etc/ssh/sshd_config”, либо получить доступ к корневой консоли от вашего провайдера VPS.
У моего сервера есть как iptables, так и ufw. Нужно ли мне настраивать оба для моего брандмауэра?
Нет! И iptables, и ufw являются программным обеспечением брандмауэра, которое контролирует одни и те же диапазоны адресов и порты. Вам нужно настроить только одно из них, чтобы иметь работающий брандмауэр на вашем сервере Linux.
Возможно ли удалить привилегии суперпользователя у пользователя, которого я создал?
Да! Возможно удалить существующего пользователя из группы. Используйте утилиту usermod. Например, выполнение usermod -G video new-service удалит пользователя “new-service” из группы “sudo” и добавит его в группу “video”.