mysurik.ru

Proxmox VE: Настройка Брандмауэра для Защиты VM и Хоста (Часть 6)

mwt

Как я понял, что брандмауэр нужен

Сначала я был уверен, что мой домашний сервер защищён «по умолчанию»: мол, кому он нужен, этот сервер в квартире, за роутером. Наивность, конечно. Я понял это, когда полез в логи SSH и увидел десятки попыток входа с чужих IP-адресов. Кто-то методично перебирал пароли, стучась на 22 порт. Роутер, как оказалось, «пробрасывал» порты наружу, и мой сервер был доступен из интернета со всеми своими портами, где я даже не успел поменять стандартные настройки.

В тот вечер я разобрался со встроенным брандмауэром Proxmox, и теперь это первое, что я делаю на любой новой машине. Рассказываю, как настраивал его сам, потому что в официальной документации всё описано правильно, но без примеров, а мне как новичку нужны были именно примеры.

Ещё немного про мотивацию: в тот момент у меня на сервере уже жили Pi-hole, пара веб-сайтов и умный дом. Представьте, что умный дом вдруг становится доступен кому-то ещё, кроме вас. Мне от одной мысли об этом стало не по себе. Именно поэтому я не отмахнулся от «шумных» логов, а сел и разобрался, как всё закрыть.

Что делает брандмауэр Proxmox

Сразу поясню, чтобы не было путаницы: брандмауэр Proxmox работает на уровне гипервизора, то есть между сетью и всеми виртуальными машинами. Это удобно, потому что не нужно заходить в каждую VM и настраивать там iptables или ufw — всё делается из одного места, в веб-интерфейсе. Правила можно задавать на трёх уровнях: для всего датацентра, для конкретного хоста и для каждой виртуалки или контейнера. Мелочь, но она реально экономит время.

Внутри это обычный iptables с удобной обёрткой, но мне как человеку, который не собирается становиться сисадмином на полную ставку, именно обёртка и нужна. Захотел открыть порт — добавил правило, не вспоминая синтаксис iptables. Захотел ограничить частоту — ткнул в настройки.

Шаг 19: включаю брандмауэр на хосте

Сначала нужно включить сам механизм. В дереве слева я открыл Datacenter → Firewall → Options и нашёл строку Firewall — она была в состоянии «No». Переключил в «Yes» и подтвердил. Важно понимать: включение брандмауэра в Proxmox не «рубит» всё мгновенно — по умолчанию политика пропускающая, и я сам добавляю запреты и разрешения. Так что не бойтесь, что отрежете себе доступ: при первом включении всё продолжает работать, пока вы не добавите правила.

Дальше — правила для входящих подключений к самому хосту. Я открыл Datacenter → Firewall → Rules и добавил две строки:

Direction Action Macro Comment
IN ACCEPT SSH доступ по SSH
IN ACCEPT Web-интерфейс доступ к 8006

Макрос SSH соответствует порту 22, макрос Web-интерфейса — порту 8006. Всё остальное входящее на хост я оставил закрытым. Если вам нужны другие порты (например, 443 для какого-то сервиса) — добавляете аналогичные правила.

Защита от перебора паролей

После того как я увидел в логах перебор SSH, я задумался: а можно ли ограничить частоту попыток? Оказалось, да — в Proxmox для этого есть встроенный механизм rate limit. Настройка нашлась в Datacenter → Firewall → Options: параметр Rate limit. Я выставил значение 5/сек — больше пяти пакетов в секунду с одного IP отбрасываются. Это не панацея, но перебор паролей стал заметно медленнее, а мой Fail2ban на уровне сервера добил остальное.

Кстати, совет от меня: никогда не оставляйте стандартные порты без изменений, если сервер смотрит в интернет. SSH на 22 порту — это как дверь с табличкой «входите». Я перенёс SSH на нестандартный порт, и количество попыток входа упало на порядок. Конечно, это не замена нормальной авторизации по ключам, но лишний уровень защиты никогда не мешает.

Шаг 20: брандмауэр для виртуалок

Хост защитил — теперь виртуалки. Механика такая же, но правила задаются для каждой VM или контейнера отдельно. Я взял свою виртуалку с Pi-hole (DNS-сервер) и настроил её по уму.

Сначала открыл VM → Firewall → Options и включил переключатель Firewall в «Yes». Потом перешёл на вкладку Rules и добавил два правила входящего трафика:

Direction Action Port Protocol Comment
IN ACCEPT 53 TCP/UDP DNS-запросы
IN ACCEPT 80 TCP Web-интерфейс Pi-hole

И всё. Больше ничего входить в этот контейнер не может — остальной трафик отклоняется (политика DROP по умолчанию на уровне виртуалки). Админка Pi-hole доступна, DNS работает, а вот всё лишнее — нет. Мне понравилось, как просто это делается: никаких сложных правил, пару строк — и сервис открыт наружу только тем, чем должен.

Security Groups — для однотипных машин

Когда у меня стало три веб-сервера, я понял, что копировать одинаковые правила для каждой VM — утомительно. Тут пригодились группы безопасности. В Datacenter → Firewall → Security Groups я создал группу web-servers и добавил в неё правила: ACCEPT на порты 80 и 443. Потом в настройках Firewall каждой нужной VM добавил ссылку на эту группу одной кнопкой. Обновил правила один раз — применилось ко всем машинам сразу.

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

На что я смотрел в логах

После настройки брандмауэра я открыл вкладку Log в разделе Firewall и увидел, что за день брандмауэр отбросил сотни входящих пакетов — в основном попытки подключиться к закрытым портам. Приятное зрелище, скажу я вам: все эти «стуки» в стену, которой раньше не было. Особенно много было попыток на порты 23 (telnet), 3389 (RDP) и 8080 — стандартный мусорный трафик, которым сканеры прочёсывают интернет.

Логи брандмауэра я теперь периодически просматриваю, но уже не с тревогой, а с любопытством: видно, как меняется картина атак после каждой настройки. Один раз я заметил, что с конкретного IP идёт особенно настырный перебор, и добавил правило DROP именно для этого адреса. Две минуты — и шум прекратился.

Кстати, о правилах: не бойтесь экспериментировать. В Proxmox правила применяются почти мгновенно, и если вы случайно отрежете себе доступ по SSH — просто зайдите в консоль сервера напрямую (монитор + клавиатура) и поправьте. Я один раз так отрезал себе веб-интерфейс, поругался на себя, зашёл через физическую консоль, поменял правило — и всё вернулось. Даже такие ошибки не смертельны, если сервер стоит рядом.

Брандмауэр и умный дом

Отдельно хочу рассказать про то, как я защищал сервисы умного дома, потому что это самая опасная зона домашнего сервера. Home Assistant умеет отдавать наружу веб-интерфейс, чтобы управлять домом из любой точки. Пока он был открыт «широко», я спал спокойно только потому, что не знал, насколько это плохо. После настройки брандмауэра я оставил наружу только порт для проксирования, а сам интерфейс спрятал за VPN. Теперь, чтобы управлять домом с улицы, я сначала подключаюсь к своей сети через WireGuard, а уже потом захожу в Home Assistant. Брандмауэр при этом пускает только внутренний трафик, а из интернета — лишь трафик для моего VPN-туннеля.

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

Мои выводы

Брандмауэр Proxmox не заменяет собой серьёзные решения уровня корпоративного парка, но для домашнего сервера и маленькой инфраструктуры это идеальный инструмент: встроенный, бесплатный и настраиваемый в пару кликов. Я за час закрыл все лишние порты, и в логах перестали появляться новые попытки вторжений. Сплю я с тех пор спокойнее, честно.

Если вкратце

  1. Включите Firewall в Datacenter → Firewall → Options.
  2. Добавьте правила входа для SSH (22) и веб-интерфейса (8006) на уровне хоста.
  3. Настройте Rate limit для защиты от перебора паролей.
  4. Для каждой VM включите Firewall в её настройках и откройте только нужные порты.
  5. Однотипные правила объединяйте в Security Groups.
  6. Сервисы, нужные только вам (умный дом, админки), вообще не открывайте наружу — ходите через VPN.
  7. Заглядывайте в логи брандмауэра: это лучший способ понять, что происходит вокруг вашего сервера.

Главное, что я вынес из этой истории: безопасность — это не «сложно», это «один вечер настройки». Потратьте его один раз — и не придётся потом разбирать последствия взлома.

Что я изменил после этого в привычках

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

Ещё я стал иначе относиться к «стандартным» портам. Проект использует 8080? Отлично, но снаружи пусть висит на другом порту, а внутри — как удобно. Это, конечно, не защита от сканеров, которые видят вообще всё, но заметно снижает количество автоматических атак.

И последнее: не тяните с этим, если у вас сервер смотрит в интернет. Настройка заняла у меня меньше вечера, включая все мои ошибки и разбирательства. А спокойствие, которое появилось после этого, стоит гораздо больше.

Ответы на вопросы, которые я сам задавал

Наверняка у вас есть те же вопросы, что были у меня, поэтому отвечу на них сразу. «Не сломает ли брандмауэр работу виртуалок между собой?» — Нет. Внутренний трафик между VM и хостами по умолчанию не ограничивается, правила касаются в основном входящих подключений извне. «Можно ли открыть порт только для одного IP?» — Да, в правиле есть поле Source, куда вписывается адрес или подсеть. Я так открыл SSH только для своего рабочего адреса, а всё остальное — закрыто. «Сложно ли откатиться, если что-то сломал?» — Всё настройки хранятся в файлах, их легко перезаписать. Но проще всего просто убрать лишнее правило в интерфейсе — изменения применяются сразу.

Если коротко: брандмауэр Proxmox — это инструмент, который при правильном использовании делает сервер по-настоящему закрытым. Не пропускайте этот шаг.

Я понимаю, что статья получилась длинноватой, но поверьте: лучше прочитать и настроить один раз, чем потом гуглить «как понять, что сервер взломали». У меня после включения брандмауэра количество подозрительной активности в логах упало в разы, а количество седых волос — ещё сильнее. Это одна из немногих настроек, после которых я реально почувствовал разницу в безопасности своей домашней инфраструктуры.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *