Для любого сервера в интернете или в локальной сети очень важно сделать несколько простых действий для обеспечения его безопасности. Речь пойдёт про linux сервера, которые многим кажутся очень надёжными и неприступными, но это не так, если для безопасности ничего не предпринимается.
Многие администраторы или простые пользователи которые настраивают какие нибудь серверы или сервисы, пренебрегают базовыми правилами безопасности.
Вот небольшой список основных действий для повышения безопасности сервера.
Итак начнём.
-
Установка апдейтов.
Многие сервера взламывают потому что в установленных старых пакетах есть уязвимости. И это дыра в безопасности.apt update apt dist-upgrade
Включаем автоматическую установку секюрити апдейтов.
apt install unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades
-
Использовать сложные и уникальные пароли.
Не менее 10 символов.
-
Не использовать root логин.
Создать нового пользователя
adduser guest
Добавляем теперь нашего пользователя в группу
sudo
usermod -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-id
ssh-copy-id username@remote_host
Если всё прошло ок, то можем попробовать подключится к нашему ssh серверу
ssh username@remote_host
Так же необходимо ещё внести некоторые правки в конфиг ssh:
sudo nano /etc/ssh/sshd_config
sshd_config
... PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no PermitRootLogin no ...
Заодно в этом файле можно изменить стандарный порт. Это добавить ещё немного безопасности
Для применения новой конфигурации необходимо рестартнуть сервис.
systemctl restart ssh
Дополнительно можно запретить пользователям добавлять новые открытые ключи и подключаться с их помощью.
Сделайте файл
authorized_keys
доступным только для чтения пользователям и запретите все остальное:chmod 400 ~/.ssh/authorized_keys
Важно!
Что бы не потерять случайно соединение с удалённым сервером необходимо открыть вторую консоль и попробовать подключится по ssh. Если подключение успешно удалось, можно делать logout.
-
Закрываем все порты.
Проверяем какие открытые
sudo ss -tupln
ufw
Ставим пакет
sudo apt install ufw
По дефолту он не включен. Смотрим статус:
sudo ufw status
Разрешаем ssh порт:
sudo ufw allow 22/tcp
Так же по аналогии открываем и другие нужные нам порты.
Включаем firewall
sudo ufw enable
Проверяем статус. Firewall должен быть запущен и будет стартовать автоматически после перезагрузки. Теперь блокируются все порты, кроме тех которые мы разрешили.