Во всех дистрибутивах Linux для обеспечения сетевой безопасности и изоляции внутренних процессов от внешней среды используется брандмауэр iptables. Но его настройка может показаться очень сложной для новых пользователей, поэтому многие дистрибутивы создают собственные оболочки, которые упрощают процесс настройки.
В Ubuntu используется оболочка под названием UFW или Uncomplicated FireWall. В этой статье мы разберём, как выполняется настройка UFW Ubuntu, а также как пользоваться основными возможностями этой программы.
Команда UFW Ubuntu
1. Синтаксис ufw
Для управления возможностями брандмауэра используется одноимённая команда — ufw. Давайте сначала рассмотрим её опции и параметры, а потом перейдём к настройке. Синтаксис команды такой:
$ ufw опции действие параметры
Опции определяют общие настройки поведения утилиты, действие указывает, что нужно сделать, а параметры — дополнительные сведения для действия, например, IP-адрес или номер порта.
Сначала разберём опции утилиты:
- —version — вывести версию брандмауэра;
- —dry-run — тестовый запуск, никакие реальные действия не выполняются.
2. Команды UFW
Для выполнения действий с утилитой доступны такие команды:
- enable — включить фаерволл и добавить его в автозагрузку;
- disable — отключить фаерволл и удалить его из автозагрузки;
- reload — перезагрузить файервол;
- default — задать политику по умолчанию, доступно allow, deny и reject, а также три вида трафика — incoming, outgoing или routed;
- logging — включить журналирование или изменить уровень подробности;
- reset — сбросить все настройки до состояния по умолчанию;
- status — посмотреть состояние фаервола;
- show — посмотреть один из отчётов о работе;
- allow — добавить разрешающее правило;
- deny — добавить запрещающее правило;
- reject — добавить отбрасывающее правило;
- limit — добавить лимитирующее правило;
- delete — удалить правило;
- insert — вставить правило.
Это были все опции и команды, которые вы можете использовать в ufw. Как видите, их намного меньше, чем в iptables и всё выглядит намного проще, а теперь давайте рассмотрим несколько примеров настройки.
Настройка UFW Ubuntu
1. Как включить UFW
Сначала нужно отметить, что в серверной версии Ubuntu UFW по умолчанию включён, а в версии для рабочего стола он отключён. Поэтому сначала смотрим состояние фаервола:
sudo ufw status
Если он не включён, то его необходимо включить:
sudo ufw enable
Затем вы можете снова посмотреть состояние:
sudo ufw status
Обратите внимание, что если вы работаете по SSH, то перед тем, как включать брандмауэр, нужно добавить правило, разрешающее работу по SSH, иначе у вас не будет доступа к серверу. Подождите с включением до пункта 3.
2. Политика по умолчанию
Перед тем, как мы перейдём к добавлению правил, необходимо указать политику по умолчанию. Какие действия будут применяться к пакетам, если они не подпадают под созданные правила ufw. Все входящие пакеты будем отклонять:
sudo ufw default deny incoming
А все исходящие разрешим:
sudo ufw default allow outgoing
3. Добавление правил UFW
Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw — deny и reject. Они отличаются тем, что для deny компьютер отсылает отправителю пакет с уведомлением об ошибке, а для reject просто отбрасывает пакет и ничего не отсылает. Для добавления правил можно использовать простой синтаксис:
$ ufw allow имя_службы
$ ufw allow порт
$ ufw allow порт/протокол
Например, чтобы открыть порт ufw для SSH, можно добавить одно из этих правил:
sudo ufw allow OpenSSH
sudo ufw allow 22
sudo ufw allow 22/tcp
Первое и второе правила разрешают входящие и исходящие подключения к порту 22 для любого протокола, третье правило разрешает входящие и исходящие подключения для порта 22 только по протоколу tcp.
Посмотреть доступные имена приложений можно с помощью команды:
sudo ufw app list
Можно также указать направление следования трафика с помощью слов out для исходящего и in для входящего.
$ ufw allow направление порт
Например, разрешим только исходящий трафик на порт 80, а входящий запретим:
sudo ufw allow out 80/tcp
sudo ufw deny in 80/tcp
Также можно использовать более полный синтаксис добавления правил:
$ ufw allow proto протокол from ip_источника to ip_назначения port порт_назначения
В качестве ip_источника может использоваться также и адрес подсети. Например, разрешим доступ со всех IP-адресов для интерфейса eth0 по протоколу tcp к нашему IP-адресу и порту 3318:
sudo ufw allow proto tcp from 0.0.0.0/24 to 192.168.1.5 port 3318
4. Правила limit ufw
С помощью правил limit можно ограничить количество подключений к определённому порту с одного IP-адреса, это может быть полезно для защиты от атак перебора паролей. По умолчанию подключения блокируются, если пользователь пытается создать шесть и больше подключений за 30 секунд:
sudo ufw limit ssh/tcp
К сожалению, настроить время и количество запросов можно только через iptables.
5. Просмотр состояния UFW
Посмотреть состояние и действующие на данный момент правила можно командой status:
sudo ufw status
Чтобы получить более подробную информацию, используйте параметр verbose:
sudo ufw status verbose
С помощью команды show можно посмотреть разные отчеты:
- raw — все активные правила в формате iptables;
- builtins — правила, добавленные по умолчанию;
- before-rules — правила, которые выполняются перед принятием пакета;
- user-rules — правила, добавленные пользователем;
- after-rules — правила, которые выполняются после принятия пакета;
- logging-rules — правила логгирования пакетов;
- listening — отображает все прослушиваемые порты и правила для них;
- added — недавно добавленные правила;
Например, посмотрим список всех правил iptables:
sudo ufw show raw
Посмотрим все прослушиваемые порты:
sudo ufw show listening
Или недавно добавленные правила:
sudo ufw show added
6. Удаление правил ufw
Чтобы удалить правило ufw, используется команда delete. Например, удалим ранее созданные правила для порта 80:
sudo ufw delete allow out 80/tcp
sudo ufw delete deny in 80/tcp
7. Логгирование в ufw
Чтобы отлаживать работу ufw, могут понадобится журналы работы брандмауэра. Для включения журналирования используется команда logging:
sudo ufw logging on
sudo ufw logging medium
Также этой командой можно изменить уровень логгирования:
- low — минимальный, только заблокированные пакеты;
- medium — средний, заблокированные и разрешённые пакеты;
- high — высокий.
Лог сохраняется в папке /var/log/ufw. Каждая строчка лога имеет такой синтаксис:
В качестве действия приводится то, что UFW сделал с пакетом, например ALLOW, BLOCK или AUDIT. Благодаря анализу лога настройка UFW Ubuntu станет гораздо проще.
8. Отключение UFW
Если вы хотите полностью отключить UFW, для этого достаточно использовать команду disable:
sudo ufw disable
Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду reset для сброса настроек до состояния по умолчанию:
sudo ufw reset