Neonode.cc - Mind space blog
open main menu
Part of series: SecurityGuide

Повышение безопасности VPS на Ubuntu и Debian: практическая памятка

/ 15 min read

Повышение безопасности VPS на Ubuntu и Debian: практическая памятка

Эта памятка содержит минимальный набор шагов для улучшения безопасности вашего сервера на базе Ubuntu или Debian. Данные рекомендации особенно полезны для VPS, предназначенных для работы VPN.

🛡️ Основные правила безопасности

Настройки безопасности сервера — не главная защита. Главное — это здравый смысл администратора. Вот базовые правила:

  • Не храните пароль личного кабинета сервера в онлайн хранилищах паролей (много случаев сливов паролей) или в TXT файле на рабочем столе. Лучше всего хранить пароль только в своей голове и периодически обновлять его, в крайнем случае заведите бумажный блокнот. Также вы можете воспользоваться хранилищем паролей с открытым исходным кодом KeePassXC или Bitwarden, такой способ тоже относительно безопасен. Если же вы храните пароли в браузере и не хотите менять свои привычки, то обязательно пользуйтесь мастер паролем.
  • Используйте сложные пароли с учётом регистра и использованием спецсимволов.
  • Максимально усильте защиту Email к которому привязан личный кабинет панели управления сервером.
  • Используйте двухфакторную верификацию для Email и личного кабинета администратора сервера. Желательно использовать не смс верификацию, а программы 2FA с использованием токенов по типу Aegis, 2FA, Яндекс ключ и т.д., так как смс могут перехватить злоумышленники с использованием клона вашей сим карты (редкий случай, но так бывает). Я в большинстве случаев использую Aegis
  • Не сохраняйте пароли в FTP-клиентах — очень часто вирусы берут информацию из FTP-клиента.
  • Никому не передавайте данные основной учетной записи администратора, и если есть необходимость в передаче доступа, создайте для этого новую учетную запись с ограниченными правами. Не забудьте потом удалить временную учетную запись.

🔐 Установка SSH-ключа: Безопасная авторизация без паролей

Использование SSH-ключей — это простой и надёжный способ обеспечить безопасность при подключении к серверу. Главное преимущество SSH-ключей перед паролем — это отсутствие необходимости передавать пароль по сети каждый раз при авторизации, что делает доступ к серверу более защищённым.

Генерация SSH-ключей

Чтобы настроить авторизацию по ключу, нужно сгенерировать два файла: секретный (private) и публичный (public) ключи. Вот как это сделать:

  1. Введите следующую команду для генерации пары ключей RSA:

    ssh-keygen -t rsa -b 2048
    
  2. Программа запросит директорию для сохранения ключей и предложит ввести секретную фразу (passphrase) для дополнительной защиты. Этот пароль можно оставить пустым, но лучше ввести сложную фразу для большей безопасности. Если вы хотите использовать настройки по умолчанию, нажмите Enter — ключи будут сохранены в директорию ~/.ssh.

Просмотр сгенерированных файлов

После генерации ключей перейдите в директорию ~/.ssh, где они были сохранены:

cd ~/.ssh

В этом каталоге вы увидите два файла:

  • id_rsa — это ваш секретный ключ, который должен храниться в безопасном месте на локальном компьютере и никогда не передаваться другим.
  • id_rsa.pub — это публичный ключ, который нужно перенести на сервер.

Копирование публичного ключа на сервер

Чтобы авторизоваться на сервере по SSH-ключу, перенесите публичный ключ на сервер. Один из удобных способов копирования ключа — использовать программы, поддерживающие SFTP, такие как Filezilla, или другие менеджеры SFTP.

После копирования откройте файл authorized_keys на сервере, чтобы зарегистрировать свой публичный ключ:

  1. Скопируйте содержимое id_rsa.pub в файл authorized_keys, добавив его в конец файла:

    cat id_rsa.pub >> ~/.ssh/authorized_keys
    

    Этот файл authorized_keys должен находиться в директории ~/.ssh на сервере.

Настройка конфигурации OpenSSH для авторизации по ключу

Теперь необходимо внести изменения в конфигурацию OpenSSH на сервере, чтобы включить авторизацию по ключу:

  1. Откройте файл конфигурации OpenSSH:

    nano /etc/ssh/sshd_config
    
  2. Найдите или добавьте следующие строки, чтобы активировать авторизацию по ключу и отключить нежелательные методы:

    PubkeyAuthentication yes  
    AuthorizedKeysFile %h/.ssh/authorized_keys  
    RhostsRSAAuthentication no  
    HostbasedAuthentication no  
    PermitEmptyPasswords no
    
  3. Чтобы полностью отключить авторизацию по паролю, установите параметр PasswordAuthentication в no. Это также выполняется в файле sshd_config:

    PasswordAuthentication no
    

    Примечание: В Ubuntu 24.04 этот параметр может быть переопределён в отдельном конфигурационном файле /etc/ssh/sshd_config.d/50-cloud-init.conf. Внесите изменение там, если правка sshd_config не работает.

  4. Дополнительно для Ubuntu 24.04 может потребоваться добавить следующее, чтобы гарантировать поддержку алгоритма RSA:

    PubkeyAcceptedAlgorithms +ssh-rsa
    

Настройка прав доступа на файлы ключей

Обеспечьте правильные права доступа к директориям и файлам SSH, чтобы только текущий пользователь мог их читать:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Перезапуск SSH-сервера

Чтобы применить все изменения, перезапустите SSH-сервер:

systemctl restart ssh

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

🚫 Установка и настройка Fail2ban

Для избежания попыток подбора пароля по SSH используйте Fail2ban. После неправильных попыток ввода пароля, Fail2ban будет блокировать IP адрес с которого пытались подобрать пароль. Число возможных попыток ввода пароля и длительность блокировки вы можете определить самостоятельно. Например можно настроить блокировку на час после пяти неудачных попыток ввода пароля в SSH.

Установка Fail2ban в Ubuntu

apt update -y && apt upgrade -y
apt-get install fail2ban

Для запуска службы Fail2ban вводим следующие команды (для справки, т.к. fail2ban должен запуститься автоматически):

systemctl enable fail2ban
systemctl start fail2ban

Для проверки работоспособности службы Fail2ban:

systemctl status fail2ban

Основы настройки Fail2ban: Разбираем конфигурацию и ключевые параметры

Fail2ban — это инструмент, который защищает ваш сервер от атак путем блокировки IP-адресов, которые слишком часто совершают неудачные попытки доступа. Это особенно полезно для защиты SSH, FTP, HTTP и других сервисов. Настройка Fail2ban универсальна и не зависит от конкретного дистрибутива Linux.

Файлы конфигурации Fail2ban

Все конфигурационные файлы Fail2ban находятся в директории /etc/fail2ban. Основной файл конфигурации — jail.conf. Однако его не рекомендуется изменять напрямую: при обновлении Fail2ban этот файл может быть перезаписан, и внесенные изменения будут потеряны.

Для безопасного изменения конфигурации следует использовать дополнительные файлы, расположенные в /etc/fail2ban/jail.d. Они позволяют добавлять и изменять параметры для конкретных сервисов, при этом основные настройки останутся неизменными. Эти файлы используют секции, называемые тюрьмами или изоляторами (jails), — каждое правило отвечает за защиту определенного сервиса, например SSH, HTTP или FTP.

Пример простого включения защиты для SSH:

[sshd]
enabled = true

Основные параметры настройки Fail2ban

При настройке Fail2ban важны следующие параметры, которые можно задать для каждого изолята в конфигурационном файле:

  • ignoreip — список IP-адресов, которые никогда не должны блокироваться Fail2ban, вне зависимости от их активности. Это позволяет добавить свой IP-адрес, чтобы избежать случайной блокировки. Можно также указать подсеть или DNS-имя.

    ignoreip = 192.168.1.1 10.0.0.0/24 mytrustedhost.com
    
  • bantime — продолжительность блокировки IP-адреса в секундах. Как только это время истечет, адрес автоматически будет удален из списка заблокированных.

    bantime = 3600  # Заблокировать на 1 час
    
  • maxretry — количество неудачных попыток доступа перед блокировкой. Этот параметр определяет, сколько раз пользователь может неправильно ввести пароль или совершить другие подозрительные действия, прежде чем IP будет заблокирован.

    maxretry = 3
    
  • port — указывает, на каком порту или портах работает защищаемый сервис. Можно указать один или несколько портов.

    port = ssh
    
  • filter — имя фильтра, который Fail2ban будет использовать для обнаружения подозрительных действий. Каждый фильтр ищет определенные шаблоны в лог-файлах. Например, для SSH используется фильтр sshd, который располагается в /etc/fail2ban/filter.d/sshd.conf.

    filter = sshd
    
  • logpath — путь к файлу журнала, где Fail2ban будет отслеживать события. Обычно для SSH это /var/log/auth.log.

    logpath = /var/log/auth.log
    
  • action — действия, которые выполняются, когда Fail2ban обнаруживает активность, соответствующую критериям поиска. Например, действие может включать блокировку IP с использованием iptables.

    action = %(action_)s
    

Порядок чтения файлов конфигурации Fail2ban

Fail2ban читает конфигурационные файлы в определенном порядке. Файлы .local имеют приоритет над .conf, что позволяет легко переопределить настройки без изменений в исходных файлах. Порядок чтения файлов:

  1. /etc/fail2ban/jail.conf — базовые настройки, заданные по умолчанию.
  2. /etc/fail2ban/jail.d/*.conf — настройки, добавленные администратором для дополнительных сервисов.
  3. /etc/fail2ban/jail.local — пользовательские настройки.
  4. /etc/fail2ban/jail.d/*.local — настройки администратора, которые имеют наивысший приоритет.

Дополнительные файлы конфигурации Fail2ban

Помимо jail.conf, Fail2ban использует и другие файлы для управления и настройки:

  • action.d/*.* — определяет, какие действия будут выполняться при обнаружении подозрительной активности.
  • fail2ban.conf — основной конфигурационный файл для общих настроек.
  • fail2ban.d/*.* — пользовательские настройки для Fail2ban.
  • filter.d/*.* — шаблоны для поиска подозрительных действий в логах.
  • paths-arch.conf, paths-common.conf, paths-debian.conf, paths-opensuse.conf — файлы для определения путей в зависимости от операционной системы.

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

Настройка Fail2ban для SSH

Источник: https://homehosted.ru/ustanovka-i-nastrojka-fail2ban

SSH изолятор работает в Fail2Ban по умолчанию сразу после установки сервиса. Но если Вам необходимо внести изменения в его работу, необходимо создать новый jail файл. Для этого мы будем использовать редактор nano:

nano /etc/fail2ban/jail.d/ssh.conf

Добавляем в созданный файл следующие строки:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 300
backend = systemd

sshd — название для правила; enabled позволяет быстро включать (true) или отключать (false) правило; port — порт целевого сервиса. Принимается буквенное или цифирное обозначение; filter — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога /etc/fail2ban/filter.d без .conf на конце; logpath — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев. maxretry — количество действий, которые разрешено совершить до бана. findtime — время в секундах, в течение которого учитывается maxretry; Чтобы изменения вступили в силу, перезапускаем сервис:

systemctl restart fail2ban

Указанная нами конфигурация будет блокировать IP адреса после 3-х проваленных попыток логина на Ваш сервер через SSH. Блокировка действует 300 секунд, а все подозрительные действия будут записываться в файл журнала /var/log/auth.log.

Вы можете изменить параметры под Ваши нужды.

🔄 Изменение стандартного порта для SSH-подключения в Ubuntu и Debian

По умолчанию SSH-сервер принимает входящие подключения на TCP-порт 22. Этот порт хорошо известен, и злоумышленники часто атакуют его, пытаясь подобрать пароли (bruteforce). Изменение порта снижает риск таких атак, делая ваш сервер менее заметным для автоматизированных сканеров.

📌 Как изменить SSH-порт

  1. Подключение к серверу
    Подключитесь к серверу через SSH, используя, например, PuTTY (на Windows) или стандартные SSH-команды на macOS и Linux.

  2. Установите необходимые утилиты
    Убедитесь, что на вашем сервере установлены net-tools для проверки доступных портов:

    sudo apt install net-tools
    
  3. Проверьте занятые порты
    Узнайте, какие порты уже используются на сервере, чтобы выбрать свободный для SSH:

    sudo ss -tuln | grep LISTEN
    
  4. Изменение порта в конфигурации SSH
    Для большинства версий Ubuntu и Debian откройте файл sshd_config и внесите изменения:

    sudo nano /etc/ssh/sshd_config
    

    Найдите строку #Port 22, уберите # и замените 22 на выбранный вами порт, например:

    Port 2222
    

    Сохраните файл и перезапустите SSH:

    sudo systemctl restart ssh
    
  5. Настройка брандмауэра
    Убедитесь, что новый порт открыт в брандмауэре (если используется UFW):

    sudo ufw allow 2222/tcp
    

    Если используется iptables, добавьте правило для нового порта:

    sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
    
  6. Проверка подключения
    Теперь SSH-сервер будет принимать подключения на новом порту. Подключитесь по новому порту, чтобы проверить доступ, и завершите настройку.


Дополнительные шаги для Ubuntu 24.04

В Ubuntu 24.04 настройка порта требует изменений в двух местах: в основном файле sshd_config и в файле конфигурации сокета SSH.

  1. Изменение порта в sshd_config
    Откройте основной файл конфигурации:

    sudo nano /etc/ssh/sshd_config
    

    Найдите строку #Port 22, уберите # и укажите новый порт, например:

    Port 2222
    
  2. Изменение порта в файле сокета
    Откройте файл конфигурации сокета SSH:

    sudo nano /lib/systemd/system/ssh.socket
    

    Найдите параметр ListenStream=22 и замените его на ваш новый порт:

    ListenStream=2222
    
  3. Сохранение и перезапуск
    Сохраните изменения и выполните перезагрузку:

    sudo systemctl daemon-reload
    sudo systemctl restart ssh.socket
    sudo systemctl restart ssh
    

Для Ubuntu 24.04 выполнять настройки брандмауэра тоже обязательно!

Подключение к серверу через новый порт

Теперь для подключения к серверу по SSH используйте указанный порт. Например, для подключения через терминал можно указать порт с помощью флага -p:

ssh -p 2222 username@server_ip

⚠️ Важно: Не забудьте записать новый порт и обновить настройки брандмауэра, чтобы не потерять доступ к серверу.

Скрипт автоматизации:

Для всех кто прочитал до этого пункта, бонус.

Скрипт автоматизации для смены порта SSH:

bash <(wget -qO- https://dignezzz.github.io/server/ssh-port.sh)

После запуска скрипта будет предложено ввести новый порт, и скрипт сам все поменяет. И даже добавит в UFW/iptables соответствующую запись.

🔥 Настройка правил брандмауэра UFW для защиты сервера

Использование Uncomplicated Firewall (UFW) — удобный способ настроить защиту сервера. UFW — это надстройка над iptables, которая значительно упрощает управление правилами брандмауэра.

🔥 Основные команды и настройки UFW для защиты сервера

Uncomplicated Firewall (UFW) – удобный инструмент для управления брандмауэром на Ubuntu и Debian. Он позволяет легко настраивать и контролировать доступ к вашему серверу, обеспечивая защиту от несанкционированного доступа. Вот основные команды и пояснения для работы с UFW.

Установка UFW

Если UFW еще не установлен, его можно установить с помощью следующей команды:

sudo apt install ufw

Включение и отключение UFW

Перед активацией UFW важно настроить правила для доступа, особенно если сервер подключен через SSH. Включить UFW можно следующей командой:

sudo ufw enable

Чтобы временно отключить UFW (например, для тестирования), используйте команду:

sudo ufw disable

Внимание: Отключение UFW временно убирает все ограничения, поэтому убедитесь, что вы знаете, зачем это делаете.

Проверка текущего состояния и правил UFW

Для проверки статуса UFW и всех активных правил используйте команду:

sudo ufw status verbose

Эта команда покажет, какие порты разрешены или заблокированы, и другие настройки.

Настройка базовых правил

UFW позволяет задать базовые правила для входящего и исходящего трафика. Рекомендуется запретить все входящие соединения, кроме тех, которые вы явно разрешите, и разрешить все исходящие соединения:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Разрешение и блокировка портов

Чтобы открыть порт для определенного сервиса, например, для SSH, можно использовать команду:

sudo ufw allow 22/tcp

Примечание: Если вы изменили порт SSH, укажите нужный номер вместо 22. Например, sudo ufw allow 2222/tcp.

Для веб-сервера вам могут понадобиться следующие команды для разрешения HTTP и HTTPS:

sudo ufw allow 80/tcp     # Открытие порта для HTTP
sudo ufw allow 443/tcp    # Открытие порта для HTTPS

Чтобы заблокировать доступ к порту, используйте:

sudo ufw deny 25/tcp

Это, например, заблокирует порт 25, который обычно используется для почтовых сервисов (SMTP).

Разрешение доступа по IP-адресу

Иногда требуется разрешить доступ к серверу только с определенного IP-адреса. Для этого можно использовать следующую команду:

sudo ufw allow from 192.168.1.100

Это разрешит подключение с IP 192.168.1.100 ко всем сервисам. Вы также можете указать конкретный порт, добавив to any port 22 в команду:

sudo ufw allow from 192.168.1.100 to any port 22

Удаление правил

Чтобы удалить ранее установленное правило, используйте ту же команду с флагом delete. Например, для удаления правила доступа к порту 22:

sudo ufw delete allow 22/tcp

Лимитирование подключений

Для предотвращения атак brute-force на определенные сервисы, UFW позволяет ограничить количество подключений. Например, для ограничения подключений к SSH можно использовать следующую команду:

sudo ufw limit 22/tcp

Эта команда разрешает до 6 попыток подключения за 30 секунд с одного IP-адреса. Если лимит превышен, IP временно блокируется.

Перезапуск UFW

Если вы хотите перезапустить UFW и применить все новые правила, используйте:

sudo ufw reload

Сброс настроек UFW

Если вам нужно сбросить все настройки UFW и начать настройку заново, выполните:

sudo ufw reset

Важно: Эта команда удаляет все текущие правила, поэтому используйте ее осторожно.

Теперь UFW настроен и активен, блокируя все ненужные входящие соединения и открывая только необходимые порты.

Усиленная версия защиты и безопасности - SSH-Audit

Давно существует такой сайт: https://www.ssh-audit.com/

Что он позволяет делать?

  1. Он позволяет протестировать безопасность вашего SSH соединения на основе выработанной жесткой политики безопасности.
  2. На сайте вы найдете все самые необходимые и важные пункты для настройки вашего сервера.

Полный набор команд для безопасности вы найдете на этой странице: https://www.ssh-audit.com/hardening_guides.html

Рассмотрим пример, для Ubuntu 24.04:

1. Повторная генерация RSA и ED25519 ключей

  1. Удаляем существующие ключи SSH:

    rm /etc/ssh/ssh_host_*
    

    Описание: Эта команда удаляет все существующие ключи SSH в /etc/ssh/, чтобы обеспечить чистый процесс генерации новых ключей.

  2. Генерируем новый RSA ключ:

    ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
    

    Описание: Создает новый RSA ключ с длиной 4096 бит, который будет храниться по пути /etc/ssh/ssh_host_rsa_key. Параметр -N "" устанавливает пустую парольную фразу.

  3. Генерируем новый ED25519 ключ:

    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
    

    Описание: Создает новый ключ ED25519, хранящийся в /etc/ssh/ssh_host_ed25519_key. ED25519 ключи обеспечивают более быструю и безопасную альтернативу RSA.

2. Удаление малых модулей Диффи-Хеллмана

Малые модули Диффи-Хеллмана — это наборы чисел, используемые для безопасного обмена ключами в алгоритме Диффи-Хеллмана, которые имеют недостаточную длину и, следовательно, недостаточный уровень безопасности.

Что такое модуль Диффи-Хеллмана?

Диффи-Хеллман (DH) — это метод безопасного обмена криптографическими ключами, который позволяет двум сторонам установить общий секретный ключ даже при передаче данных через незащищенное соединение. В основе этого метода лежит сложная математическая операция — вычисление модуля (остатка от деления) от очень больших чисел, известных как модули Диффи-Хеллмана. Эти модули представляют собой простые числа, необходимые для выполнения алгоритма.

Почему малые модули небезопасны?

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

Как это влияет на безопасность?

Если используются малые модули, это повышает риск взлома. Поэтому, при настройке SSH-соединения, рекомендуется отфильтровать и удалить модули, длина которых меньше, чем 3072 бита, чтобы снизить вероятность атаки и повысить общую безопасность соединения.

В контексте команды

awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe

Описание: Эта команда использует awk, чтобы отфильтровать и сохранить модули Диффи-Хеллмана с размером не менее 3071 бита в файл /etc/ssh/moduli.safe. Маленькие модули считаются уязвимыми.

mv /etc/ssh/moduli.safe /etc/ssh/moduli

Описание: Перемещает отфильтрованные и безопасные модули обратно в файл /etc/ssh/moduli.

3. Включение RSA и ED25519 ключей

  1. Включаем директивы HostKey для RSA и ED25519:
    sed -i 's/^\#HostKey \/etc\/ssh\/ssh_host_\(rsa\|ed25519\)_key$/HostKey \/etc\/ssh\/ssh_host_\1_key/g' /etc/ssh/sshd_config
    
    Описание: Использует sed для редактирования файла конфигурации SSH, раскомментируя строки, связанные с HostKey для RSA и ED25519 ключей, чтобы OpenSSH знал, какие ключи использовать.

4. Ограничение поддерживаемых алгоритмов

  1. Добавляем строгие ограничения для алгоритмов обмена ключами, шифрования и MAC:
    echo -e "\n# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\nKexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nCiphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr\nMACs [email protected],[email protected],[email protected]\nHostKeyAlgorithms ssh-ed25519,[email protected],[email protected],[email protected],rsa-sha2-256,rsa-sha2-512,[email protected],[email protected]" > /etc/ssh/sshd_config.d/ssh-audit_hardening.conf
    
    Описание: Создает новый файл /etc/ssh/sshd_config.d/ssh-audit_hardening.conf, который добавляет ограничения на поддерживаемые алгоритмы обмена ключами, шифрования и MAC для повышения безопасности. Эти настройки соответствуют рекомендациям по безопасности SSH.

5. Перезапуск SSH сервера

  1. Перезапускаем службу OpenSSH:
    service ssh restart
    
    Описание: Перезапускает SSH сервер для применения всех сделанных изменений.

6. Внедрение ограничения на частоту соединений

  1. Включаем ограничение на частоту подключений с помощью iptables для IPv4:

    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
    

    Описание: Эти команды настраивают iptables для ограничения входящих подключений на порт 22 (SSH), позволяя только 10 новых соединений за 10 секунд от одного источника. Это предотвращает атаки DDoS на SSH сервер.

  2. Включаем то же ограничение для IPv6:

    ip6tables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
    ip6tables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
    

    Описание: Аналогичная настройка для IPv6, обеспечивающая такую же защиту.

7. Обеспечение сохранения правил iptables после перезагрузки

  1. Устанавливаем пакеты netfilter-persistent и iptables-persistent:

    DEBIAN_FRONTEND=noninteractive apt install -q -y netfilter-persistent iptables-persistent
    

    Описание: Устанавливает утилиты для сохранения и восстановления правил iptables при перезагрузке системы.

  2. Сохраняем правила iptables:

    service netfilter-persistent save
    

    Описание: Сохраняет текущие правила iptables, чтобы они автоматически применялись после перезагрузки.

Итого

Выполнение команд представленных на странице https://www.ssh-audit.com/hardening_guides.html рекомендуется ко всем продуктивным серверам. Не бойтесь, ничего не сломается.

📌 Вывод

Следуя этим рекомендациям, вы значительно повысите безопасность вашего VPS. Эти шаги защитят сервер от большинства атак и помогут поддерживать безопасность на высоком уровне.


Follow my TG channel: https://t.me/neonode_cc

TG group for discussion: https://t.me/+cFdHT8DiMUA2MWVi