Цель урока: Глубоко понять, что такое файервол (межсетевой экран), почему его наличие на сервере абсолютно необходимо, и освоить ufw (Uncomplicated Firewall) - инструмент для создания надежного и понятного набора правил, который будет защищать ваш сервер 24/7.
Часть 1: Теория. Цифровой охранник на входе
Представьте, что ваш сервер - это важное здание. В Уроке 8 мы выяснили, что у него есть адрес (IP) и множество дверей (портов). Без файервола все эти двери широко распахнуты. Любой желающий в интернете может подойти и подергать за ручку каждой двери, пытаясь найти открытую.
Файервол - это ваш строгий и бдительный охранник, который стоит на входе. Он не пускает в здание никого, кроме тех, кто есть в утвержденном списке.
Почему это критически важно?
-
Принцип "Запрещено всё, что не разрешено": Это золотой стандарт безопасности. Файервол работает по принципу "белого списка". Изначально он блокирует абсолютно все входящие соединения. Вы, как администратор, создаете явные и точные правила, какой трафик (на какой порт) следует пропустить. Весь остальной трафик, не подпадающий под правила, будет безжалостно отброшен.
-
Защита от автоматизированных атак: Интернет кишит ботами, которые круглосуточно сканируют диапазоны IP-адресов в поисках уязвимых серверов. Их первая цель - найти открытые порты. Если у вас установлена, например, база данных, но вы забыли ее защитить, бот может это обнаружить за считанные минуты. Файервол сделает ваш сервер "невидимым" для таких сканеров - они просто не получат ответа с незащищенных портов.
-
Уменьшение "поверхности атаки": Этот профессиональный термин означает совокупность всех возможных точек входа, через которые злоумышленник может попытаться проникнуть в систему. Каждая открытая служба, каждый слушающий порт - это часть этой поверхности. Правильно настроенный файервол сокращает эту поверхность до абсолютного минимума - только те порты, которые действительно нужны для работы вашего проекта.
Что такое ufw и почему именно он?
В ядре Linux есть встроенный, невероятно мощный и сложный механизм фильтрации пакетов под названием Netfilter. Для управления им используется утилита iptables. iptables - это стандарт де-факто для профессионалов, но его синтаксис сложен и неочевиден для новичков. Ошибка в правиле iptables может легко заблокировать вам доступ к серверу.
ufw (Uncomplicated Firewall) - это дружелюбный "интерфейс" к iptables, созданный разработчиками Ubuntu. Он позволяет описывать правила безопасности простым, человекочитаемым языком. При этом ufw преобразует ваши простые команды в корректный и надежный набор правил iptables. Для 95% задач администрирования VDS его возможностей более чем достаточно. Он сочетает в себе простоту для новичков и мощь для профессионалов.
Часть 2: Практика. Основные команды ufw
Мы работаем под root, поэтому sudo не требуется.
1. Проверка состояния и управление файерволом
-
ufw status
: Показывает текущее состояние. Чаще всего при первой проверке вы увидите Status: inactive. -
ufw status verbose
: Показывает более подробную информацию, включая политику по умолчанию. -
ufw enable
: Включает файервол. Он начнет работать и будет автоматически запускаться при старте системы. -
ufw disable
: Отключает файервол. -
ufw reset
: Сбрасывает все правила к состоянию "по умолчанию" (т.е. к выключенному состоянию без правил). Полезно, если вы "заигрались" и хотите начать с чистого листа.
2. Настройка политики по умолчанию
Это самый важный шаг, который выполняется до включения файервола.
-
ufw default deny incoming
: Устанавливает политику по умолчанию для входящего трафика на "запретить". Это и есть наш принцип "запрещено всё, что не разрешено". -
ufw default allow outgoing
: Устанавливает политику для исходящего трафика на "разрешить". Это стандартная и безопасная практика. Она означает, что ваш сервер может инициировать соединения с внешним миром (например, скачивать обновления с помощью apt update), но мир не может инициировать соединения с вашим сервером.
3. Добавление разрешающих правил (allow)
Правила можно добавлять несколькими способами:
-
По имени службы: ufw знает стандартные порты для многих служб. Это самый простой способ.
-
ufw allow ssh
(разрешает порт 22) -
ufw allow http
(разрешает порт 80) -
ufw allow https
(разрешает порт 443)
-
-
По номеру порта: Если у вас нестандартная служба или вы хотите быть точным.
-
ufw allow 22
(разрешает трафик на порт 22, и TCP, и UDP) -
ufw allow 8080
(разрешает трафик на порт 8080)
-
-
По номеру порта и протоколу: Самый точный и правильный способ.
-
ufw allow 22/tcp
-
ufw allow 80/tcp
-
ufw allow 53/udp
(пример для DNS-запросов)
-
-
Для конкретного IP-адреса: Повышенный уровень безопасности.
-
ufw allow from 195.12.11.2 to any port 22
(разрешить SSH только с вашего домашнего/офисного IP)
-
4. Удаление правил
-
По самому правилу: Просто напишите delete перед правилом, которое вы добавляли.
-
ufw delete allow http
-
-
По номеру (самый удобный способ):
-
Сначала получаем нумерованный список всех правил:
ufw status numbered
-
Затем удаляем правило по его номеру: ufw delete [номер]
-
Часть 3: Практический сценарий. Безопасная настройка с нуля
Выполните эту последовательность шагов в точности, чтобы гарантировать безопасность и не потерять доступ к серверу.
⚠️ ЗОЛОТОЕ ПРАВИЛО ФАЙЕРВОЛА ⚠️
ВСЕГДА, АБСОЛЮТНО ВСЕГДА, ПЕРВЫМ ДЕЛОМ ДОБАВЛЯЙТЕ ПРАВИЛО, РАЗРЕШАЮЩЕЕ SSH! Если вы сначала включите политику deny и активируете файервол, вы немедленно потеряете SSH-соединение и не сможете подключиться к серверу снова.
-
Зайдите на сервер под root.
-
Проверьте текущий статус. Скорее всего, он inactive.
ufw status
-
Если файервол активен, для чистоты эксперимента сбросим его:
ufw reset # Система предупредит, что это может нарушить текущие SSH-соединения. # Так как мы сразу его настроим, смело вводите 'y' и нажимайте Enter.
-
ВЫПОЛНЯЕМ ЗОЛОТОЕ ПРАВИЛО. Разрешаем входящие соединения для SSH. Мы сделаем это самым точным способом - по порту и протоколу.
ufw allow 22/tcp
Система ответит Rule added. Теперь мы застрахованы от потери доступа.
-
Теперь задаем политики по умолчанию. Закрываем все входящие, разрешаем все исходящие.
ufw default deny incoming ufw default allow outgoing
-
Представим, что наш сервер будет веб-сервером. Разрешим стандартный веб-трафик.
ufw allow http # Это то же самое, что ufw allow 80/tcp ufw allow https # Это то же самое, что ufw allow 443/tcp
-
Момент истины. Включаем файервол.
ufw enable
Система снова выдаст предупреждение о возможном разрыве SSH-соединений. Мы знаем, что уже добавили разрешающее правило, поэтому уверенно вводим y и нажимаем Enter. Вы увидите Firewall is active and enabled on system startup.
-
Проверим, что у нас получилось.
ufw status
Вывод будет выглядеть примерно так:
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere
Это означает: "Разрешать подключения к портам 22, 80, 443 с любого IP-адреса. Все остальные входящие подключения - отбрасывать". Ваш сервер теперь под базовой защитой!
-
Попрактикуемся в удалении. Допустим, мы решили временно отключить обычный HTTP.
# Сначала смотрим нумерованный список ufw status numbered # Вывод будет примерно таким: # Status: active # To Action From # -- ------ ---- # [ 1] 22/tcp ALLOW IN Anywhere # [ 2] 80/tcp ALLOW IN Anywhere # [ 3] 443/tcp ALLOW IN Anywhere # Удаляем правило номер 2 ufw delete 2
Подтвердите удаление (y). Если вы снова вызовете ufw status, правило для порта 80 исчезнет.
Итоги урока и домашнее задание
-
Что мы освоили:
-
Что такое файервол и почему он является обязательным элементом безопасности.
-
Концепцию "запрещено всё, что не разрешено" (Default Deny).
-
Что ufw - это удобная оболочка для мощного iptables.
-
Полный цикл управления ufw: установка политик, добавление и удаление правил, включение и проверка статуса.
-
Золотое правило: всегда разрешать SSH в первую очередь.
-
-
Ваше девятое задание:
-
Сбросьте все правила файервола командой
ufw reset
. -
Настройте файервол с нуля для следующего сценария:
-
Разрешить SSH (порт 22/tcp)
-
Политика по умолчанию: запретить все входящие, разрешить все исходящие.
-
Представьте, что вы запускаете веб-приложение для разработки, которое работает на порту 3000. Добавьте правило, разрешающее трафик на порт 3000/tcp.
-
Представьте, что у вас также есть игровой сервер, который использует порты с 27015 по 27020 по протоколу UDP. Добавьте правило, разрешающее этот диапазон (
ufw allow 27015:27020/udp
).
-
-
Включите файервол.
-
Просмотрите нумерованный список правил.
-
Удалите правило для игрового сервера (диапазон портов UDP).
-
Проверьте статус еще раз, чтобы убедиться, что правило удалено.
-
На следующем уроке мы рассмотрим управление файерволом с помощью iptables и ipset
Перейти к просмотру - УРОК №10.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com