Skip to content

Instantly share code, notes, and snippets.

@Iwwww
Last active November 14, 2025 10:07
Show Gist options
  • Select an option

  • Save Iwwww/bf942511b9240ddaef7b72facb13c3dd to your computer and use it in GitHub Desktop.

Select an option

Save Iwwww/bf942511b9240ddaef7b72facb13c3dd to your computer and use it in GitHub Desktop.
Базовая безопасность сервера Linux

Настройка базового уровня безопасности на сервере (Debian 12)

Обновление системы

apt update
apt upgrade

Подключаемся по SSH

Необходимо добавить SSH-ключ на сервер, чтобы подключаться не по паролью, а по ключю. Если нет ключа, то надо создать:

ssh-keygen -t ed25519

С подключаемой к серверу машине добавляем свой SSH-ключ на сервер в файл ~/.ssh/authorized_keys:

ssh-copy-id root@<IP-сервера> # после выполнения команды вводим 'yes' и пароль

Создание нового пользователя

useradd --create-home --groups sudo --shell /bin/bash <your-new-user>

Меняем пароль для пользователя:

passwd www

Копируем публичный ключ из ~/.ssh/authorized_keys для нового пользователя. Тогда будет возможно подключиться с тем же ключём к пользователю :

cp -r ~/.ssh /home/<your-new-user>/
chown <your-new-user>:<your-new-user> -R /home/<your-new-user>/.ssh

Заходим на сервер из под нового ползователя.

Настраиваем SSH

В /etc/ssh/sshd_config пишем:

Port 12345  # поменять порт для SSH демона на какой-нибудь повыше
PasswordAuthentication no # запретить доступ по паролю
PubkeyAuthentication yes # разрешить использовать ключи для входа (включено поумолчанию)
PermitRootLogin no # запретить вход через root
AllowUsers <your-new-user> # разрешить вход только определённым пользователям

Перезапускаем ssh:

sudo systemctl restart sshd.service

Попробуйте подключиться к серверу по новому порту из другого термина перед закрытием текущей сессии.

Автообновления

Автообновления являются критически важными, поскольку они позволяют быстро закрывать новые уязвимости в системе даже если вы не отслеживаете их.

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

Файрвол

Устанавливаем и настраиваем ufw (Uncomplicated FireWall):

sudo apt install ufw
sudo ufw allow <your-ssh-port> # разрешаем порт для ssh
sudo ufw enable # будьте осторожны на этом шаге, проверте, что ssh действительнго слушает на новом <ssh-port>
sudo ufw status verbose # проверьте, что разрешён верный порт

Если вы не можете войти через ssh, то попробуйте войти через VNC вашего хостера.

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

Защита от атак перебором

sudo apt install fail2ban
sudo systemctl enable --now fail2ban

Для Debian 12 необходимо установить паке rsyslog:

sudo apt install rsyslog

Настраиваем fail2ban:


Создаём файл /etc/fail2ban/jail.local:

sudo cp /etc/fail2ban/jail.{conf,local}

Создаём файл /etc/fail2ban/jail.d/ufw-ban.conf:

[DEFAULT]
bantime = 10m
findtime = 2h
ignoreip = 127.0.0.1/8 192.168.0.0/16
maxretry = 5
banaction = ufw
banaction_allports = ufw

Дополнительно

AIDE (Advanced Intrusion Detection Environment)

AIDE сравнивает права, хеш-суммы важных системных файлов со своей базой.

sudo apt install aide
sudo aideinit # инициализируем базу

Для проверки системы:

sudo aide --config /etc/aide/aide.conf --check

Можно проверять систему регулярно или поставить таймер, чтобы иметь уверенность в своих системных файлах.

Сетевые параметры

В файле /etc/sysctl.conf добавляем:

net.ipv4.icmp_echo_ignore_all=1 # блокирует все ICMP Echo запросы (ping запросы)
net.ipv4.conf.all.rp_filter=1 # проверка обратного маршрута пакетов (reverse path filtering)

Загружаем новые параметры:

sudo sysctl -p

Дополнительно

  • Агрегация логов на внешнем сервере
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment