1. Основы Linux и первичная настройка безопасности VPS
Основы Linux и первичная настройка безопасности VPS
Представьте, что вы арендовали пустую квартиру в незнакомом городе. Вам выдали ключи, но внутри нет ни мебели, ни охраны, а замки на дверях — самые простые. Оставить всё как есть — значит пригласить грабителей. Аренда VPS (Virtual Private Server) — это ровно та же ситуация. Как только ваш сервер получает публичный IP-адрес, боты-сканеры начинают простукивать его порты в поисках стандартных паролей. Ваша задача в первые 15 минут — превратить эту «пустую квартиру» в цифровую крепость.
Анатомия Linux и философия терминала
В мире Windows мы привыкли к графическому интерфейсу, где ошибка часто исправляется «перезагрузкой». В Linux, особенно на серверах без графической оболочки (Headless), терминал — это ваш единственный и самый мощный инструмент. Здесь всё является файлом: конфигурация сети, драйвер видеокарты и даже текст, который вы сейчас читаете, если бы он лежал в системе.
Основное различие между домашним ПК и VPS заключается в распределении ресурсов. На виртуальном сервере работает гипервизор — программное обеспечение, которое делит физическое железо на изолированные части. Вы получаете гарантированный объем RAM и CPU, но операционная система (чаще всего дистрибутивы семейства Debian или Ubuntu) оптимизирована под производительность, а не под красоту иконок.
> Linux — это не просто ОС, это иерархия прав. Главный пользователь в системе — root. Он обладает абсолютной властью: может удалить всю файловую систему одной командой. Именно поэтому работа под root в повседневном режиме считается «плохим тоном» и огромным риском для безопасности.
Когда вы вводите команду ls /, вы видите корень системы. Здесь /etc хранит настройки, /var — логи и данные сайтов, а /home — личные папки пользователей. Понимание этой структуры критично: если вы случайно измените права на /etc, сервер может просто не загрузиться после обновления.
Первый вход и создание безопасного окружения
Обычно хостинг-провайдер присылает вам IP-адрес и пароль от пользователя root. Первое, что нужно сделать — создать обычного пользователя и наделить его правами администратора через механизм sudo (superuser do). Это позволяет выполнять опасные команды только тогда, когда это действительно нужно, подтверждая действие паролем.
Рассмотрим процесс создания пользователя deploy:
adduser deploy. Система попросит задать надежный пароль.usermod -aG sudo deploy. Теперь этот пользователь может «превращаться» в администратора.Почему это важно? Если злоумышленник подберет пароль к обычному пользователю, он всё равно будет ограничен в действиях. Ему придется взламывать еще и механизм sudo. Но пароли — это прошлый век. Настоящая безопасность начинается с SSH-ключей.
SSH-ключ состоит из двух частей: приватной (хранится у вас на ПК) и публичной (лежит на сервере). Это работает как замок и ключ: сервер просит ваш ПК «подписать» случайную строку данных. Если подпись верна, доступ разрешен. Взломать 2048-битный или 4096-битный RSA-ключ перебором практически невозможно, в отличие от пароля «123456».
| Метод аутентификации | Уровень защиты | Удобство | Риски | | :--- | :--- | :--- | :--- | | Пароль | Низкий | Высокое (запоминается) | Brute-force атаки, фишинг | | SSH-ключ (RSA/Ed25519) | Высокий | Среднее (нужен файл) | Потеря приватного ключа | | 2FA (Google Auth) | Очень высокий | Низкое (нужен телефон) | Потеря устройства |
Настройка SSH-демона и закрытие «парадного входа»
После того как вы проверили, что можете зайти под новым пользователем с помощью ключа, пора редактировать файл /etc/ssh/sshd_config. Это главная панель управления доступом к вашему серверу.
Основные параметры, которые нужно изменить:
PermitRootLogin no: запрещает вход под root. Теперь хакеру нужно угадать не только пароль, но и имя вашего пользователя.PasswordAuthentication no: отключает вход по паролю. Только ключи. Это отсекает 99% автоматических атак.Port 2222 (опционально): смена стандартного порта 22 на любой другой (например, 2222) снижает «шум» в логах, так как боты в основном сканируют стандартный порт.После внесения изменений обязательно выполните sudo systemctl restart ssh, но не закрывайте текущую сессию, пока не убедитесь в соседнем окне терминала, что новый вход работает. Ошибка в конфиге может привести к потере доступа к серверу.
Firewall: настройка UFW
Даже если SSH защищен, другие порты могут быть открыты. Для управления сетевым экраном в Ubuntu используется UFW (Uncomplicated Firewall). Его логика проста: запрещено всё, что не разрешено явно.
Пошаговый алгоритм настройки:
sudo ufw allow 22/tcp (или ваш кастомный порт).sudo ufw allow 80/tcp и sudo ufw allow 443/tcp.sudo ufw enable.Теперь сервер будет игнорировать любые запросы на порты, которые вы не открыли. Это базовая гигиена, которая предотвращает эксплуатацию уязвимостей в сервисах, которые вы могли запустить случайно или для тестов (например, базы данных Redis или базы данных без пароля).
Автоматизация защиты с Fail2Ban
Даже если пароли отключены, боты будут продолжать попытки соединения, нагружая процессор и забивая логи. Утилита Fail2Ban отслеживает файлы логов (например, /var/log/auth.log) на предмет подозрительной активности. Если с одного IP-адреса произошло 5 неудачных попыток входа за минуту, Fail2Ban дает команду файрволу заблокировать этот IP на час или сутки.
Это работает как «вышибала» в клубе: если кто-то слишком настойчиво дергает ручку закрытой двери, его просто выводят из очереди. Установка проста: sudo apt install fail2ban. Базовые настройки в файле jail.local уже защищают SSH «из коробки».
> Исследования показывают, что новый сервер в сети атакуется ботами в среднем каждые 30-40 секунд. Без Fail2Ban ваш файл логов за неделю может вырасти до сотен мегабайт только из-за записей о неудачных попытках входа.
Обновление системы и автоматические патчи
В Linux безопасность — это процесс, а не состояние. Уязвимости находят ежедневно. Команда sudo apt update && sudo apt upgrade должна стать вашей привычкой. Однако для критических обновлений безопасности лучше настроить пакет unattended-upgrades. Он будет автоматически скачивать и устанавливать патчи ядра и системных библиотек без вашего участия.
Важно понимать разницу между update (обновление списка доступных пакетов) и upgrade (физическая установка новых версий). Если вы выполнили только первую команду, ваша система осталась старой.