UFW — Uncomplicated Firewall / Незамысловатый межсетевой экран

ufw-ubuntu-firewall

ufw — это утилита для конфигурирования межсетевого экрана Netfilter. Она использует интерфейс командной строки, состоящий из небольшого числа простых команд.

ufw установлен по-умолчанию на Ubuntu. Если у Вас его нет, установить с помощью apt-get:

# apt-get install ufw

Использование IPv6 с ufw

Если на сервере Ubuntu включен протокол IPv6, убедитесь, что ufw настроен на поддержку протокола IPv6, чтобы управлять правилами брандмауэра для протокола IPv6 в дополнение к протоколу IPv4. Для этого откройте конфигурацию ufw в любимом редакторе. Мы будем использовать vim:

# vim /etc/default/ufw

Затем убедитесь, что значение «IPV6» равно «yes». Это должно выглядеть так:

...
IPV6=yes
...

Сохранить и выйти (Написать :х и нажать Enter)

Когда ufw включен, он будет настроен для записи правил брандмауэра IPv4 и IPv6.

Этот учебник написан с IPv4 в виду, но будет работать нормально для IPv6 до тех пор, как вы включите его.

Проверка состояния и правил ufw
В любое время можно проверить состояние ufw с помощью этой команды:

# ufw status verbose

По умолчанию ufw отключен, поэтому вы должны увидеть что-то вроде этого:

Status: inactive

Если ufw активен, выходные данные скажут, что он активен, и это перечислит любые правила, которые установлены. Например, если брандмауэр настроен на разрешение подключений SSH (порт 22) из любого места, выходные данные могут выглядеть примерно так:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere

Таким образом, используйте команду status, если вам когда-нибудь понадобится проверить, как ufw настроил брандмауэр.

Прежде чем включить ufw, мы должны убедиться, что брандмауэр настроен на подключение по SSH. Начнем с установки политик по умолчанию.

Настройка политик по-умолчанию

Если вы только начинаете работу с брандмауэром, первые правила, которые необходимо определить — это политики по-умолчанию. Эти правила управляют обработкой трафика, который явно не соответствует никаким другим правилам. По умолчанию ufw запрещает все входящие подключения и разрешает все исходящие. Это означает, что любой, кто пытается достичь вашего сервера, не сможет подключиться, в то время как любое приложение на сервере сможет достичь внешнего мира.

Чтобы задать значения по умолчанию, используемые ufw, используйте следующие команды:

# ufw default deny incoming
# ufw default allow outgoing

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

Разрешить SSH-подключения

Если бы мы включили наш брандмауэр ufw сейчас, он бы запретил все входящие соединения. Это означает, что нам нужно будет создать правила, которые явно разрешают законные входящие соединения—SSH или HTTP-соединения, например, если мы хотим, чтобы наш сервер отвечал на эти типы запросов. Если вы используете облачный сервер, вы, вероятно, захотите разрешить входящие ssh-соединения, чтобы вы могли подключаться к серверу и управлять им.

Чтобы настроить сервер на разрешение входящих SSH-подключений, можно использовать эту команду ufw:

# ufw allow ssh

Это создаст правила брандмауэра, которые разрешат все подключения на порту 22, который является портом, который прослушивает демон SSH. ufw знает, что такое «ssh» и множество других имен служб, потому что он указан как служба, использующая порт 22 в файле /etc/services.

Мы можем написать эквивалентное правило, указав порт вместо имени службы. Например, эта команда работает так же, как и выше:

# ufw allow 22

Если демон SSH настроен на использование другого порта, необходимо указать соответствующий порт. Например, если SSH-сервер прослушивает порт 2222, можно использовать эту команду для разрешения подключений к этому порту:

# ufw allow 2222

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

Включить ufw

Чтобы включить ufw, используйте эту команду:

# ufw enable

Вы получите предупреждение, которое говорит, что «команда может нарушить существующие соединения ssh» («command may disrupt existing ssh connections») Мы уже настроили правило брандмауэра, которое разрешает SSH-соединения, поэтому его можно продолжить. Ответьте на приглашение y.

Брандмауэр теперь активен. Не стесняйтесь выполнять команду ufw status verbose, чтобы просмотреть установленные правила.

Разрешить другие подключения

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

Мы покажем несколько примеров очень распространенных служб, которые вам, возможно, потребуется разрешить. Если у вас есть другие службы, для которых вы хотите разрешить все входящие подключения, следуйте этому формату.

HTTP—порт 80

С помощью этой команды можно разрешить HTTP-соединения, которые используются незашифрованными веб-серверами:

# ufw allow http

Если вы предпочитаете использовать номер порта 80, используйте эту команду:

# ufw allow 80

HTTPS—порт 443

С помощью этой команды можно разрешить HTTPS-соединения, используемые зашифрованными веб-серверами:

# ufw allow https

Если вы не хотите использовать номер порта 443, используйте эту команду:

# ufw allow 443

FTP—порт 21

С помощью этой команды можно разрешить FTP-соединения, которые используются для незашифрованных передач файлов (которые вы, вероятно, не должны использовать в любом случае):

# ufw allow ftp

Если вы предпочитаете использовать номер порта, 21, используйте эту команду:

# ufw allow 21/tcp

Разрешить определенные диапазоны портов

Диапазоны портов можно указать с помощью ufw. Некоторые приложения используют несколько портов вместо одного.
Например, чтобы разрешить подключения X11, использующие порты 6000-6007, используйте следующие команды:

# ufw allow 6000:6007/tcp
# ufw allow 6000:6007/udp

При указании диапазонов портов в ufw необходимо указать протокол (tcp или udp), к которому должны применяться правила. Мы не упоминали об этом раньше, потому что не указание протокола просто позволяет использовать оба протокола, что в большинстве случаев нормально.

Разрешить определенные IP-адреса

При работе с ufw можно также указать IP-адреса. Например, если вы хотите разрешить подключения с конкретного IP-адреса, такие как рабочий или домашний адрес 11.11.11.11, нужно указать «from», затем IP-адрес:

# ufw allow from 11.11.11.11

Вы также можете указать конкретный порт, к которому IP-адрес может подключаться, добавив «to any port», а затем номер порта. Например, если вы хотите разрешить 11.11.11.11 подключаться к порту 22 (SSH), используйте следующую команду:

# ufw allow from 11.11.11.11 to any port 22

Разрешить подсети

Если требуется разрешить подсеть IP-адресов, это можно сделать с помощью нотации CIDR для указания маски сети. Например, если необходимо разрешить все IP-адреса в диапазоне от 11.11.11.1 до 11.11.11.254, можно использовать следующую команду:

# ufw allow from 11.11.11.0/24

Кроме того, можно также указать порт назначения, к которому подсети 11.11.11.0/24 разрешено подключаться. Опять же, мы будем использовать порт 22 (SSH) в пример:

# ufw allow from 11.11.11.0/24 to any port 22

Разрешить подключения к определенному сетевому интерфейсу

Если вы хотите создать правило брандмауэра, которое применяется только к определенному сетевому интерфейсу, вы можете сделать это, указав «allow in on», а затем имя сетевого интерфейса.

Перед продолжением может потребоваться поиск сетевых интерфейсов. Для этого используйте следующую команду:

# ip addr

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default

Выделенные выходные данные указывают на имена сетевых интерфейсов. Они обычно называются что-то вроде «eth0» или «eth1».

Таким образом, если ваш сервер имеет общий сетевой интерфейс с именем eth0, вы можете разрешить HTTP-трафик (порт 80) с помощью этой команды:

# ufw allow in on eth0 to any port 80

Это позволит серверу получать HTTP-запросы из интернета.

Или, если вы хотите, чтобы ваш сервер баз данных MySQL (порт 3306) прослушивал соединения на интерфейсе частной сети eth1, например, можно использовать эту команду:

# ufw allow in on eth1 to any port 3306

Это позволит другим серверам в частной сети подключаться к вашей базе данных MySQL.

Запретить соединения

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

Для написания запрещающих правил можно использовать команды, описанные выше, но заменить «allow» на «deny».

Например, чтобы запретить HTTP-соединения, можно использовать следующую команду:

# ufw deny http

Или, если вы хотите запретить все соединения с 11.11.11.11, вы можете использовать эту команду:

# ufw deny from 11.11.11.11

Если вам нужна помощь в написании любых других запрещающих правил, просто посмотрите на предыдущие разрешающие правила и напишите их соответствующим образом.

Удалить правила

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

Удалить по номеру правила

Если вы используете номер правила для удаления правил брандмауэра, первое, что вам нужно сделать, это получить список правил брандмауэра. Команда ufw status имеет возможность отображать номера рядом с каждым правилом, как показано здесь:

# ufw status numbered

Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere

Если мы решим, что хотим удалить Правило 2, которое разрешает подключения через порт 80 (HTTP), мы можем указать его в команде ufw delete следующим образом:

# ufw delete 2

Будет показано приглашение подтверждения на удаление Правила 2, которое позволяет соединения HTTP. Обратите внимание, что если IPv6 включен, необходимо удалить соответствующее правило IPv6.

По фактическому правилу

Например, если вы хотите удалить правило «allow http», вы можете написать его следующим образом:

# ufw delete allow http

Можно также указать правило «allow 80», а не по имени службы:

# ufw delete allow 80

Этот метод удаляет правила IPv4 и IPv6, если они существуют.

Как отключить ufw

Если вы не хотите использовать ufw по любой причине, вы можете отключить его с помощью этой команды:

# ufw disable

Все правила, созданные с помощью ufw, больше не будут активны. Вы всегда можете запустить ufw enable, если вам нужно активировать его снова.

Сброс правил ufw

Если у вас уже настроены правила ufw, но вы решили, что хотите начать все сначала, можно использовать команду reset:

# ufw reset

Это отключит ufw и удалит все правила, которые были определены ранее. Имейте в виду, что политики по умолчанию не изменятся на исходные параметры, если вы измените их в любой момент. Это позволит вам начать заново с ufw.

Вывод

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

Чтобы узнать о более распространенных конфигурациях ufw, ознакомьтесь с этим руководством.

Удачи!


Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

UNLIX © 2019

При копировании материалов ОБЯЗАТЕЛЬНО указывать актуальную ссылку на сайт.