UNIXAWESOME

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

#server #security

Для любого сервера в интернете или в локальной сети очень важно сделать несколько простых действий для обеспечения его безопасности. Речь пойдёт про linux сервера, которые многим кажутся очень надёжными и неприступными, но это не так, если для безопасности ничего не предпринимается.

Многие администраторы или простые пользователи которые настраивают какие нибудь серверы или сервисы, пренебрегают базовыми правилами безопасности.

Вот небольшой список основных действий для повышения безопасности сервера.

Итак начнём.

  1. Установка апдейтов. Многие сервера взламывают потому что в установленных старых пакетах есть уязвимости. И это дыра в безопасности.

     apt update
     apt dist-upgrade
    

    Включаем автоматическую установку секюрити апдейтов.

     apt install unattended-upgrades
     dpkg-reconfigure --priority=low unattended-upgrades
    
  2. Использовать сложные и уникальные пароли.

    Не менее 10 символов.

  3. Не использовать root логин.

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

     adduser guest
    

    Добавляем теперь нашего пользователя в группу sudo

     usermod -aG sudo guest
    
  4. Не использовать пароли для подключения по 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.

  5. Закрываем все порты.

    Проверяем какие открытые

     sudo ss -tupln
    

    ufw

    Ставим пакет

     sudo apt install ufw
    

    По дефолту он не включен. Смотрим статус:

     sudo ufw status
    

    Разрешаем ssh порт:

     sudo ufw allow 22/tcp
    

    Так же по аналогии открываем и другие нужные нам порты.

    Включаем firewall

     sudo ufw enable
    

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

Всё можно взломать, но некоторые вещи можно сделать более безопасными.

Reply to this post by email ↪