Повышение безопасности сервера

Для любого сервера в интернете или в локальной сети очень важно сделать несколько простых действий для обеспечения его безопасности. Речь пойдёт про linux сервера, которые многим кажутся очень надёжными и неприступными, но это не так, если для безопасности ничего не предпринимается.
Многие администраторы или простые пользователи которые настраивают какие нибудь серверы или сервисы, пренебрегают базовыми правилами безопасности.
Вот небольшой список основных действий для повышения безопасности сервера.
Итак начнём.
-
Установка апдейтов. Многие сервера взламывают потому что в установленных старых пакетах есть уязвимости. И это дыра в безопасности.
apt update apt dist-upgradeВключаем автоматическую установку секюрити апдейтов.
apt install unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades -
Использовать сложные и уникальные пароли.
Не менее 10 символов.
-
Не использовать root логин.
Создать нового пользователя
adduser guestДобавляем теперь нашего пользователя в группу
sudousermod -aG sudo guest -
Не использовать пароли для подключения по ssh к серверу.
Можно авторизовываться на сервере без регулярной необходимости отсылать ваш пароль через сеть. Идентификация при помощи ключей SSH предоставляет дополнительную безопасность, а также может быть более удобным способом , чем традиционная идентификация при помощи пароля.
Генерация пары ключей SSH
Пара ключей SSH может быть сгенерирована при помощи команды
ssh-keygen:ssh-keygenПо умолчанию последние версии
ssh-keygenбудут создавать 3072-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг-b 4096для получения 4096-битного ключа).ssh-keygen -t rsa -b 4096**Копирование открытого ключа на сервер **
Копирование открытого ключа с помощью утилиты
ssh-copy-idssh-copy-id username@remote_hostЕсли всё прошло ок, то можем попробовать подключится к нашему ssh серверу
ssh username@remote_hostТак же необходимо ещё внести некоторые правки в конфиг ssh:
sudo nano /etc/ssh/sshd_configsshd_config
... PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no PermitRootLogin no ...Заодно в этом файле можно изменить стандарный порт. Это добавить ещё немного безопасности
Для применения новой конфигурации необходимо рестартнуть сервис.
systemctl restart sshДополнительно можно запретить пользователям добавлять новые открытые ключи и подключаться с их помощью.
Сделайте файл
authorized_keysдоступным только для чтения пользователям и запретите все остальное:chmod 400 ~/.ssh/authorized_keysВажно!
Что бы не потерять случайно соединение с удалённым сервером необходимо открыть вторую консоль и попробовать подключится по ssh. Если подключение успешно удалось, можно делать logout.
-
Закрываем все порты.
Проверяем какие открытые
sudo ss -tuplnufw
Ставим пакет
sudo apt install ufwПо дефолту он не включен. Смотрим статус:
sudo ufw statusРазрешаем ssh порт:
sudo ufw allow 22/tcpТак же по аналогии открываем и другие нужные нам порты.
Включаем firewall
sudo ufw enableПроверяем статус. Firewall должен быть запущен и будет стартовать автоматически после перезагрузки. Теперь блокируются все порты, кроме тех которые мы разрешили.