Создание защищенного VPS сервера: пошаговое руководство для пентестинга и общих задач

CyberSecureFox 🦊

VPS (Virtual Private Server) — это мощный инструмент, который находит применение в широком спектре задач: от веб-хостинга, разработки и организации личного облачного хранилища до тестирования на проникновение (пентестинга), анализа безопасности или VPN-сервера. Однако для обеспечения безопасности и надежности VPS требуется правильная настройка и укрепление защиты. В этой статье мы подробно рассмотрим все ключевые шаги по созданию безопасного VPS сервера, который подойдет как для общих задач, так и для специфических нужд, таких как пентестинг.

Выбор провайдера и операционной системы

Первым важным шагом является выбор надежного провайдера VPS. При выборе провайдера обращайте внимание на следующие факторы:

  • Репутация компании и отзывы клиентов
  • Расположение серверов и сеть
  • Доступные варианты операционных систем
  • Производительность и масштабируемость тарифных планов
  • Уровень технической поддержки и документации

Для операционной системы рекомендуется выбрать один из популярных Linux-дистрибутивов, таких как Ubuntu, Debian или CentOS. Они имеют широкую поддержку сообщества, частые обновления безопасности и хорошо подходят для серверных задач.

Если же ваша цель — пентестинг и анализ безопасности, то стоит обратить внимание на специализированные дистрибутивы, созданные именно для этих задач. Например, Kali Linux, ParrotOS или BlackArch. Эти дистрибутивы предоставляют богатый набор предустановленных инструментов для тестирования на проникновение, анализа уязвимостей, реверс-инжиниринга и других задач кибербезопасности.

Однако, даже если вы выбрали универсальный дистрибутив, такой как Ubuntu или Debian, вы всегда можете дополнительно установить и настроить необходимые инструменты для пентестинга. Главное — обеспечить надежную защиту самого VPS, чтобы он не стал жертвой атак или источником угроз для других систем.

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

Первоначальная настройка сервера

После создания VPS подключитесь к нему по SSH, используя предоставленные провайдером учетные данные. Затем выполните следующие шаги для первоначальной настройки:

    1. Обновите все установленные пакеты до последних версий:
      sudo apt update && sudo apt upgrade -y
    2. Создайте нового пользователя с правами sudo и настройте аутентификацию по SSH-ключу:
      adduser johndoe
      usermod -aG sudo johndoe
      mkdir /home/johndoe/.ssh
      chmod 700 /home/johndoe/.ssh
      nano /home/johndoe/.ssh/authorized_keys # Вставьте ваш публичный SSH-ключ
      chmod 600 /home/johndoe/.ssh/authorized_keys
      chown -R johndoe:johndoe /home/johndoe/.ssh
    3. Отключите вход для пользователя root и вход по паролю, отредактировав файл /etc/ssh/sshd_config:
      PermitRootLogin no
      PasswordAuthentication no
    4. Перезапустите службу SSH:
      sudo systemctl restart sshd

Теперь у вас есть основа для безопасного доступа к серверу

Укрепление безопасности SSH

SSH — основной способ удаленного доступа к VPS, поэтому важно укрепить его безопасность. Вот несколько рекомендаций:

  • Установите fail2ban для защиты от брутфорс-атак:
    sudo apt install fail2ban -y

    Логи работы Fail2Ban обычно хранятся в файле /var/log/fail2ban.log.Если вы хотите изменить количество попыток входа, время блокировки и другие параметры, в директории /etc/fail2banсоздайте копию файла jail.conf с названием jail.local и работайте в этом файле. Файлы .local имеют приоритет над .conf, поэтому Fail2Ban будет использовать ваши настройки.

  • Используйте только аутентификацию по SSH-ключам (уже настроено на предыдущем шаге).
  • Смените стандартный порт SSH (например, на 2222) в файле /etc/ssh/sshd_config:
    Port 2222
  • Ограничьте доступ к SSH определенным пользователям, добавив в /etc/ssh/sshd_config:
    AllowUsers johndoe
  • Включите 2FA (двухфакторную аутентификацию) с помощью Google Authenticator или других решений.

После внесения изменений перезапустите SSH:

sudo systemctl restart sshd

Настройка двухфакторной аутентификации (2FA)

Двухфакторная аутентификация значительно повышает безопасность, требуя дополнительный одноразовый код при входе по SSH. Для настройки 2FA с помощью Google Authenticator выполните следующие шаги:

    1. Установите модуль Google Authenticator PAM на сервере:
      sudo apt install libpam-google-authenticator -y
    2. Запустите google-authenticator от имени пользователя и следуйте инструкциям для настройки:
      su - johndoe
      google-authenticator
      

      Сохраните показанные резервные коды в безопасном месте.

    3. Отредактируйте файл /etc/pam.d/sshd и добавьте в конец:
      auth required pam_google_authenticator.so
    4. Отредактируйте файл /etc/ssh/sshd_config и добавьте/измените:
      ChallengeResponseAuthentication yes
      AuthenticationMethods publickey,keyboard-interactive
      
    5. Перезапустите службу SSH:
      sudo systemctl restart sshd
      

Теперь при входе по SSH будет запрашиваться одноразовый код из приложения Google Authenticator в дополнение к SSH-ключу.

Настройка брандмауэра

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

Установить UFW

sudo apt install ufw -y

Настроить правила для разрешения нужных сервисов

Например:

sudo ufw allow 2222/tcp # SSH на порту 2222
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS

Активировать UFW

sudo ufw enable

ВАЖНО: не включайте UFW до того, как разрешите подключение по SSH. Стандартный порт SSH — 22, если вы меняли порт для SSH, укажите ваш порт.

Мониторинг сервера

Регулярный мониторинг сервера позволяет вовремя обнаруживать потенциальные проблемы и угрозы безопасности. Некоторые рекомендации:

  • Установите инструменты мониторинга, такие как Prometheus и Grafana, для сбора и визуализации метрик сервера.
  • Настройте централизованный сбор и анализ логов с помощью решений вроде ELK стека (Elasticsearch, Logstash, Kibana).
  • Используйте инструменты обнаружения вторжений, такие как OSSEC или Suricata, для выявления подозрительной активности.
  • Регулярно просматривайте логи на предмет аномалий и признаков взлома.

Передача файлов на VPS

Для безопасной передачи файлов и ресурсов между локальной машиной и VPS используйте утилиту SCP. Например, для передачи каталога project пользователю johndoe на сервер:

scp -P 2222 -i ~/.ssh/vps_key -r ~/project johndoe@vps_ip:~/

Это позволяет передавать данные по шифрованному соединению SSH, не раскрывая их третьим лицам.

Заключение

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

  • Тщательно выбирайте провайдера и операционную систему
  • Выполните первоначальную настройку сервера и создайте нового sudo-пользователя
  • Укрепите безопасность SSH с помощью fail2ban, нестандартного порта и ограничения пользователей
  • Настройте двухфакторную аутентификацию для входа по SSH
  • Сконфигурируйте брандмауэр для ограничения сетевого доступа
  • Установите инструменты мониторинга и регулярно проверяйте логи
  • Используйте SCP для безопасной передачи файлов

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

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.