Запуск Продукты Bitnami Документацияimaxe CLI Блог Контакты
imaxe firewall межсетевой экран v1.0.0

Ваш межсетевой экран под контролем

Смотрите состояние ufw, вручную блокируйте вредоносные IP и открывайте или закрывайте порты одной командой. Автоматические баны ставит fail2ban; это для ваших ручных блокировок и правил портов.

$ imaxe firewall block 203.0.113.10 --reason "abuso" --ttl 24h
Версия
v1.0.0
Подкоманды
9
Конфиг
/etc/imaxe/firewall.yml
Требуется root
да
Основа
ufw + fail2ban

Что делает этот модуль #

Межсетевой экран — это дверь сервера: он решает, какие соединения впустить, а какие отклонить. На этих машинах эту работу выполняет ufw (межсетевой экран Ubuntu), а модуль firewall даёт вам удобный пульт для управления им без запоминания синтаксиса ufw.

С ним вы можете одним взглядом увидеть состояние межсетевого экрана (активность, политика по умолчанию и правила), вручную заблокировать надоедающую IP или диапазон, снять эту блокировку, когда она больше не нужна, и открывать или закрывать порты, держа конфигурацию в синхронии с тем, что применяет ufw.

Ручные блокировки, не автоматические

Автоматические баны за попытки вторжения (перебор SSH и т. п.) fail2ban обрабатывает сам. Этот модуль работает с вашими ручными блокировками: block, unblock и flush затрагивают только то, что вы добавляете вручную, и никогда не вмешиваются в баны fail2ban.

Краткое руководствопошаговые задачи

Типовые задачи #

Выберите, что нужно сделать. В каждом рецепте команда уже готова — просто замените IP или порт на свои и нажмите Копировать.

1

Посмотреть состояние межсетевого экрана

Проверьте, активен ли он, его политику по умолчанию и сколько у него правил.

Подключитесь по SSH к серверу и запросите сводку:

терминал
$ sudo imaxe firewall status

Нужно для скрипта? Добавьте --json и получите ту же информацию в виде, читаемом машиной:

терминал
$ sudo imaxe firewall status --json
Видите, активен ли межсетевой экран, политику по умолчанию, число правил и сколько ручных блокировок вы поставили.
2

Заблокировать вредоносную 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"
Эта IP или диапазон больше не смогут подключиться к серверу. Если вы задали --ttl, блокировка истечёт сама по завершении срока.
3

Посмотреть, какие IP я заблокировал

Просмотрите список активных ручных блокировок.

Выведите IP и диапазоны, которые вы заблокировали вручную (помните: баны fail2ban здесь не показываются):

терминал
$ sudo imaxe firewall blocked
Видите каждую ручную блокировку с её причиной и, если есть, когда она истекает. Какая-то лишняя? Переходите к Разблокировать IP.
4

Разблокировать IP

Снимите ручную блокировку, которая больше не нужна.

Освободите ровно ту IP или диапазон, которые заблокировали (как они показаны в blocked):

терминал
$ sudo imaxe firewall unblock 203.0.113.10
Этот адрес снова может подключаться. Остальные блокировки и баны fail2ban остаются нетронутыми.
5

Открыть или закрыть порт

Пропустите новый сервис или закройте тот, что больше не предоставляете.

Откройте порт (с комментарием, чтобы понимать, для чего он). Можно ограничить, кто входит, через --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/tcp
Правило применяется в ufw и отражается в firewall.yml. Проверьте это командой imaxe firewall rules list.
Осторожно при закрытии портов

Не закрывайте порт 22 (SSH), если подключены по SSH: вы потеряете доступ к серверу. Модуль держит 22/tcp разрешённым по умолчанию как раз чтобы избежать такого испуга. И помните, что flush удаляет все ваши ручные блокировки разом.

Справочник CLIкоманды, флаги и файлы

Синопсис #

использование
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] обяз.stringIP или диапазон CIDR, с которым работать в block и unblock (напр. 203.0.113.10 или 203.0.113.0/24).
<port>[/proto] обяз.stringПорт, с которым работать в allow и deny (напр. 443 или 443/tcp).
--reasonstringВ block: причина блокировки (информативно).
--ttlдлительностьпостоянноВ block: длительность блокировки (напр. 24h). По умолчанию — постоянная.
--fromcidrлюбойВ allow/deny: ограничивает источник конкретным CIDR.
--commentstringВ allow: описательный комментарий к правилу.
--yesboolfalseВ flush: подтверждает без вопроса (разрушительная операция).
--jsonboolfalseВ status/blocked/rules list: выдаёт результат в виде JSON в stdout.

Файлы и пути #

ПутьСодержимое
/etc/imaxe/firewall.ymlКонфигурация модуля: разрешённые порты, которые allow/deny держат в синхронии с ufw.

Пример firewall.yml:

/etc/imaxe/firewall.yml
allow:
  - { port: 22, proto: tcp, comment: "ssh" }
  - { port: 443, proto: tcp, comment: "https" }

Коды возврата и логи #

Каждый запуск возвращает код, который можно проверить командой echo $? — удобно для цепочек в скриптах:

0OKОперация выполнена успешно.
1ERRОбщая неклассифицированная ошибка. Проверьте лог.
2USAGEНедопустимые или отсутствующие аргументы.
3NOTFOUNDУказанная IP или правило не существует.

Следите за состоянием и правилами в реальном времени во время отладки:

терминал
$ 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», и мы быстро ответим.

Связаться с поддержкой