Ubuntu ufw открыть порт
Ядро линукс включает подсистему Netfilter (сетевой фильтр), который используется для манипулирования или решения судьбы сетевого трафика передаваемого в или через ваш сервер. Все современные решения линукс по сетевой защите используют эту систему пакетной фильтрации.
Система пакетной фильтрации на уровне ядра была бы малоиспользуема администраторами без пользовательского интерфейса для ее управления. Для этого предназначен iptables. Когда пакет попадает на ваш сервер, он передается подсистеме Netfilter для одобрения, изменения или отказа на основе правил, которые она получает от интерфейса пользователя через iptables. Таким образом iptables - это все, что вам нужно для управления вашей сетевой защитой, если вы хорошо с ним знакомы, однако множество внешних интерфейсов доступны для упрощения этой задачи.
ufw - простой Firewall
Инструмент для настройки сетевой защиты Ubuntu по умолчанию - это ufw. Он разработан для легкой настройки iptables и предоставляет дружественный способ создания сетевой защиты для IPv4 и IPv6.
По умолчанию изначально ufw выключен. Со страницы man руководства ufw:
«ufw не предназначен для обеспечения полной функциональности брандмауэра через свой командный интерфейс, но он предоставляет легкий способ добавления или удаления простых правил. Сейчас в большинстве случаев он используется для централизованных брандмауэров.»
Далее следуют несколько примеров использования ufw:
1. Для начала требуется разрешить ufw. Наберите в терминале:
2. Открыть порт (в данном примере SSH ):
3. Правила могут быть добавлены с использованием нумерованного формата:
4. Подобным образом можно закрыть открытый порт:
5. Для удаления правила используйте delete:
6. Также можно разрешить доступ к порту с определенных компьютеров или сетей. Следующий пример разрешает на этом компьютере доступ по SSH с адреса 192.168.0.2 на любой IP адрес:
Замените 192.168.0.2 на 192.168.0.0/24 чтобы разрешить доступ по SSH для всей подсети.
8. ufw можно выключить командой:
9. Чтобы посмотреть статус сетевой защиты:
10. Для более полного отображения информации введите:
11. Для отображения в виде формата numbered:
Если порт, который вы хотите открыть или закрыть определен в файле /etc/services, вы можете использовать имя порта вместо его номера. В приведенных выше примерах можете заменить 22 на ssh.Это лишь краткое описание использования ufw. Пожалуйста обратитесь к странице man ufw для более подробной информации.
Интеграция Приложений в ufw
Приложения, которые открывают порты, можно включать в профили ufw, которые детализируют какие порты необходимы этому приложению для корректной работы. Профили содержатся в /etc/ufw/applications.d, и могут быть отредактированы, если порты по умолчанию были изменены.
1. Чтобы посмотреть для каких приложений установлен профиль введите следующую команду в терминале:
2. Аналогично, разрешить трафик по порту, используя профиль приложения, можно следующей командой:
3. Также доступен расширенный синтаксис:
Замените Samba и 192.168.0.0/24 на используемый вами профиль приложения и IP диапазон вашей сети.
Нет необходимости в определении протокола, поскольку эта информация детализирована в профиле. Также обратите внимание, что имя app заменило номер port.4. Для просмотра деталей какие порты, протоколы и пр. определены для приложения введите:
Не для всех приложений, которые требуют открытие сетевого порта, поставляется профиль ufw, но если у вас есть профиль для приложения, и вы хотите чтобы этот файл был включен в пакет приложения, зарегистрируйте ошибку о пакете на сайте Launchpad.
Маскировка IP
Цель маскировки ip-адреса состоит в том, чтобы компьютеры с частными, немаршрутизируемыми ip-адресами в вашей сети могли иметь доступ к Интернету через компьютер выполняющий маскировку. Трафик из вашей частной сети попадающий в Интернет должен быть правильно выпущен для корректного ответа, отправленного именно тому компьютеру, который послал запрос. Чтобы сделать это, ядро модифицирует заголовок каждого пакета так, чтобы ответ приходил нужному компьютеру, а не частному ip-адресу, который послал запрос, что невозможно в рамках сети Интернет. Линукс использует Трассировку Соединений (conntrack) для трассировки каждого из соединений принадлежащих соответствующим компьютерам и перенаправляет каждый возвращенный пакет. Трафик, покидает вашу частную сеть «маскируясь» таким образом, будто исходит от вашего шлюза Ubuntu. Этот процесс обозначен в документации Microsoft как Internet Connection Sharing (Общий доступ к Интернет-Соединению).
Маскировка ufw
Эти правила разбиты на два разных файла команд, одни должны быть выполнены ufw перед списком правил, а другие выполняются после списка правил.
1. Во-первых, в ufw должно быть активировано перенаправление. Для этого нужно изменить конфигурацию двух файлов, в /etc/default/ufw измените DEFAULT_FORWARD_POLICY на “ACCEPT”:
Затем отредактируйте /etc/ufw/sysctl.conf следующим образом:
Аналогично для IPv6:
Комментарии не обязательны, но считается хорошим тоном документировать свою конфигурацию. Также при изменении каких-либо rules файлов в каталоге /etc/ufw, убедитесь, что данные строки являются последними для каждой измененной таблицы:
Для каждой таблицы обязательно присутствие соответствующего ей оператора COMMIT (применение изменений). В данных примерах показаны только таблицы nat и filter, но вы можете также добавлять правила для таблиц raw и mangle.
В примерах выше замените eth0, eth1 и 192.168.0.0/24 на соответствующие интерфейсы и IP диапазон вашей сети.3. Наконец, выключите и повторно включите ufw для применения изменений:
Маскировка iptables
Iptables также может быть использован для маскировки соединений.
1. Подобно ufw, первым делом нам необходимо включить форвардинг для IPv4 отредактировав следующий файл /etc/sysctl.conf и убрав комментарий со строки:
Если вы хотите включить форвардинг для IPv6 также удалите комментарий:
2. Далее выполните команду sysctl для применения новых настроек в файле конфигурации:
3. Теперь настройка маскировки ip-адреса может быть завершена с выполнением лишь одной команды, которая может немного отличатся в зависимости от вашей конфигурации сети:
После выполнения этой команды можно считать, что ваша частная сеть имеет адрес 192.168.0.0/16, а сетевая карта с выходом в Интернет - ppp0. Синтаксис определен следующим образом:
1. -t nat – правило применяется к таблице nat
2. -A POSTROUTING – правило добавлено (-A) в цепочку POSTROUTING
3. -s 192.168.0.0/16 – правило применено к трафику, исходящему из этого адресного пространства
5. -j MASQUERADE – трафик подпадающий под это правило выполняет «прыжок» («jump») (-j) в цепочку MASQUERADE для дальнейшей манипуляции с ним как описаны выше
4. Также каждая цепочка таблицы filter (цепочка, где происходит фильтрация большинства пакетов) по умолчанию имеет правило ACCEPT, но если вы настраиваете ваш firewall с целью создания шлюза, вы должны выбрать либо политику DROP либо REJECT, в этом случае ваш «замаскированный» трафик должен быть пропущен через цепочку FORWARD для срабатывания предыдущих правил:
Вышеперечисленные команды разрешают форвардинг всех соединений из локальной сети в Интернет, а весь трафик относящийся к этим соединениям возвращается к компьютерам, пославшим запрос.
Если вы хотите, чтобы маскировка работала после перезагрузки ПК, отредактируйте файл /etc/rc.local и добавьте туде вышеперечисленные команды. Например, добавьте первую команду без опций фильтрации:
Журналы
Журналы firewall крайне необходимы для обнаружения атак, возникающих проблем с правилами, а также обнаружения повышенной активности в вашей сети. В настройках firewall необходимо включить журналирование для правил, которое должно быть указано перед списком правил (правил, которые решают дальнейшую судьбу пакета, такие как ACCEPT, DROP или REJECT).
Если вы используете ufw, журналирование можно включить следующей командой:
Чтобы выключить журналирование в ufw просто замените значение on на off.
Для iptables введите:
В этом случае в начале поступит запрос на порт 80 от компьютера в локальной сети, затем будет сгенерирован файл журнала в dmesg который выгдлядит примерно так (одна строка разделена на три для корректного отображения на экране):
Этот текст журнала также появится в файле /var/log/messages, /var/log/syslog и /var/log/kern.log. Эти настройки можно изменить отредактировав файл /etc/syslog.conf аналогично или при установке и настройке ulogd, а также используя ULOG вместо LOG. Демон ulogd это пользовательский сервер который слушает инструкции ядра для дальнейшего журналирования, в частности для firewall, и может вести журналирование даже в PostgreSQL или MySQL базы данных. Для того, чтобы легко разобраться в файлах журнала можно использовать их анализаторы, такие как logwatch, fwanalog, fwlogwatch или lire.
Другие инструменты
Существует множество утилит для помощи в построении полноценного firewall без углубленных навыков в iptables.
Для работы с интерфейсом:
1. fwbuilder очень мощная утилита, которая настраивается подобно проприетарным продуктам вроде Checkpoint FireWall-1.
Если вы предпочитаете утилиты с поддержкой командной строки и списком файлов конфигураций:
2. Shorewall - мощное решение, которое поможет вам создать серьезный firewall для любого типа вашей сети.
Ссылки
1. Вики страница Ubuntu Firewall содержит необходимую информацию о работе над ufw.
2. Также посмотрите man страницу ufw, которая содержит много полезной информации: man ufw.
3. Для более подробной информации об использовании iptables смотрите packet-filtering-HOWTO.
4. Руководство nat-HOWTO содержит полное описание о маскировке соединений.
UFW (Uncomplicated Firewall или «простой брандмауэр») представляет собой интерфейс iptables , предназначенный для упрощения процесса настройки брандмауэра. Хотя iptables — надежный и гибкий инструмент, начинающим бывает сложно научиться использовать его для правильной настройки брандмауэра. Если вы ищете способ защитить вашу сеть и не знаете, какой инструмент для этого использовать, UFW может отлично вам подойти.
В этом обучающем модуле вы научитесь настраивать брандмауэр с помощью UFW в Ubuntu 18.04
Предварительные требования
Для данного обучающего модуля вам потребуется следующее:
- Один сервер Ubuntu 18.04 с пользователем sudo без привилегий root, который можно настроить в соответствии указаниями шагов 1–3 обучающего модуля Начальная настройка сервера Ubuntu 18.04.
UFW устанавливается в Ubuntu по умолчанию. Если вы удалили UFW, вы можете установить его с помощью команды sudo apt install ufw .
Шаг 1 — Использование IPv6 с UFW (опционально)
Этот обучающий модуль предусматривает использование протокола IPv4, но подходит и для IPv6, если вы активировали этот протокол. Если на вашем сервере Ubuntu активирован протокол IPv6, настройте UFW для поддержки IPv6, чтобы UFW управлял правилами брандмауэра и для IPv6, и для IPv4. Для этого откройте конфигурацию UFW с помощью nano или своего предпочитаемого редактора.
Убедитесь, что параметр IPV6 имеет значение yes . Конфигурация должна выглядеть следующим образом:
Сохраните и закройте файл. После активации UFW будет настроен для записи правил брандмауэра для IPv4 и для IPv6. Однако перед включением UFW нужно убедиться, что ваш брандмауэр настроен для подключения через SSH. Для начала настроим политики по умолчанию.
Шаг 2 — Настройка политик по умолчанию
Если вы только начинаете работать с брандмауэром, прежде всего нужно настроить политики по умолчанию. Эти правила определяют обработку трафика, который явно не соответствует каким-либо другим правилам. По умолчанию UFW настроен так, чтобы запрещать все входящие соединения и разрешать все исходящие соединения. Это означает, что любые попытки связаться с вашим сервером будут заблокированы, но любые приложения на вашем сервере будут иметь связь с внешним миром.
Восстановим правила UFW по умолчанию, чтобы продолжить выполнение этого обучающего модуля. Для восстановления настроек по умолчанию для UFW необходимо использовать следующие команды:
Эти команды задают значения по умолчанию, запрещая входящие соединения и разрешая исходящие. Такие параметры брандмауэра по умолчанию достаточны для персонального компьютера, но серверам обычно нужно отвечать на поступающие запросы внешних пользователей. Мы рассмотрим это чуть позже.
Шаг 3 — Разрешение подключений SSH
Чтобы разрешить на сервере входящие соединения SSH, вы можете использовать следующую команду:
Эта команда создаст правила брандмауэра, которые разрешат все соединения на порту 22 , который демон SSH прослушивает по умолчанию. UFW знает, какой порт имеет в виду команда allow ssh , потому что он указан как услуга в файле /etc/services .
Однако мы можем записать эквивалентное правило, указав номер порта вместо имени службы. Например, эта команда работает так же, как показанная выше:
Если вы настроили демон SSH для использования другого порта, вам нужно будет указать соответствующий порт. Например, если ваш сервер SSH прослушивает порт 2222 , вы можете использовать эту команду, чтобы разрешить соединения с этим портом:
Теперь ваш брандмауэр настроен, чтобы разрешать входящие соединения SSH, и мы можем его активировать.
Шаг 4 — Активация UFW
Чтобы активировать UFW, используйте следующую команду:
Вы получите предупреждение о том, что команда может нарушить существующие соединения SSH. Мы уже установили правило брандмауэра, разрешающее соединения SSH, и теперь мы можем продолжить. Введите y в диалоговом окне и нажмите ENTER .
Теперь брандмауэр включен. Запустите команду sudo ufw status verbose , чтобы посмотреть заданные правила. В остальной части этого обучающего модуля более подробно рассказывается об использовании UFW, например, о запрете различных видов соединений.
Шаг 5 — Разрешение других соединений
К этому моменту вы должны были разрешить все другие соединения, необходимые вашему серверу. Состав разрешаемых соединений должен соответствовать вашим конкретным потребностям. К счастью, вы уже знаете, как писать правила, разрешающие соединения по имени службы или номеру порта, поскольку мы уже делали это для SSH на порту 22 . Также вы можете использовать это для следующих соединений:
Помимо указания порта или службы есть другие способы разрешить другие соединения.
Определенные диапазоны портов
С помощью UFW вы можете указывать диапазоны портов. Некоторые приложения используют для соединений не один порт, а несколько.
Например, чтобы разрешить соединения X11, которые используют порты 6000 - 6007 , нужно использовать следующие команды:
Когда вы указываете диапазоны портов с помощью UFW, вы должны указать протокол ( tcp или udp) , к которому должны применяться эти правила. Мы не упоминали этого ранее, поскольку если протокол не указать, оба протокола будут разрешены, что подходит для большинства случаев.
Конкретные IP-адреса
При работе с UFW вы также можете указывать конкретные IP-адреса. Например, если вы хотите разрешить соединения с определенного IP-адреса, например с рабочего или домашнего адреса 203.0.113.4 , вам нужно использовать опцию from , а затем указать IP-адрес:
Также вы можете указать определенный порт, к которому IP-адресу разрешено подключаться. Для этого нужно добавить опцию to any port , а затем указать номер порта. Например, если вы хотите разрешить IP-адресу 203.0.113.4 подключаться к порту 22 (SSH), нужно использовать следующую команду:
Подсети
Если вы хотите разрешить подсеть IP-адресов, вы можете указать маску сети с помощью нотации CIDR. Например, если вы хотите разрешить все IP-адреса в диапазоне от 203.0.113.1 до 203.0.113.254 , вы можете использовать следующую команду:
Также вы можете указывать порт назначения, к которому разрешено подключаться подсети 203.0.113.0/24 . В качестве примера мы используем порт 22 (SSH):
Подключения к определенному сетевому интерфейсу
Если вы хотите создать правило брандмауэра, применимое только к определенному сетевому интерфейсу, вы можете использовать для этого опцию «allow in on», а затем указать имя сетевого интерфейса.
Прежде чем продолжить, вам может понадобиться просмотреть сетевые интерфейсы. Для этого нужно использовать следующую команду:
В выделенной части результатов показаны имена сетевых интерфейсов. Обычно они носят имена вида eth0 или enp3s2 .
Если вы хотите использовать сервер базы данных MySQL (порт 3306 ) для прослушивания соединений на интерфейсе частной сети (например, eth1 ), вы можете использовать следующую команду:
Это позволит другим серверам в вашей частной сети подключаться к вашей базе данных MySQL.
Шаг 6 — Запрет соединений
Если вы не изменяли политику по умолчанию для входящих соединений, UFW настроен на запрет всех входящих соединений. Это упрощает процесс создания защищенной политики брандмауэра, поскольку вам нужно создавать правила, прямо разрешающие соединения через конкретные порты и IP-адреса.
Однако в некоторых случаях вам может понадобиться запретить определенные соединения по IP-адресу источника или подсети, например, в случае атаки с этого адреса. Если вы захотите изменить политику по умолчанию для входящих соединений на allow (что не рекомендуется), вам нужно будет создать правила deny для любых служб или IP-адресов, которым вы не хотите разрешать подключение.
Для записи правил deny можно использовать описанные выше команды, заменяя allow на deny.
Если вы захотите запретить все подключения с IP-адреса 203.0.113.4 , вы можете использовать следующую команду:
Теперь посмотрим, как можно удалять правила.
Шаг 7 — Удаление правил
Знать процедуру удаления правил брандмауэра так же важно, как и знать процедуру их создания. Существует два разных способа указывать правила для удаления: по номеру правила или по фактическому правилу (так же, как правила задавались при их создании). Начнем с метода удаления по номеру правила, поскольку этот метод проще.
По номеру правила
Если вы используете номер правила для удаления правил брандмауэра, прежде всего нужно получить список правил брандмауэра. Команда UFW status имеет опцию отображение номеров рядом с каждым правилом, как показано здесь:
По фактическому имени правила
Также вы можете указать это правило как allow 80 , а не указывать имя службы:
Этот метод удалит правила IPv4 и IPv6, если они существуют.
Шаг 8 — Проверка состояния и правил UFW
Вы можете проверить состояние UFW в любое время с помощью следующей команды:
Если UFW отключен (по умолчанию), вы увидите примерно следующее:
Если UFW активен (т. е. вы выполнили шаг 3), в результатах будет показано, что он активен, и будет выведен список заданных правил. Например, если настройки брандмауэра разрешают соединения SSH (порт 22 ) из любого источника, результат может выглядеть примерно так:
Используйте команду status, если хотите проверить настройку брандмауэра UFW.
Шаг 9 — Отключение или сброс UFW (необязательно)
Если вы решите прекратить использовать UFW, вы можете отключить его с помощью следующей команды:
Любые правила, созданные с помощью UFW, больше не будут активными. Если впоследствии вы захотите активировать UWF, вы всегда сможете использовать команду sudo ufw enable .
Если вы уже настроили правила UFW, но решите начать заново, вы можете использовать команду reset:
Эта команда отключит UFW и удалит все ранее заданные правила. Помните, что если вы изменяли политики по умолчанию, их первоначальные настройки не восстановятся. Это позволит заново начать настройку UFW.
Заключение
Теперь ваш брандмауэр настроен так, чтобы разрешать (как минимум) соединения SSH. Обязательно разрешите другие входящие соединения для вашего сервера, но при этом ограничьте все ненужные соединения, чтобы сделать свой сервер функциональным и безопасным.
Чтобы узнать о других распространенных конфигурациях UFW, ознакомьтесь с обучающим модулем Основы UFW: распространенные правила и команды брандмауэра.
Во всех дистрибутивах 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 действие] IN=интерфейс OUT=итерфейс SRC=ip_источника DST=ip_назначения LEN=размер_пакета TOS=0x10 PREC=0x00 TTL=64 DF PROTO=протокол SPT=порт_источника DPT=порт назначения LEN=размер_пакета
В качестве действия приводится то, что UFW сделал с пакетом, например ALLOW, BLOCK или AUDIT. Благодаря анализу лога настройка UFW Ubuntu станет гораздо проще.
8. Отключение UFW
Если вы хотите полностью отключить UFW, для этого достаточно использовать команду disable:
sudo ufw disable
Выводы
В этой небольшой статье мы разобрали, как настроить UFW Ubuntu для защиты вашего компьютера от угроз из сети. Это особенно актуально для серверов, потому что они постоянно доступны из интернета.
UFW (Uncomplicated Firewall) – это интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Инструмент iptables надёжный и гибкий, но новичку будет непросто настроить его самостоятельно. Я как раз новичок в этом деле.
По умолчанию в iptables включена политика ACCEPT и выглядет это так:
В нашем примере нет никаких ограничений. Политика по умолчанию — ACCEPT.
INPUT – ВХОДЯЩИЕ СОЕДИНЕНИЯ.
OUTPUT – ИСХОДЯЩИЕ СОЕДИНЕНИЯ.
FORWARD – МАРШРУТИЗАЦИЯ (НАПРИМЕР, НЕОБХОДИМО ПРОПИСАТЬ МАРШРУТ к компьютеру за шлюзом).
Включить ufw можно командой sudo ufw enable
И сразу же после этой команды политика iptables поменяется.
Вот как она выглядит на BigBlueButton после включения ufw:
Выделенная область – это место для правил пользователя, они прописываются командами:
sudo ufw allow ssh (по названию порта)
sudo ufw allow 22 (конкретно указать номер порта)
sudo ufw allow 80/udp (конкретно с указанием номера порта и протокола tcp или udp)
Для диапазона портов:
Выкладываю порядок действий по настройке ufw на примере bbb.
Во-первых, смотрим какие сервисы какие порты слушают:
tcp 0 0 xxx.xxx.xxx.x:5090 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 1720/soffice.bin
tcp 0 0 xxx.xxx.xxx.x:5060 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 127.0.0.1:8101 0.0.0.0:* LISTEN 1766/soffice.bin
tcp 0 0 127.0.0.1:8102 0.0.0.0:* LISTEN 1811/soffice.bin
tcp 0 0 127.0.0.1:8103 0.0.0.0:* LISTEN 1856/soffice.bin
tcp 0 0 xxx.xxx.xxx.x:2855 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 127.0.0.1:8104 0.0.0.0:* LISTEN 1902/soffice.bin
tcp 0 0 xxx.xxx.xxx.x:2856 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1186/mongod
tcp 0 0 xxx.xxx.xxx.x:5066 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1227/redis-server 1
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1359/nginx -g daemo
tcp 0 0 xxx.xxx.xxx.x:8081 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 xxx.xxx.xxx.x:8082 0.0.0.0:* LISTEN 1258/freeswitch
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1176/sshd
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 1195/node
tcp6 0 0 ::1:5090 . * LISTEN 1258/freeswitch
tcp6 0 0 ::1:5060 . * LISTEN 1258/freeswitch
tcp6 0 0 127.0.0.1:8005 . * LISTEN 1341/java
tcp6 0 0 . 5070 . * LISTEN 1461/java
tcp6 0 0 . 9999 . * LISTEN 1461/java
tcp6 0 0 . 1935 . * LISTEN 1461/java
tcp6 0 0 . 8080 . * LISTEN 1341/java
tcp6 0 0 . 80 . * LISTEN 1359/nginx -g daemo
tcp6 0 0 ::1:8081 . * LISTEN 1258/freeswitch
tcp6 0 0 ::1:8082 . * LISTEN 1258/freeswitch
tcp6 0 0 . 8021 . * LISTEN 1258/freeswitch
tcp6 0 0 . 22 . * LISTEN 1176/sshd
tcp6 0 0 . 5080 . * LISTEN 1461/java
Нас интересуют строчки с xxx.xxx.xxx.x (xxx.xxx.xxx.x – ip-адрес вашего сервера), так как это указывает что сервис слушает сетевую карту на наличие входящих запросов из всех сетей (0.0.0.0:*). Строчки с 127.0.0.1 нас не интересуют так как это внутренний интерфейс, так же нас интересует сточки с 0.0.0.0 в 4 столбце (выделен жирным), например
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1359/nginx -g daemo
так как это говорит, что 80 порт открыт для всех интерфейсов сервера и принимает запросы со всех сетей.
Итак, согласно этому составляем правила:
sudo ufw allow 22 для ssh
sudo ufw allow 80 для вебсервера nginx или apache
Целый ряд правил для freeswitch:
для сервиса node:
sudo ufw allow 3000
Далее необходимо посмотреть все-таки документацию, в которой мы увидим что необходимо открыть следующие порты:
sudo ufw allow 16384:32768/udp — для работы WebRTC
sudo ufw allow 443
sudo ufw allow 1935
На этом базовая настройка ufw для сервера BigBlueButton 2.0 закончена.
Добавлю только то, что желательно или отключать ssh или менять порт, или разрешить этот порт только для определенной сети, например для сети вашего предприятия.
К примеру, ваш шлюз имеет два сетевых интерфейса один виртуальный (к пользователям) 192.168.3.2, а другой реальный 105.ххх.ххх.ххх (к провайдеру), вот для правила ufw берем реальный ip, а точнее указываем сеть, которой принадлежит этот ip.
Сначала меняем порт в конфигурационном файле SSH сервера, воспользоваться можно любым текстовым редактором:
Затем удаляем правило, разрешающее 22 порт:
Sudo ufw delete allow 22 – иногда называется OpenSSH.
Создаем правило разрешающее подключение к новому порту только из сети предприятия:
Затем перезагружаем ssh сервис:
И смотрим результат
а в правилах ufw увидим, кто имеет доступ к порту:
Читайте также: