Не работает ufw ubuntu

Uncomplicated Firewall (UFW) ничего не блокирует при использовании Docker

Я впервые настраиваю Ubuntu Server (14.04 LTS), и у меня возникают проблемы с настройкой брандмауэра (UFW).

Мне нужно только, ssh и http поэтому я делаю это:

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

РЕДАКТИРОВАТЬ : эти базы данных находятся в контейнерах Docker. Может ли это быть связано? это переопределяет мой конфиг ufw?

EDIT2 : вывод sudo ufw status verbose

Проблема заключалась в использовании -p флага на контейнерах.

Оказывается, Docker вносит изменения прямо на вас iptables , которые не отображаются с ufw status .

Прекратите использовать -p флаг. Вместо этого используйте Docker Linking или Docker Networks .

Свяжите контейнеры локально, чтобы они не были видны снаружи вашей машины:

docker run -p 127.0.0.1:8080:8080 .

Если вы настаиваете на использовании -p флага, скажите докеру не трогать вас iptables , отключив их /etc/docker/daemon.json и перезапустив:

Я рекомендую вариант 1 или 2. Остерегайтесь того, что вариант 3 имеет побочные эффекты , такие как контейнеры не могут подключиться к Интернету.

16.04 представляет новые проблемы. Я сделал все шаги, как показано Запуск Docker за брандмауэром UFW, НО я НЕ смог заставить работать Docker плюс UFW 16.04. Другими словами, что бы я ни делал, все порты докеров стали глобально доступными для Интернета. Пока я не нашел это: Как настроить Docker 1.12+, чтобы НЕ мешать IPTABLES / FirewallD

Я должен был создать файл /etc/docker/daemon.json и поместить следующее:

Затем я выпустил sudo service docker stop тогда, наконец, sudo service docker start докер просто следует соответствующим правилам в UFW.

Если вы используете систему инициализации systemd (Ubuntu 15.10 и более поздние версии), отредактируйте /etc/docker/daemon.json (возможно, потребуется создать его, если он не существует), убедитесь, что у него iptables настроен ключ:

РЕДАКТИРОВАТЬ : это может привести к потере подключения к Интернету изнутри контейнеров

Если у вас включен UFW, убедитесь, что вы можете получить доступ к Интернету изнутри контейнеров. если нет — вы должны определить , DEFAULT_FORWARD_POLICY как ACCEPT на /etc/default/ufw и применить трюк , описанный здесь: https://stackoverflow.com/a/17498195/507564

Быстрый обходной путь — при запуске Docker и сопоставлении портов. Вы всегда можете сделать

чтобы предотвратить доступ вашего Docker извне.

Использование /etc/docker/daemon.json с контентом

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

То же самое относится и к привязке контейнера к конкретному IP. Вы можете не хотеть этого делать. Окончательный вариант — создать контейнер и оставить его позади UFW, независимо от того, что происходит и как вы создаете этот контейнер, поэтому есть решение:

После того, как вы создадите /etc/docker/daemon.json файл, вызовите:

поэтому вы устанавливаете политику пересылки по умолчанию в UFW для принятия и используете:

Если вы собираетесь использовать docker-compose, то IP-адрес из приведенной выше команды должен быть заменен IP-адресом сети, создаваемой docker-compose при запуске с docker-compose up .

Я описал проблему и решение более подробно в этой статье

Надеюсь, это поможет!

В моем случае я изменил iptables, чтобы разрешить доступ к Docker только с определенных IP-адресов.

Если вы используете -p флаг для контейнеров, Docker вносит изменения непосредственно в iptables, игнорируя ufw.

Пример записей, добавленных в iptables Docker

Маршрут к сети «ДОКЕР»:

Пересылка пакетов из цепочки «DOCKER» в контейнер:

Вы можете изменить iptables, чтобы разрешить доступ к цепочке DOCKER только с указанного исходного IP-адреса (например 1.1.1.1 ):

Возможно, вы захотите использовать iptables-save > /tmp/iptables.conf и iptables-restore выводить, редактировать и восстанавливать правила iptables.

Читайте также:  Как настроить службы системы

Используйте —network = host при запуске контейнера, чтобы docker отображал порт в изолированную сеть только для хоста вместо мостовой сети по умолчанию. Я не вижу законных способов заблокировать мостовую сеть. В качестве альтернативы вы можете использовать пользовательскую сеть с изоляцией.

Войдите в вашу консоль докера:

sudo docker exec -i -t docker_image_name / bin / bash

И затем в вашей консоли докера:

Добавьте свои правила UFW и включите UFW

  • Ваш образ Docker должен быть запущен с —cap-add = NET_ADMIN

Чтобы включить опцию Docker «NET_ADMIN»:

Докер останови свой контейнер; 2. Получить идентификатор контейнера:

Докер проверяет ваш контейнер; 3. Модифицировать hostconfig.json (путь к докеру по умолчанию: / var / lib / docker, вы можете изменить свой)

4. Найдите «CapAdd» и измените null на [«NET_ADMIN»];

. «VolumesFrom»: null, «CapAdd»: [«NET_ADMIN»], «CapDrop»: null, . 5.Перезапустите докер на хост-компьютере;

перезапуск сервисного докера; 6. Запустите свой контейнер;

Источник

Как настроить брандмауэр с UFW в Ubuntu 20.04

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

Ubuntu поставляется с инструментом настройки межсетевого экрана под названием UFW (Несложный межсетевой экран). Это удобный интерфейс для управления правилами брандмауэра iptables. Его основная цель — упростить или, как следует из названия, упростить управление межсетевым экраном.

В этой статье описывается, как использовать инструмент UFW для настройки и управления брандмауэром в Ubuntu 20.04. Правильно настроенный брандмауэр — один из наиболее важных аспектов общей безопасности системы.

Подготовка

Только root или пользователи с привилегиями sudo могут управлять системным брандмауэром. Лучше всего запускать административные задачи от имени пользователя sudo.

Установить UFW

UFW является частью стандартной установки Ubuntu 20.04 и должен присутствовать в вашей системе. Если по какой-то причине он не установлен, вы можете установить пакет, набрав:

Проверить статус UFW

По умолчанию UFW отключен. Вы можете проверить статус службы UFW с помощью следующей команды:

Вывод покажет, что состояние брандмауэра неактивно:

Если UFW активирован, вывод будет выглядеть примерно так:

Политики UFW по умолчанию

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

Политики по умолчанию определены в /etc/default/ufw и могут быть изменены либо путем изменения файла вручную, либо с помощью команды sudo ufw default

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

Профили приложений

Профиль приложения — это текстовый файл в формате INI, который описывает службу и содержит правила брандмауэра для службы. Профили приложений создаются в каталоге /etc/ufw/applications.d во время установки пакета.

Вы можете просмотреть все профили приложений, доступные на вашем сервере, набрав:

В зависимости от пакетов, установленных в вашей системе, вывод будет выглядеть следующим образом:

Чтобы найти дополнительную информацию о конкретном профиле и включенных правилах, используйте следующую команду:

Выходные данные показывают, что профиль «Nginx Full» открывает порты 80 и 443 .

Вы также можете создавать собственные профили для своих приложений.

Включение UFW

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

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

Если SSH работает на нестандартном порту , вам необходимо открыть этот порт.

Например, если ваш демон ssh прослушивает порт 7722 , введите следующую команду, чтобы разрешить соединения на этом порту:

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

Вы будете предупреждены, что включение брандмауэра может нарушить существующие соединения ssh, просто введите y и нажмите Enter .

Открытие портов

В зависимости от приложений, которые работают в системе, вам также может потребоваться открыть другие порты. Общий синтаксис открытия порта следующий:

Ниже приведены несколько способов, как разрешить HTTP-соединения.

Первый вариант — использовать имя службы. UFW проверяет файл /etc/services предмет порта и протокола указанной службы:

Вы также можете указать номер порта и протокол:

Если протокол не указан, UFW создает правила как для tcp и для udp .

Другой вариант — использовать профиль приложения; в данном случае Nginx HTTP:

Читайте также:  Деньги гугл не работает

UFW также поддерживает другой синтаксис для указания протокола с помощью ключевого слова proto :

Портовые диапазоны

UFW также позволяет открывать диапазоны портов. Открывающий и закрывающий порты разделяются двоеточием ( : ), и вы должны указать протокол, либо tcp или udp .

Например, если вы хотите разрешить порты с 7100 до 7200 как на tcp и на udp , вы должны выполнить следующую команду:

Определенный IP-адрес и порт

Чтобы разрешить соединения на всех портах с заданного IP-адреса источника, используйте ключевое слово from за которым следует адрес источника.

Вот пример внесения IP-адреса в белый список:

Если вы хотите разрешить данному IP-адресу доступ только к определенному порту, используйте ключевое слово to any port за которым следует номер порта.

Например, чтобы разрешить доступ к порту 22 с машины с IP-адресом 64.63.62.61 , введите:

Подсети

Синтаксис разрешения подключений к подсети IP-адресов такой же, как и при использовании одного IP-адреса. Единственное отличие состоит в том, что вам нужно указать маску сети.

Ниже приведен пример, показывающий, как разрешить доступ для IP-адресов от 192.168.1.1 до 192.168.1.254 до порта 3360 ( MySQL ):

Конкретный сетевой интерфейс

Чтобы разрешить подключения к определенному сетевому интерфейсу, используйте ключевое слово in on за которым следует имя сетевого интерфейса:

Отказ от подключений

Политика по умолчанию для всех входящих подключений настроена на deny , и если вы не изменили ее, UFW заблокирует все входящие подключения, если вы специально не откроете подключение.

Написание запрещающих правил аналогично написанию разрешающих правил; вам нужно только использовать ключевое слово deny вместо allow .

Допустим, вы открыли порты 80 и 443 , и ваш сервер атакован из сети 23.24.25.0/24 . Чтобы запретить все соединения с 23.24.25.0/24 вы должны выполнить следующую команду:

Вот пример 23.24.25.0/24 доступа только к портам 80 и 443 из 23.24.25.0/24 вы можете использовать следующую команду:

Удаление правил UFW

Есть два разных способа удалить правила UFW по номеру правила и указав фактическое правило.

Удалять правила по номеру правила проще, особенно если вы новичок в UFW. Чтобы сначала удалить правило по номеру правила, вам нужно найти номер правила, которое вы хотите удалить. Чтобы получить список пронумерованных правил, используйте команду ufw status numbered :

Чтобы удалить правило номер 3 , которое разрешает подключения к порту 8080 , вы должны ввести:

Второй способ — удалить правило, указав фактическое правило. Например, если вы добавили правило для открытия порта 8069 вы можете удалить его с помощью:

Отключение UFW

Если по какой-либо причине вы хотите остановить UFW и деактивировать все правила, вы можете использовать:

Позже, если вы захотите снова включить UTF и активировать все правила, просто введите:

Сброс UFW

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

Чтобы сбросить UFW, введите следующую команду:

IP-маскарадинг

IP Masquerading — это вариант NAT (трансляция сетевых адресов) в ядре Linux, который преобразует сетевой трафик путем перезаписи исходных и целевых IP-адресов и портов. С помощью IP Masquerading вы можете разрешить одной или нескольким машинам в частной сети связываться с Интернетом, используя одну машину Linux, которая действует как шлюз.

Настройка IP-маскарадинга с помощью UFW включает несколько шагов.

Во-первых, вам нужно включить переадресацию IP. Для этого откройте файл /etc/ufw/sysctl.conf :

Найдите и раскомментируйте строку net.ipv4.ip_forward = 1 :

Затем вам нужно настроить UFW, чтобы разрешить пересылку пакетов. Откройте файл конфигурации UFW:

Найдите ключ DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :

Теперь вам нужно установить политику по умолчанию для цепочки POSTROUTING в таблице nat и правило маскарада. Для этого откройте файл /etc/ufw/before.rules и добавьте строки, выделенные желтым, как показано ниже:

Добавьте следующие строки:

Не забудьте заменить eth0 в строке -A POSTROUTING чтобы он соответствовал имени публичного сетевого интерфейса:

Когда вы закончите, сохраните и закройте файл.

Наконец, перезагрузите правила UFW, отключив и снова включив UFW:

Выводы

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

Для получения дополнительной информации по этой теме посетитесправочную страницу UFW .

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Источник

Настройка фаервола в Ubuntu с помощью утилиты UFW

Введение

UFW (Uncomplicated Firewall) — удобный интерфейс для управления политиками безопасности межсетевого экрана. Наши серверы постоянно подвергаются различным атакам или сканируются в поиске уязвимостей. Как только эти уязвимости находятся, мы рискуем стать частью ботнета, раскрыть конфиденциальные данные или потерять деньги из-за сбоев в работе веб-приложений. Одной из первых мер по снижению рисков безопасности является грамотная настройка правил межсетевого экрана. В нашем руководстве мы рассмотрим основные команды и правила работы с утилитой UFW.

Читайте также:  Лада веста не работает ближний свет причины

Предварительные требования

  1. Для начала работы с UFW вам потребуется суперпользователь( возможность исполнения команд под sudo).
  2. Утилита UFW предустановлена в системе. Если по какой-то причине она была отсутствует, вы можете установить ее с помощью команды:

Проверка правил и текущего состояния UFW

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

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

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

Так вы всегда можете узнать как настроен фаервол.

Внимание! Проведите начальную настройку перед включением UFW. В частности, должен быть доступен SSH(22 порт). В ином случае вы рискуете потерять доступ к серверу.

Начальная настройка

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

Cоответствующие правила фаервола прописываются так:

Добавление правила для SSH-соединений

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

SSH демон прослушивает 22 порт. UFW знает об именах распространенных служб (ssh, sftp, http, https), поэтому вы можете использовать их вместо номера порта.

Если ваш SSH-демон использует другой порт, вам необходимо указать его в явном виде, например:

Теперь, когда ваш межсетевой экран настроен, можете включать его.

Запуск UFW

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

Вы получите похожее предупреждение:

Это означает, что запуск этого сервиса может разорвать текущее ssh соединение.
Но, так как мы его уже добавили ssh в правила, этого не произойдет. Поэтому просто нажмите (y).

Добавление правил для других подключений

Чтобы ваши приложения работали корректно, вам необходимо добавить другие правила. Ниже будут показаны настроить для наиболее распространённых служб.

HTTP (80 порт)

Для работы не зашифрованных веб-серверов используйте следующую команду:

HTTPS (443 порт)

То же самое, что и в предыдущем примере, но для зашифрованных соединений:

FTP (21 порт)

Данный порт используется для незашифрованной передачи файлов:

Добавление диапазонов портов

Также вы можете указывать конкретный протокол:

Добавление IP-адресов

Вs можете указать IP-адрес, которому будет разрешен доступ.

В приведенном примере указанному адресу разрешается доступ ко всем портам сервера.

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

Аналогичным образом вы можете работать с диапазонами IP-адресов:

Ограничение подключений

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

Если вы хотите запретить все соединения с 123.45.67.89, воспользуйтесь следующей командой:

Удаление правил

Существует два способа удаления правил. Первый — по номеру правила. Выполните команду:

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

Второй способ заключается в том, что после команды ufw delete используется фактическое правило, например:

Отключение UFW

Отключить UFW можно при помощи команды:

В результате ее выполнения все созданные ранее правила утратят силу.

Сброс правил

Если вам требуется сбросить текущие настройки, воспользуйтесь командой:

В результате ее выполнения все правила будут отключены и удалены.

В Ufw есть опция сохранения логов — журнал событий. Для запуска, используйте команду:

Ufw поддерживает нескоько уровней логгирования:

  • off — отключен.
  • low — регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам.
  • medium — все то, что при значении low. Плюс все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости.
  • high — работает также как и medium. Плюс все пакеты с ограничением скорости.
  • full — также как и high, но без ограниения скорости.

Чтобы задать уровень, укажите его как параметр:

По умолчанию используется уровень low.

Для просмотра файлов относящихся с логам ufw используйте команду:

Заключение

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

Источник

Оцените статью