UFW - настройка FireWall в Ubuntu

  • Михаил
  • 12 мин. на прочтение
  • 176
  • 24 Jan 2017
  • 24 Jan 2017

Во всех дистрибутивах 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 OpenSSHsudo ufw allow 22sudo ufw allow 22/tcp

Первое и второе правила разрешают входящие и исходящие подключения к порту 22 для любого протокола, третье правило разрешает входящие и исходящие подключения для порта 22 только по протоколу tcp.

Посмотреть доступные имена приложений можно с помощью команды:

sudo ufw app list

Можно также указать направление следования трафика с помощью слов out для исходящего и in для входящего.

ufw allow направление порт

Например, разрешим только исходящий трафик на порт 80, а входящий запретим:

sudo ufw allow out 80/tcpsudo 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/tcpsudo ufw delete deny in 80/tcp

7. Логгирование в ufw

Чтобы отлаживать работу ufw, могут понадобится журналы работы брандмауэра. Для включения журналирования используется команда logging:

sudo ufw logging onsudo ufw logging medium

Также этой командой можно изменить уровень логгирования:

  • low - минимальный, только заблокированные пакеты;
  • medium - средний, заблокированные и разрешённые пакеты;
  • high - высокий.

Лог сохраняется в папке /var/log/ufw. Каждая строчка лога имеет такой синтаксис:

[UFW действие] IN=интерфейс OUT=итерфейс SRC=ip_источника DST=ip_назначения LEN=размер_пакета TOS=0x10 PREC=0x00 TTL=64 ID=728 DF PROTO=протокол SPT=порт_источника DPT=порт назначения LEN=размер_пакета

В качестве действия приводится то, что UFW сделал с пакетом, например ALLOW, BLOCK или AUDIT. Благодаря анализу лога настройка UFW Ubuntu станет гораздо проще.

8. Отключение UFW

Если вы хотите полностью отключить UFW, для этого достаточно использовать команду disable:

sudo ufw disable

Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду reset для сброса настроек до состояния по умолчанию:

sudo ufw reset

В этой небольшой статье мы разобрали, как настроить UFW Ubuntu для защиты вашего компьютера от угроз из сети. Это особенно актуально для серверов, потому что они постоянно доступны из интернета.