Что делает этот модуль #
Межсетевой экран — это дверь сервера: он решает, какие соединения впустить, а какие отклонить. На этих машинах эту работу выполняет ufw (межсетевой экран Ubuntu), а модуль firewall даёт вам удобный пульт для управления им без запоминания синтаксиса ufw.
С ним вы можете одним взглядом увидеть состояние межсетевого экрана (активность, политика по умолчанию и правила), вручную заблокировать надоедающую IP или диапазон, снять эту блокировку, когда она больше не нужна, и открывать или закрывать порты, держа конфигурацию в синхронии с тем, что применяет ufw.
Автоматические баны за попытки вторжения (перебор SSH и т. п.) fail2ban обрабатывает сам. Этот модуль работает с вашими ручными блокировками: block, unblock и flush затрагивают только то, что вы добавляете вручную, и никогда не вмешиваются в баны fail2ban.
Типовые задачи #
Выберите, что нужно сделать. В каждом рецепте команда уже готова — просто замените IP или порт на свои и нажмите Копировать.
1
Посмотреть состояние межсетевого экрана
Проверьте, активен ли он, его политику по умолчанию и сколько у него правил.
Подключитесь по SSH к серверу и запросите сводку:
$ sudo imaxe firewall statusНужно для скрипта? Добавьте --json и получите ту же информацию в виде, читаемом машиной:
$ sudo imaxe firewall status --json2
Заблокировать вредоносную IP
Отрежьте доступ надоедающей IP или диапазону.
Заблокируйте конкретную IP, записав причину, чтобы вспомнить позже:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso"Нужна только временная блокировка? Задайте длительность через --ttl, и она снимется сама. Можно также заблокировать целый диапазон в нотации CIDR:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso" --ttl 24h
$ sudo imaxe firewall block 203.0.113.0/24 --reason "escaneo"--ttl, блокировка истечёт сама по завершении срока.3
Посмотреть, какие IP я заблокировал
Просмотрите список активных ручных блокировок.
Выведите IP и диапазоны, которые вы заблокировали вручную (помните: баны fail2ban здесь не показываются):
$ sudo imaxe firewall blocked4
Разблокировать IP
Снимите ручную блокировку, которая больше не нужна.
Освободите ровно ту IP или диапазон, которые заблокировали (как они показаны в blocked):
$ sudo imaxe firewall unblock 203.0.113.105
Открыть или закрыть порт
Пропустите новый сервис или закройте тот, что больше не предоставляете.
Откройте порт (с комментарием, чтобы понимать, для чего он). Можно ограничить, кто входит, через --from:
$ sudo imaxe firewall allow 443/tcp --comment "https"
$ sudo imaxe firewall allow 5432/tcp --from 203.0.113.0/24 --comment "postgres interno"Закройте порт, который больше не используете:
$ sudo imaxe firewall deny 8080/tcpfirewall.yml. Проверьте это командой imaxe firewall rules list.Не закрывайте порт 22 (SSH), если подключены по SSH: вы потеряете доступ к серверу. Модуль держит 22/tcp разрешённым по умолчанию как раз чтобы избежать такого испуга. И помните, что flush удаляет все ваши ручные блокировки разом.
Синопсис #
imaxe firewall <subcomando> [<ip>|<puerto>] [flags]Все подкоманды требуют прав root (используйте sudo), потому что работают с ufw и пишут в /etc/imaxe/. Добавьте --json к status, blocked или rules list, чтобы получить вывод, читаемый машиной, пригодный для скриптинга.
Подкоманды #
| Подкоманда | Что делает | Значимые флаги |
|---|---|---|
| status | Состояние межсетевого экрана: активность, политика по умолчанию, число правил и ручных блокировок. | --json |
| blocked | Выводит IP/диапазоны, заблокированные вручную (не включает баны fail2ban). | --json |
| block | Вручную блокирует IP или диапазон, с необязательными причиной и длительностью. | --reason, --ttl |
| unblock | Снимает ручную блокировку. Не трогает баны fail2ban. | — |
| flush | Удаляет все ручные блокировки (разрушительно). Не трогает баны fail2ban. | --yes |
| rules list | Выводит правила портов (разрешённые порты, источники). | --json |
| allow | Открывает порт и отражает это в конфиге. | --from, --comment |
| deny | Закрывает порт и отражает это в конфиге. | --from |
| reload | Перезагружает ufw (заново применяет его активные правила). | — |
rules объединяет управление правилами портов; пока его единственная подкоманда — rules list.
Аргументы и флаги #
| Аргумент / Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| <ip>[/cidr] обяз. | string | — | IP или диапазон CIDR, с которым работать в block и unblock (напр. 203.0.113.10 или 203.0.113.0/24). |
| <port>[/proto] обяз. | string | — | Порт, с которым работать в allow и deny (напр. 443 или 443/tcp). |
| --reason | string | — | В block: причина блокировки (информативно). |
| --ttl | длительность | постоянно | В block: длительность блокировки (напр. 24h). По умолчанию — постоянная. |
| --from | cidr | любой | В allow/deny: ограничивает источник конкретным CIDR. |
| --comment | string | — | В allow: описательный комментарий к правилу. |
| --yes | bool | false | В flush: подтверждает без вопроса (разрушительная операция). |
| --json | bool | false | В status/blocked/rules list: выдаёт результат в виде JSON в stdout. |
Файлы и пути #
| Путь | Содержимое |
|---|---|
| /etc/imaxe/firewall.yml | Конфигурация модуля: разрешённые порты, которые allow/deny держат в синхронии с ufw. |
Пример firewall.yml:
allow:
- { port: 22, proto: tcp, comment: "ssh" }
- { port: 443, proto: tcp, comment: "https" }Коды возврата и логи #
Каждый запуск возвращает код, который можно проверить командой echo $? — удобно для цепочек в скриптах:
Следите за состоянием и правилами в реальном времени во время отладки:
$ sudo imaxe firewall status
$ sudo imaxe firewall rules listУстранение неполадок #
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Выходит NOTFOUND (код 3) при разблокировке | IP не совпадает в точности с поставленной блокировкой (не хватает /cidr, например). | Выполните imaxe firewall blocked и скопируйте запись как есть для unblock. |
Заблокировал IP, но она по-прежнему забанена после unblock | Блокировку поставил fail2ban, а не вы. | Этот модуль снимает только ручные блокировки; автоматические баны fail2ban обрабатывает отдельно. |
| Открыл порт, но трафик не идёт | Правило есть в ufw, но внешний межсетевой экран (security group) по-прежнему закрыт. | Проверьте командой imaxe firewall rules list и откройте порт также у вашего облачного провайдера. |
| Потерял доступ по SSH после правки правил | Порт 22 закрыли или ограничили. | Зайдите через консоль провайдера и снова разрешите 22/tcp командой imaxe firewall allow 22/tcp. |
Застряли с модулем Firewall?
Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.