UFW: различия между версиями

Материал из ALT Linux Wiki
м (Generic переименовал страницу UFW в Категория:UFW)
(Действительно, ссылка на задание — опасная штука)
 
(не показано 8 промежуточных версий 3 участников)
Строка 1: Строка 1:
[[Категория:Admin]]
[[Категория:Руководства]]
==Установка ufw на ALT Linux==
==Установка ufw на ALT Linux==
UFW (Uncomplicated Firewall) - является самым простым и довольно популярным инструментарием командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian. Будьте внимательны! UFW не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил.
UFW (Uncomplicated Firewall) — очень простой и довольно популярный инструмент командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian. Будьте внимательны! UFW не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил.


На данной странице описано краткая инструкция по его установке и настройке в системах ALT Linux.  
С 04.05.2023 пакет {{pkg|ufw}} входит в Sisyphus.
* Для установки на p10 достаточно установить пакет из [https://packages.altlinux.org/ru/sisyphus/srpms/ufw/rpms/ Sisyphus]] (это просто сценарии на Python и shell):
[root@router ~]# apt-get install http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/noarch/RPMS.classic/ufw-текущая_версия.noarch.rpm


UFW исходник можно взять здесь: https://launchpad.net/ufw/+download
Сервис активизируется с помощью SystemD:
   
  [root@router ~]# systemctl enable --now ufw
Шаг 1) На момент написания этой записи ufw-0.36.1 стабильная версия. Скачайте ufw-0.36.1.tar.gz


Шаг 2) Закиньте архив на сервер и распакуйте. Установите зависимости указанные в README:
Убедитесь, что {{prg|ufw}} работает нормально:
 
* Команда {{cmd|systemctl status ufw.service}} должна показать, что сервис активен:
    # для alt server 10 нужно доустановить следующие зависимости
[root@router ~]# systemctl status ufw.service
    sudo apt-get install conntrack-tools iptables-ratelimit
* ufw.service - Uncomplicated firewall
 
    Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: disabled)
Шаг 3) Войдите в папку распакованного архива. В README файле указано выполнить установку таким образом:
    Active: active (exited) since Thu 2023-05-04 10:19:34 UTC; 8min ago
    sudo python3 ./setup.py install
  …
 
* Команда {{cmd|iptables-save}} должна вывести довольно большой список правил с префиксом <tt>ufw</tt>.
После выполнения данной команды появится скрипт запуска в <tt>/lib/ufw/ufw-init</tt>
* Команда {{cmd|ufw status}} должна показать что-то такое:
 
[root@router ~]# ufw status
Появится папка <tt>/etc/ufw</tt> в которой вы можете поправить преднастроенные фильтры.
Status: active
 
To                        Action      From
 
--                        ------      ----
Шаг 4) Включите ufw:
SSH                        ALLOW      Anywhere                 
    sudo ufw enable
224.0.0.251 mDNS          ALLOW      Anywhere 
 
* Если у вас запущены какие-то сетевые службы (можно посмотреть с помощью {{cmd|ss -plunt}}), разрешите доступ к соответствующим портам, перезапустите {{prg|ufw}} и проверьте, что доступ работает.
Шаг 5) Настройте автозапуск ufw, например, с помощью crontab. Для этого root пользователь должен выполнить:
    crobtab -e
Добавьте в планировщик cron строчку:
    @reboot /lib/ufw/ufw-init start
 
Шаг 6) Перезагрузитесь. Затем убедитесь, что ufw запустился при загрузке с помощью команды:
    sudo ufw status
 
Шаг 7) В завершении убедитесь, что ufw работает нормально с помощью iptables-save > test проверить, что в test содержаться настройки добавленные ufw.
Разрешите доступ к порту, который у вас слушает данная машина и убедитесь, что при разрешающем правиле доступ открыт, при запрещающем доступ закрыт с внешнего хоста.
 
Установка завершена.


== Перевод официальной MAN страницы по UFW ==
== Перевод официальной MAN страницы по UFW ==
=== Использование ===
=== Использование ===
      ufw [--dry-run] enable|disable|reload
  ufw [--dry-run] enable|disable|reload
     
 
      ufw [--dry-run] default allow|deny|reject [incoming|outgoing|routed]
  ufw [--dry-run] default allow|deny|reject [incoming|outgoing|routed]
     
 
      ufw [--dry-run] logging on|off|LEVEL     
  ufw [--dry-run] logging on|off|LEVEL     
     
 
      ufw [--dry-run] reset
  ufw [--dry-run] reset
     
 
      ufw [--dry-run] status [verbose|numbered]
  ufw [--dry-run] status [verbose|numbered]
     
 
      ufw [--dry-run] show REPORT
  ufw [--dry-run] show REPORT
     
 
      ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]
  ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]
     
 
      ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
  ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
     
 
      ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME]] [to ADDRESS [port PORT | app APPNAME]] [comment COMMENT]
  ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME]] [to ADDRESS [port PORT | app APPNAME]] [comment COMMENT]
     
 
      ufw [--dry-run] [--force] delete NUM
  ufw [--dry-run] [--force] delete NUM
     
 
      ufw [--dry-run] app list|info|default|update
  ufw [--dry-run] app list|info|default|update


=== Опции ===
=== Пояснения к командам и параметрам ===
Показать номер версии программы и выйти:
Показать номер версии программы и выйти:
      --version
  --version
 


Показать справочное сообщение и выйти:
Показать справочное сообщение и выйти:
      -h, --help
  -h, --help


Ничего не изменяя, просто показать изменения:
Ничего не изменяя, просто показать изменения:
      --dry-run
  --dry-run
     
 
Включение перезагрузка фаервола и включение фаервола при загрузке.
Очистить правила iptables («выключить» брандмауэр):
  disable


Выгружает брандмауэр и отключает его при загрузке:
Заново загрузить правила iptables («включить» брандмауэр):
      disable
  enable


Перезагружает брандмауэр:
Перезагрузить брандмауэр:
      reload  
  reload  


Измените политику по умолчанию для <tt>DIRECTION</tt> движения трафика, где <tt>DIRECTION</tt> является одним из входящих, исходящих или маршрутизированных. Обратите внимание, что существующие правила придется переносить вручную при изменении политики по умолчанию. Дополнительные сведения о запрете и отклонении (см. в раздел правила синтаксиса).       
Изменить политику по умолчанию для <tt>DIRECTION</tt> движения трафика, где <tt>DIRECTION</tt> является одним из входящих, исходящих или маршрутизированных. Обратите внимание, что существующие правила придется переносить вручную при изменении политики по умолчанию. Дополнительные сведения о запрете и отклонении (см. в раздел правила синтаксиса).       
      default allow|deny|reject DIRECTION
  default allow|deny|reject DIRECTION


Зарегистрированные пакеты используют средство системного журнала LOG_KERN. Системы, настроенные для поддержки <tt>rsyslog</tt>, также могут входить в <tt>/var/log/ufw.log</tt>. Указание <tt>LEVEL</tt> включает вход в систему для указанного <tt>LEVEL</tt>. Уровень журнала по умолчанию - "низкий". Смотрите раздел журналирования для подробности. Переключите ведение журнала:
Зарегистрированные пакеты используют средство системного журнала LOG_KERN. Системы, настроенные для поддержки <tt>rsyslog</tt>, также могут входить в <tt>/var/log/ufw.log</tt>. Указание <tt>LEVEL</tt> включает вход в систему для указанного <tt>LEVEL</tt>. Уровень журнала по умолчанию - "низкий". Смотрите раздел журналирования для подробности. Переключите ведение журнала:
      logging on|off|LEVEL
  logging on|off|LEVEL


Отключает и сбрасывает настройки брандмауэра по умолчанию при установке. Также можно указать опцию <tt>--force</tt> для выполнения сброса без подтверждения:
Отключает и сбрасывает настройки брандмауэра по умолчанию при установке. Также можно указать опцию <tt>--force</tt> для выполнения сброса без подтверждения:
      reset
  reset
Показывает статус брандмауэра и правил, управляемых ufw:
Показывает статус брандмауэра и правил, управляемых ufw:
      status  
  status  


Используйте <tt>status verbose</tt> для получения дополнительной информации. В выводе состояния <tt>'Anywhere'</tt> является синонимом <tt>'any'</tt>, <tt>0.0.0.0/0 (IPv4)</tt> и <tt>::/0 (IPv6)</tt>. Обратите внимание, что при использовании статуса существует небольшая разница, когда интерфейсы отчетности. Например, если добавлены следующие правила:
Используйте <tt>status verbose</tt> для получения дополнительной информации. В выводе состояния <tt>'Anywhere'</tt> является синонимом <tt>'any'</tt>, <tt>0.0.0.0/0 (IPv4)</tt> и <tt>::/0 (IPv6)</tt>. Обратите внимание, что при использовании статуса существует небольшая разница, когда интерфейсы отчетности. Например, если добавлены следующие правила:
                ufw allow in on eth0 from 192.168.0.0/16
  ufw allow in on eth0 from 192.168.0.0/16
                ufw allow out on eth1 to 10.0.0.0/8
  ufw allow out on eth1 to 10.0.0.0/8
                ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 from 192.168.0.0/16
  ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 from 192.168.0.0/16
                ufw limit 2222/tcp comment 'SSH port'       
  ufw limit 2222/tcp comment 'SSH port'       
              ufw status выведет следующее:
  ufw status выведет следующее:
     
 
                To                        Action      From
  To                        Action      From
                --                        ------      ----
  --                        ------      ----
                Anywhere on eth0          ALLOW      192.168.0.0/16
  Anywhere on eth0          ALLOW      192.168.0.0/16
                10.0.0.0/8                ALLOW OUT  Anywhere on eth1
  10.0.0.0/8                ALLOW OUT  Anywhere on eth1
                10.0.0.0/8 on eth1        ALLOW FWD  192.168.0.0/16 on eth0
  10.0.0.0/8 on eth1        ALLOW FWD  192.168.0.0/16 on eth0
                Anywhere                  LIMIT      Anywhere                # SSH port
  Anywhere                  LIMIT      Anywhere                # SSH port
        
        
Для правил ввода и вывода интерфейс сообщается относительно системы брандмауэра как конечная точка, тогда как для правил маршрута интерфейс сообщается относительно направления прохождения пакетов через брандмауэр.
Для правил ввода и вывода интерфейс сообщается относительно системы брандмауэра как конечная точка, тогда как для правил маршрута интерфейс сообщается относительно направления прохождения пакетов через брандмауэр.


Отображение информации о запущенном брандмауэре (см. отчеты):
Отображение информации о запущенном брандмауэре (см. отчеты):
      show REPORT
  show REPORT


Добавить разрешающее правило (см. правила синтаксиса):
Добавить разрешающее правило (см. правила синтаксиса):
      allow ARGS
  allow ARGS


Добавить запрещающее правило без уведомления (см. правила синтаксиса):
Добавить запрещающее правило без уведомления (см. правила синтаксиса):
      deny ARGS
  deny ARGS
                
                
Добавить запрещающее правило с уведомлением (см. правила синтаксиса):
Добавить запрещающее правило с уведомлением (см. правила синтаксиса):
      reject ARGS
  reject ARGS


Добавить правило лимитирования (см. правила синтаксиса):
Добавить правило лимитирования (см. правила синтаксиса):
      limit ARGS
  limit ARGS
                
                
Удалить соответствующее RULE (правило):
Удалить соответствующее RULE (правило):
      delete RULE|NUM
  delete RULE|NUM


Вставить соответствующее RULE (правило) как правило под указанным NUM (номером):
Вставить соответствующее RULE (правило) как правило под указанным NUM (номером):
      insert NUM RULE
  insert NUM RULE
                
                
Добавьте соответствующее RULE (правило) в начало набора правил:
Добавьте соответствующее RULE (правило) в начало набора правил:
      prepend RULE
  prepend RULE


=== Правила синтаксиса ===
=== Правила синтаксиса ===
Строка 136: Строка 127:


Пример правил, использующих простой синтаксис:
Пример правил, использующих простой синтаксис:
        ufw allow 53
  ufw allow 53


Это правило позволит использовать <tt>tcp</tt> и <tt>udp</tt> порт 53 для любого адреса на этом хосте. Чтобы указать протокол, добавьте '/protocol' к порту. Например:
Это правило позволит использовать <tt>tcp</tt> и <tt>udp</tt> порт 53 для любого адреса на этом хосте. Чтобы указать протокол, добавьте '/protocol' к порту. Например:
        ufw allow 25/tcp
  ufw allow 25/tcp
 
        
        
Это позволит подключать <tt>tcp</tt>-порт 25 к любому адресу на этом хосте. ufw также проверит <tt>/etc/services</tt> на наличие порта и протокола, если указать службу по имени. Напр.:
Это позволит подключать <tt>tcp</tt>-порт 25 к любому адресу на этом хосте. ufw также проверит <tt>/etc/services</tt> на наличие порта и протокола, если указать службу по имени. Напр.:
 
  ufw allow smtp
        ufw allow smtp


ufw поддерживает фильтрацию как входящего, так и исходящего трафика, и пользователи могут дополнительно указывать направление входа или выхода для входящего или исходящего трафика. Если направление не указано, правило применяется к входящему трафику. Например:
ufw поддерживает фильтрацию как входящего, так и исходящего трафика, и пользователи могут дополнительно указывать направление входа или выхода для входящего или исходящего трафика. Если направление не указано, правило применяется к входящему трафику. Например:
        ufw allow in http
  ufw allow in http
        ufw reject out smtp
  ufw reject out smtp
        ufw reject telnet comment 'telnet is unencrypted'
  ufw reject telnet comment 'telnet is unencrypted'


Пользователи также могут использовать более полный синтаксис, указывая адреса источника и назначения и порты. Этот синтаксис слабо основан на синтаксисе PF OpenBSD. Например:
Пользователи также могут использовать более полный синтаксис, указывая адреса источника и назначения и порты. Этот синтаксис слабо основан на синтаксисе PF OpenBSD. Например:
        ufw allow proto udp from 192.168.0.0/29 to 192.168.0.1 port 68,69 comment BOOTPC, TFTP, DHCP
  ufw allow proto udp from 192.168.0.0/29 to 192.168.0.1 port 68,69 comment BOOTPC, TFTP, DHCP
       
 
        ufw deny proto tcp to any port 80
  ufw deny proto tcp to any port 80


Это запретит весь трафик на <tt>tcp</tt>-порт 80 на этом хосте. Другой пример:
Это запретит весь трафик на <tt>tcp</tt>-порт 80 на этом хосте. Другой пример:
 
  ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
        ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25


Это запретит весь трафик из сети RFC1918 класса A на <tt>tcp</tt>-порт 25 с адресом 192.168.0.1.
Это запретит весь трафик из сети RFC1918 класса A на <tt>tcp</tt>-порт 25 с адресом 192.168.0.1.
 
  ufw deny proto tcp from 2001:db8::/32 to any port 25
        ufw deny proto tcp from 2001:db8::/32 to any port 25


Это запретит весь трафик с <tt>IPv6 2001:db8::/32</tt> на <tt>tcp</tt>-порт 25 на этом хосте. <tt>IPv6</tt> должен быть включен в <tt>/etc/default/ufw</tt>, чтобы брандмауэр <tt>IPv6</tt> работал.
Это запретит весь трафик с <tt>IPv6 2001:db8::/32</tt> на <tt>tcp</tt>-порт 25 на этом хосте. <tt>IPv6</tt> должен быть включен в <tt>/etc/default/ufw</tt>, чтобы брандмауэр <tt>IPv6</tt> работал.
        ufw deny in on eth0 to 224.0.0.1 proto igmp
  ufw deny in on eth0 to 224.0.0.1 proto igmp


Это запретит весь трафик igmp до 224.0.0.1 на интерфейсе eth0.
Это запретит весь трафик igmp до 224.0.0.1 на интерфейсе eth0.
        ufw allow in on eth0 to 192.168.0.1 proto gre
  ufw allow in on eth0 to 192.168.0.1 proto gre


Это позволит перенаправить весь трафик gre на 192.168.0.1 через интерфейс eth0.
Это позволит перенаправить весь трафик gre на 192.168.0.1 через интерфейс eth0.
        ufw allow proto tcp from any to any port 80,443,8080:8090 comment 'web app'
  ufw allow proto tcp from any to any port 80,443,8080:8090 comment 'web app'


Вышеизложенное разрешает весь трафик на tcp-порты 80, 443 и 8080-8090 включительно и добавляет комментарий к правилу. При указании нескольких портов список портов должен быть числовым, не должен содержать пробелов и должен быть изменен в целом. Например, в приведенном выше примере позже вы не сможете попытаться удалить только порт '443'. Вы не можете указать более 15 портов (диапазоны считаются как 2 порта, поэтому количество портов в приведенном выше примере равно 4).
Вышеизложенное разрешает весь трафик на tcp-порты 80, 443 и 8080-8090 включительно и добавляет комментарий к правилу. При указании нескольких портов список портов должен быть числовым, не должен содержать пробелов и должен быть изменен в целом. Например, в приведенном выше примере позже вы не сможете попытаться удалить только порт '443'. Вы не можете указать более 15 портов (диапазоны считаются как 2 порта, поэтому количество портов в приведенном выше примере равно 4).


Ufw поддерживает несколько различных протоколов. Следующее допустимо в любом правиле и включено, когда протокол не указан:
Ufw поддерживает несколько различных протоколов. Следующее допустимо в любом правиле и включено, когда протокол не указан:
        tcp
  tcp
        udp
  udp


Следующие функции имеют определенные ограничения и не включаются, если протокол не указан:
Следующие функции имеют определенные ограничения и не включаются, если протокол не указан:
        ah      действителен без номера порта
  ah      действителен без номера порта
        esp    действителен без номера порта
  esp    действителен без номера порта
        gre    действителен без номера порта
  gre    действителен без номера порта
        ipv6    действителен для IPv4 и без номера порта
  ipv6    действителен для IPv4 и без номера порта
        igmp    действителен для IPv4 и без номера порта
  igmp    действителен для IPv4 и без номера порта


Правила для трафика, не предназначенного для самого хоста, но вместо этого для трафика, который должен быть маршрутизирован / перенаправлен через брандмауэр, должны указывать ключевое слово route перед правилом (правила маршрутизации существенно отличаются от синтаксиса PF и вместо этого учитывают соглашения о <tt>FORWARD</tt> цепочке <tt>netfilter</tt>). Например:
Правила для трафика, не предназначенного для самого хоста, но вместо этого для трафика, который должен быть маршрутизирован / перенаправлен через брандмауэр, должны указывать ключевое слово route перед правилом (правила маршрутизации существенно отличаются от синтаксиса PF и вместо этого учитывают соглашения о <tt>FORWARD</tt> цепочке <tt>netfilter</tt>). Например:
        ufw route allow in on eth1 out on eth2
  ufw route allow in on eth1 out on eth2


Это позволит всему трафику, направленному на eth2 и поступающему на eth1, проходить через брандмауэр.
Это позволит всему трафику, направленному на eth2 и поступающему на eth1, проходить через брандмауэр.
        ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp
  ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp


Это правило позволяет любым пакетам, поступающим на eth0, проходить через брандмауэр на <tt>eth1</tt> к tcp-порту 80 на 12.34.45.67.
Это правило позволяет любым пакетам, поступающим на eth0, проходить через брандмауэр на <tt>eth1</tt> к tcp-порту 80 на 12.34.45.67.


В дополнение к правилам маршрутизации и политике, вы также должны настроить переадресацию IP. Это можно сделать, установив следующее в <tt>/etc/ufw/sysctl.conf</tt>:
В дополнение к правилам маршрутизации и политике, вы также должны настроить переадресацию IP. Это можно сделать, установив следующее в <tt>/etc/ufw/sysctl.conf</tt>:
        net/ipv4/ip_forward=1
  net/ipv4/ip_forward=1
        net/ipv6/conf/default/forwarding=1
  net/ipv6/conf/default/forwarding=1
        net/ipv6/conf/all/forwarding=1
  net/ipv6/conf/all/forwarding=1


Затем перезапуск брандмауэра:
Затем перезапуск брандмауэра:
        ufw disable
  ufw disable
        ufw enable
  ufw enable


Имейте в виду, что настройка настраиваемых параметров ядра зависит от операционной системы, и настройки <tt>ufw sysctl</tt> могут быть переопределены. Подробности см. на странице руководства <tt>sysctl</tt>.
Имейте в виду, что настройка настраиваемых параметров ядра зависит от операционной системы, и настройки <tt>ufw sysctl</tt> могут быть переопределены. Подробности см. на странице руководства <tt>sysctl</tt>.


ufw поддерживает ограничение скорости соединения, что полезно для защиты от атак при входе в систему методом перебора. Когда используется правило ограничения, ufw обычно разрешает подключение, но запрещает подключения, если IP-адрес пытается инициировать 6 или более подключений в течение 30 секунд. Видишь <tt>http://www.debian-administration.org/articles/187</tt> для получения подробной информации. Типичное использование - это:
ufw поддерживает ограничение скорости соединения, что полезно для защиты от атак при входе в систему методом перебора. Когда используется правило ограничения, ufw обычно разрешает подключение, но запрещает подключения, если IP-адрес пытается инициировать 6 или более подключений в течение 30 секунд. Видишь <tt>http://www.debian-administration.org/articles/187</tt> для получения подробной информации. Типичное использование - это:
        ufw limit ssh/tcp
  ufw limit ssh/tcp


Иногда желательно сообщить отправителю, когда трафик отклоняется, а не просто игнорировать его. В этих случаях используйте отклонить вместо запретить. Например:
Иногда желательно сообщить отправителю, когда трафик отклоняется, а не просто игнорировать его. В этих случаях используйте отклонить вместо запретить. Например:
        ufw reject auth
  ufw reject auth


По умолчанию ufw будет применять правила ко всем доступным интерфейсам. Чтобы ограничить это, укажите <tt>DIRECTION</tt> на <tt>INTERFACE</tt>, где <tt>DIRECTION</tt> является одним из in или out (псевдонимы интерфейса не поддерживаются). Например, чтобы разрешить все новые входящие http-соединения на eth0, используйте:
По умолчанию ufw будет применять правила ко всем доступным интерфейсам. Чтобы ограничить это, укажите <tt>DIRECTION</tt> на <tt>INTERFACE</tt>, где <tt>DIRECTION</tt> является одним из in или out (псевдонимы интерфейса не поддерживаются). Например, чтобы разрешить все новые входящие http-соединения на eth0, используйте:
        ufw allow in on eth0 to any port 80 proto tcp
  ufw allow in on eth0 to any port 80 proto tcp


Чтобы удалить правило, просто добавьте к исходному правилу префикс <tt>delete</tt> с комментарием к правилу или без него. Например, если исходное правило было:
Чтобы удалить правило, просто добавьте к исходному правилу префикс <tt>delete</tt> с комментарием к правилу или без него. Например, если исходное правило было:
        ufw deny 80/tcp
  ufw deny 80/tcp


Используйте это, чтобы удалить его:
Используйте это, чтобы удалить его:
        ufw delete deny 80/tcp
  ufw delete deny 80/tcp


Вы также можете указать номер правила по умолчанию, как показано в выводе с номером состояния. Например, если вы хотите удалить правило номер '3', используйте:
Вы также можете указать номер правила по умолчанию, как показано в выводе с номером состояния. Например, если вы хотите удалить правило номер '3', используйте:
        ufw delete 3
  ufw delete 3


Если у вас включен IPv6 и вы удаляете общее правило, которое применяется как к IPv4, так и к IPv6 (например, "<tt>ufw allow 22/tcp</tt>"), удаление по номеру правила приведет к удалению только указанного правила. Чтобы удалить оба с помощью одной команды, добавьте к исходному правилу префикс <tt>delete</tt>.
Если у вас включен IPv6 и вы удаляете общее правило, которое применяется как к IPv4, так и к IPv6 (например, "<tt>ufw allow 22/tcp</tt>"), удаление по номеру правила приведет к удалению только указанного правила. Чтобы удалить оба с помощью одной команды, добавьте к исходному правилу префикс <tt>delete</tt>.


Чтобы вставить правило, укажите новое правило как обычно, но добавьте к правилу номер правила для вставки. Например, если у вас есть четыре правила, и вы хотите вставить новое правило в качестве правила номер три, используйте:
Чтобы вставить правило, укажите новое правило как обычно, но добавьте к правилу номер правила для вставки. Например, если у вас есть четыре правила, и вы хотите вставить новое правило в качестве правила номер три, используйте:
        ufw insert 3 deny to any port 22 from 10.0.0.135 proto tcp
  ufw insert 3 deny to any port 22 from 10.0.0.135 proto tcp


Аналогично, чтобы добавить правило перед всеми другими правилами, соответствующими типу IP правила, используйте правило добавления:
Аналогично, чтобы добавить правило перед всеми другими правилами, соответствующими типу IP правила, используйте правило добавления:
        ufw prepend deny from 1.2.3.4
  ufw prepend deny from 1.2.3.4


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


Чтобы просмотреть список пронумерованных правил, используйте:
Чтобы просмотреть список пронумерованных правил, используйте:
        ufw status numbered
  ufw status numbered


ufw поддерживает ведение журнала по каждому правилу. По умолчанию ведение журнала не выполняется, когда пакет соответствует правилу. Указание <tt>log</tt> будет регистрировать все новые соединения, соответствующие правилу, а <tt>log-all</tt> будет регистрировать все пакеты, соответствующие правилу. Например, чтобы разрешить и регистрировать все новые ssh-соединения, используйте:
ufw поддерживает ведение журнала по каждому правилу. По умолчанию ведение журнала не выполняется, когда пакет соответствует правилу. Указание <tt>log</tt> будет регистрировать все новые соединения, соответствующие правилу, а <tt>log-all</tt> будет регистрировать все пакеты, соответствующие правилу. Например, чтобы разрешить и регистрировать все новые ssh-соединения, используйте:
        ufw allow log 22/tcp
  ufw allow log 22/tcp


Смотрите раздел журналирования для получения дополнительной информации о ведении журнала.
Смотрите раздел журналирования для получения дополнительной информации о ведении журнала.
Строка 243: Строка 230:
=== Примеры ===
=== Примеры ===
Запретить весь доступ к порту 53:
Запретить весь доступ к порту 53:
        ufw deny 53
  ufw deny 53


Разрешить всем доступ к tcp-порту 80:
Разрешить всем доступ к tcp-порту 80:
        ufw allow 80/tcp
  ufw allow 80/tcp


Разрешить весь доступ из сетей RFC1918 к этому хосту:
Разрешить весь доступ из сетей RFC1918 к этому хосту:
        ufw allow from 10.0.0.0/8
  ufw allow from 10.0.0.0/8
        ufw allow from 172.16.0.0/12
  ufw allow from 172.16.0.0/12
        ufw allow from 192.168.0.0/16
  ufw allow from 192.168.0.0/16


Запретить доступ к udp-порту 514 с хоста 1.2.3.4:
Запретить доступ к udp-порту 514 с хоста 1.2.3.4:
        ufw deny proto udp from 1.2.3.4 to any port 514
  ufw deny proto udp from 1.2.3.4 to any port 514


Разрешить доступ к порту 5469 udp 1.2.3.4 с порта 5469 1.2.3.5:
Разрешить доступ к порту 5469 udp 1.2.3.4 с порта 5469 1.2.3.5:
        ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469
  ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469


=== Удаленное управление ===
=== Удаленное управление ===
При запуске ufw enable или запуске ufw через его <tt>initscript ufw</tt> очистит свои цепочки. Это необходимо для того, чтобы ufw мог поддерживать согласованное состояние, но это может привести к разрыву существующих подключений (например, ssh). ufw поддерживает добавление правил перед включением брандмауэра, поэтому администраторы могут выполнять перед запуском 'ufw enable':
При запуске ufw enable или запуске ufw через его <tt>initscript ufw</tt> очистит свои цепочки. Это необходимо для того, чтобы ufw мог поддерживать согласованное состояние, но это может привести к разрыву существующих подключений (например, ssh). ufw поддерживает добавление правил перед включением брандмауэра, поэтому администраторы могут выполнять перед запуском 'ufw enable':
        ufw allow proto tcp from any to any port 22
  ufw allow proto tcp from any to any port 22


Правила по-прежнему будут сброшены, но ssh-порт будет открыт после включения брандмауэра. Пожалуйста, обратите внимание, что как только ufw 'enabled', ufw не будет очищать цепочки при добавлении или удалении правил (но будет при изменении правила или политики по умолчанию). По умолчанию ufw будет запрашивать при включении брандмауэра во время работы по ssh. Это можно отключить с помощью '<tt>ufw --force enable</tt>'.
Правила по-прежнему будут сброшены, но ssh-порт будет открыт после включения брандмауэра. Пожалуйста, обратите внимание, что как только ufw 'enabled', ufw не будет очищать цепочки при добавлении или удалении правил (но будет при изменении правила или политики по умолчанию). По умолчанию ufw будет запрашивать при включении брандмауэра во время работы по ssh. Это можно отключить с помощью '<tt>ufw --force enable</tt>'.
Строка 267: Строка 254:
=== Интеграция приложений ===
=== Интеграция приложений ===
ufw поддерживает интеграцию приложений путем чтения профилей, расположенных в <tt>/etc/ufw/applications.d</tt>. Чтобы перечислить имена профилей приложений, известных ufw, используйте:
ufw поддерживает интеграцию приложений путем чтения профилей, расположенных в <tt>/etc/ufw/applications.d</tt>. Чтобы перечислить имена профилей приложений, известных ufw, используйте:
        ufw app list
  ufw app list


Пользователи могут указать имя приложения при добавлении правила (заключая в кавычки любые имена профилей с пробелами). Например, при использовании простого синтаксиса пользователи могут использовать:
Пользователи могут указать имя приложения при добавлении правила (заключая в кавычки любые имена профилей с пробелами). Например, при использовании простого синтаксиса пользователи могут использовать:
        ufw allow <name>
  ufw allow <name>


Или для расширенного синтаксиса:
Или для расширенного синтаксиса:
        ufw allow from 192.168.0.0/16 to any app <name>
  ufw allow from 192.168.0.0/16 to any app <name>


Вы не должны указывать протокол ни с тем, ни с другим синтаксисом, а с расширенным синтаксисом используйте app вместо предложения <tt>port</tt>.
Вы не должны указывать протокол ни с тем, ни с другим синтаксисом, а с расширенным синтаксисом используйте app вместо предложения <tt>port</tt>.


Подробную информацию о профиле брандмауэра для данного приложения можно просмотреть с помощью:
Подробную информацию о профиле брандмауэра для данного приложения можно просмотреть с помощью:
        ufw app info <name>
  ufw app info <name>


Где '<tt><name></tt>' - это одно из приложений, отображаемых с помощью команды списка приложений. Пользователи также могут указать все, чтобы просмотреть профили для всех известных приложений.
Где '<tt><name></tt>' - это одно из приложений, отображаемых с помощью команды списка приложений. Пользователи также могут указать все, чтобы просмотреть профили для всех известных приложений.


Синтаксис для профилей приложений <tt>simple.INI</tt>:
Синтаксис для профилей приложений <tt>simple.INI</tt>:
        [<name>]
  [<name>]
        title=<title>
  title=<title>
        description=<description>
  description=<description>
        ports=<ports>
  ports=<ports>


В поле "порты" может быть указан разделенный символом "|" список портов/протоколов, где протокол является необязательным. Разделенный запятыми список или диапазон (указанный с помощью '<tt>start:end</tt>') также могут использоваться для указания нескольких портов, и в этом случае требуется протокол. Для пример:
В поле "порты" может быть указан разделенный символом "|" список портов/протоколов, где протокол является необязательным. Разделенный запятыми список или диапазон (указанный с помощью '<tt>start:end</tt>') также могут использоваться для указания нескольких портов, и в этом случае требуется протокол. Для пример:
 
  [SomeService]
        [SomeService]
  title=Some title
        title=Some title
  description=Some description
        description=Some description
  ports=12/udp|34|56,78:90/tcp
        ports=12/udp|34|56,78:90/tcp


В приведенном выше примере 'SomeService' может использоваться в правилах приложения, и в нем указывается порт UDP 12, TCP и UDP на порту 34 и TCP-портах 56 и 78-90 включительно.
В приведенном выше примере 'SomeService' может использоваться в правилах приложения, и в нем указывается порт UDP 12, TCP и UDP на порту 34 и TCP-портах 56 и 78-90 включительно.


После создания или редактирования профиля приложения пользователи могут запускать:
После создания или редактирования профиля приложения пользователи могут запускать:
        ufw app update <name>
  ufw app update <name>


Эта команда автоматически обновит брандмауэр с обновленной информацией профиля. Если указать "все" для имени, то все профили будут обновлены. Чтобы автоматически обновить профиль и добавить новое правило в брандмауэр, пользователи могут запустить:
Эта команда автоматически обновит брандмауэр с обновленной информацией профиля. Если указать "все" для имени, то все профили будут обновлены. Чтобы автоматически обновить профиль и добавить новое правило в брандмауэр, пользователи могут запустить:
        ufw app update --add-new <name>
  ufw app update --add-new <name>


Поведение команды update --add-new можно настроить с помощью:
Поведение команды update --add-new можно настроить с помощью:
        ufw app default <policy>
  ufw app default <policy>


Политика приложения по умолчанию - пропустить, что означает, что команда update <tt>--add-new</tt> ничего не сделает. Пользователи также могут указать политику разрешения или запрета, чтобы команда <tt>update --add-new</tt> могла автоматически обновлять брандмауэр.  
Политика приложения по умолчанию - пропустить, что означает, что команда update <tt>--add-new</tt> ничего не сделает. Пользователи также могут указать политику разрешения или запрета, чтобы команда <tt>update --add-new</tt> могла автоматически обновлять брандмауэр.  
Строка 311: Строка 297:
=== Журналирование ===
=== Журналирование ===
ufw поддерживает несколько уровней ведения журнала. ufw по умолчанию имеет уровень журнала "низкий", если уровень журнала не указан. Пользователи могут указать уровень входа с:
ufw поддерживает несколько уровней ведения журнала. ufw по умолчанию имеет уровень журнала "низкий", если уровень журнала не указан. Пользователи могут указать уровень входа с:
      ufw logging LEVEL
  ufw logging LEVEL
     
 
      LEVEL может быть 'off', 'low', 'medium', 'high' и 'full'. Уровни журнала определяются как:
  LEVEL может быть 'off', 'low', 'medium', 'high' и 'full'. Уровни журнала определяются как:
     
 
      off    отключает ведение журнала, управляемого ufw
  off    отключает ведение журнала, управляемого ufw
     
 
      low    низкий уровень журнала, плюс все разрешенные пакеты, не соответствующие определенной политике, все НЕДОПУСТИМЫЕ пакеты и все новые подключения. Все протоколирование выполняется с ограничением скорости.
  low    низкий уровень журнала, плюс все разрешенные пакеты, не соответствующие определенной политике, все НЕДОПУСТИМЫЕ пакеты и все новые подключения. Все протоколирование выполняется с ограничением скорости.
        
        
      medium средний уровень журнала (без ограничения скорости), плюс все пакеты с ограничением скорости
  medium средний уровень журнала (без ограничения скорости), плюс все пакеты с ограничением скорости
     
  high  высокий уровень журнала без ограничения скорости
        
        
      high   высокий уровень журнала без ограничения скорости
   full  регистрирует все заблокированные пакеты, не соответствующие определенной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам
     
      full  регистрирует все заблокированные пакеты, не соответствующие определенной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам
        
        
Уровни журнала выше среднего генерируют много выходных данных журнала и могут быстро заполнить ваш диск. Среда Loglevel medium может генерировать много выходных данных журнала в загруженной системе.
Уровни журнала выше среднего генерируют много выходных данных журнала и могут быстро заполнить ваш диск. Среда Loglevel medium может генерировать много выходных данных журнала в загруженной системе.
Строка 331: Строка 317:
=== Отчеты ===
=== Отчеты ===
Поддерживаются следующие отчеты. Каждый из них основан на системе live и, за исключением отчета о прослушивании, представлен в формате raw iptables:
Поддерживаются следующие отчеты. Каждый из них основан на системе live и, за исключением отчета о прослушивании, представлен в формате raw iptables:
        raw
  raw
        builtins
  builtins
        before-rules
  before-rules
        user-rules
  user-rules
        after-rules
  after-rules
        logging-rules
  logging-rules
        listening
  listening
        added
  added


Необработанный отчет показывает полный брандмауэр, в то время как другие показывают подмножество того, что есть в необработанном отчете.
Необработанный отчет показывает полный брандмауэр, в то время как другие показывают подмножество того, что есть в необработанном отчете.
Строка 347: Строка 333:
=== Заметки ===
=== Заметки ===
При установке ufw отключается с политикой запрета входящих сообщений по умолчанию, политикой пересылки по умолчанию deny и политикой разрешения исходящих сообщений по умолчанию с отслеживанием состояния НОВЫХ подключений для входящих и переадресованных подключений. В дополнение к вышесказанному, устанавливается набор правил по умолчанию, который выполняет следующее:
При установке ufw отключается с политикой запрета входящих сообщений по умолчанию, политикой пересылки по умолчанию deny и политикой разрешения исходящих сообщений по умолчанию с отслеживанием состояния НОВЫХ подключений для входящих и переадресованных подключений. В дополнение к вышесказанному, устанавливается набор правил по умолчанию, который выполняет следующее:
      - DROP packets with RH0 headers
  - DROP packets with RH0 headers
     
 
      - DROP INVALID packets
  - DROP INVALID packets
     
 
      - ACCEPT certain icmp packets (INPUT and FORWARD): destination-unreachable, source-quench, time-exceeded, parameter-problem, and echo-request for IPv4. destination-unreachable, packet-too-big, time-exceeded, parameter-problem, and echo-request for IPv6.
  - ACCEPT certain icmp packets (INPUT and FORWARD): destination-unreachable, source-quench, time-exceeded, parameter-problem, and echo-request for IPv4. destination-unreachable, packet-too-big, time-exceeded, parameter-problem, and echo-request for IPv6.
     
 
      - ACCEPT icmpv6 packets for stateless autoconfiguration (INPUT)
  - ACCEPT icmpv6 packets for stateless autoconfiguration (INPUT)
     
 
      - ACCEPT ping replies from IPv6 link-local (ffe8::/10) addresses (INPUT)
  - ACCEPT ping replies from IPv6 link-local (ffe8::/10) addresses (INPUT)
     
 
      - ACCEPT DHCP client traffic (INPUT)
  - ACCEPT DHCP client traffic (INPUT)
     
 
      - DROP non-local traffic (INPUT)
  - DROP non-local traffic (INPUT)
     
 
      - ACCEPT mDNS (zeroconf/bonjour/avahi 224.0.0.251 for IPv4 and ff02::fb for IPv6) for service discovery (INPUT)
  - ACCEPT mDNS (zeroconf/bonjour/avahi 224.0.0.251 for IPv4 and ff02::fb for IPv6) for service discovery (INPUT)
     
 
      - ACCEPT UPnP (239.255.255.250 for IPv4 and ff02::f for IPv6) for service discovery (INPUT)
  - ACCEPT UPnP (239.255.255.250 for IPv4 and ff02::f for IPv6) for service discovery (INPUT)


Порядок правил важен, и выигрывает первый матч. Поэтому при добавлении правил сначала добавляйте более конкретные правила, а позже - более общие. ufw не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил.
Порядок правил важен, и выигрывает первый матч. Поэтому при добавлении правил сначала добавляйте более конкретные правила, а позже - более общие. ufw не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил.
Команда status показывает основную информацию о состоянии брандмауэра, а также правила, управляемые с помощью команды ufw. Он не показывает правила из файлов правил в /etc/ufw. Чтобы увидеть полное состояние брандмауэра, пользователи могут ufw показать raw. Этот воспроизводит таблицы filter, nat, mangle и raw с использованием:
Команда status показывает основную информацию о состоянии брандмауэра, а также правила, управляемые с помощью команды ufw. Он не показывает правила из файлов правил в /etc/ufw. Чтобы увидеть полное состояние брандмауэра, пользователи могут ufw показать raw. Этот воспроизводит таблицы filter, nat, mangle и raw с использованием:
      iptables -n -L -v -x -t <nowiki><table></nowiki>
  iptables -n -L -v -x -t <nowiki><table></nowiki>
      ip6tables -n -L -v -x -t <nowiki><table></nowiki>
  ip6tables -n -L -v -x -t <nowiki><table></nowiki>


Смотрите документацию iptables и ip6tables для получения более подробной информации.
Смотрите документацию iptables и ip6tables для получения более подробной информации.
Если для политики по умолчанию установлено значение <tt>REJECT</tt>, ufw может вмешиваться в правила, добавленные вне рамок ufw. Подробности смотрите в README.
Если для политики по умолчанию установлено значение <tt>REJECT</tt>, ufw может вмешиваться в правила, добавленные вне рамок ufw. Подробности смотрите в README.
IPV6 разрешен по умолчанию. Чтобы изменить это поведение, чтобы принимать трафик IPv6 только через интерфейс обратной связи, установите для IPV6 значение "no" в <tt>/etc/default/ufw</tt> и перезагрузите ufw. Когда включен IPv6, вы можете указать правила таким же образом, как и для правил IPv4, и они будут отображается со статусом ufw. Правила, соответствующие адресам IPv4 и IPv6, применяются к обеим версиям IP. Например, когда включен IPv6, следующее правило разрешает доступ к порту 22 как для трафика IPv4, так и для трафика IPv6:
IPV6 разрешен по умолчанию. Чтобы изменить это поведение, чтобы принимать трафик IPv6 только через интерфейс обратной связи, установите для IPV6 значение "no" в <tt>/etc/default/ufw</tt> и перезагрузите ufw. Когда включен IPv6, вы можете указать правила таким же образом, как и для правил IPv4, и они будут отображается со статусом ufw. Правила, соответствующие адресам IPv4 и IPv6, применяются к обеим версиям IP. Например, когда включен IPv6, следующее правило разрешает доступ к порту 22 как для трафика IPv4, так и для трафика IPv6:
      ufw allow 22
  ufw allow 22


IPv6 через туннели IPv4 и 6to4 поддерживаются с использованием протокола 'ipv6' ('41'). Этот протокол может использоваться только с полным синтаксисом. Например:
IPv6 через туннели IPv4 и 6to4 поддерживаются с использованием протокола 'ipv6' ('41'). Этот протокол может использоваться только с полным синтаксисом. Например:
      ufw allow to 10.0.0.1 proto ipv6
  ufw allow to 10.0.0.1 proto ipv6
      ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ipv6
  ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ipv6


IPSec поддерживается с помощью протоколов 'esp' ('50') и 'ah' ('51'). Эти протоколы могут использоваться только с полным синтаксисом. Например:
IPSec поддерживается с помощью протоколов 'esp' ('50') и 'ah' ('51'). Эти протоколы могут использоваться только с полным синтаксисом. Например:
      ufw allow to 10.0.0.1 proto esp
  ufw allow to 10.0.0.1 proto esp
      ufw allow to 10.0.0.1 from 10.4.0.0/16 proto esp
  ufw allow to 10.0.0.1 from 10.4.0.0/16 proto esp
      ufw allow to 10.0.0.1 proto ah
  ufw allow to 10.0.0.1 proto ah
      ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ah
  ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ah


В дополнение к интерфейсу командной строки ufw также предоставляет платформу, которая позволяет администраторам изменять поведение по умолчанию, а также в полной мере использовать netfilter. Смотрите страницу руководства ufw-framework для получения дополнительной информации.
В дополнение к интерфейсу командной строки ufw также предоставляет платформу, которая позволяет администраторам изменять поведение по умолчанию, а также в полной мере использовать netfilter. Смотрите страницу руководства ufw-framework для получения дополнительной информации.

Текущая версия от 16:11, 23 декабря 2023

Установка ufw на ALT Linux

UFW (Uncomplicated Firewall) — очень простой и довольно популярный инструмент командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian. Будьте внимательны! UFW не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил.

С 04.05.2023 пакет ufw входит в Sisyphus.

  • Для установки на p10 достаточно установить пакет из Sisyphus] (это просто сценарии на Python и shell):
[root@router ~]# apt-get install http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/noarch/RPMS.classic/ufw-текущая_версия.noarch.rpm

Сервис активизируется с помощью SystemD:

[root@router ~]# systemctl enable --now ufw

Убедитесь, что ufw работает нормально:

  • Команда systemctl status ufw.service должна показать, что сервис активен:
[root@router ~]# systemctl status ufw.service 
* ufw.service - Uncomplicated firewall
    Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: disabled)
    Active: active (exited) since Thu 2023-05-04 10:19:34 UTC; 8min ago
  …
  • Команда iptables-save должна вывести довольно большой список правил с префиксом ufw.
  • Команда ufw status должна показать что-то такое:
[root@router ~]# ufw status
Status: active
To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere   
  • Если у вас запущены какие-то сетевые службы (можно посмотреть с помощью ss -plunt), разрешите доступ к соответствующим портам, перезапустите ufw и проверьте, что доступ работает.

Перевод официальной MAN страницы по UFW

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

 ufw [--dry-run] enable|disable|reload
 
 ufw [--dry-run] default allow|deny|reject [incoming|outgoing|routed]
 
 ufw [--dry-run] logging on|off|LEVEL    
 
 ufw [--dry-run] reset
 
 ufw [--dry-run] status [verbose|numbered]
 
 ufw [--dry-run] show REPORT
 
 ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]
 
 ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
 
 ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME]] [to ADDRESS [port PORT | app APPNAME]] [comment COMMENT]
 
 ufw [--dry-run] [--force] delete NUM
 
 ufw [--dry-run] app list|info|default|update

Пояснения к командам и параметрам

Показать номер версии программы и выйти:

 --version

Показать справочное сообщение и выйти:

 -h, --help

Ничего не изменяя, просто показать изменения:

 --dry-run

Очистить правила iptables («выключить» брандмауэр):

 disable

Заново загрузить правила iptables («включить» брандмауэр):

 enable

Перезагрузить брандмауэр:

 reload 

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

 default allow|deny|reject DIRECTION

Зарегистрированные пакеты используют средство системного журнала LOG_KERN. Системы, настроенные для поддержки rsyslog, также могут входить в /var/log/ufw.log. Указание LEVEL включает вход в систему для указанного LEVEL. Уровень журнала по умолчанию - "низкий". Смотрите раздел журналирования для подробности. Переключите ведение журнала:

 logging on|off|LEVEL

Отключает и сбрасывает настройки брандмауэра по умолчанию при установке. Также можно указать опцию --force для выполнения сброса без подтверждения:

 reset

Показывает статус брандмауэра и правил, управляемых ufw:

 status 

Используйте status verbose для получения дополнительной информации. В выводе состояния 'Anywhere' является синонимом 'any', 0.0.0.0/0 (IPv4) и ::/0 (IPv6). Обратите внимание, что при использовании статуса существует небольшая разница, когда интерфейсы отчетности. Например, если добавлены следующие правила:

 ufw allow in on eth0 from 192.168.0.0/16
 ufw allow out on eth1 to 10.0.0.0/8
 ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 from 192.168.0.0/16
 ufw limit 2222/tcp comment 'SSH port'       
 ufw status выведет следующее:
 
 To                         Action      From
 --                         ------      ----
 Anywhere on eth0           ALLOW       192.168.0.0/16
 10.0.0.0/8                 ALLOW OUT   Anywhere on eth1
 10.0.0.0/8 on eth1         ALLOW FWD   192.168.0.0/16 on eth0
 Anywhere                   LIMIT       Anywhere                 # SSH port
      

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

Отображение информации о запущенном брандмауэре (см. отчеты):

 show REPORT

Добавить разрешающее правило (см. правила синтаксиса):

 allow ARGS

Добавить запрещающее правило без уведомления (см. правила синтаксиса):

 deny ARGS
             

Добавить запрещающее правило с уведомлением (см. правила синтаксиса):

 reject ARGS

Добавить правило лимитирования (см. правила синтаксиса):

 limit ARGS
             

Удалить соответствующее RULE (правило):

 delete RULE|NUM

Вставить соответствующее RULE (правило) как правило под указанным NUM (номером):

 insert NUM RULE
             

Добавьте соответствующее RULE (правило) в начало набора правил:

 prepend RULE

Правила синтаксиса

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

Пример правил, использующих простой синтаксис:

 ufw allow 53

Это правило позволит использовать tcp и udp порт 53 для любого адреса на этом хосте. Чтобы указать протокол, добавьте '/protocol' к порту. Например:

 ufw allow 25/tcp
      

Это позволит подключать tcp-порт 25 к любому адресу на этом хосте. ufw также проверит /etc/services на наличие порта и протокола, если указать службу по имени. Напр.:

 ufw allow smtp

ufw поддерживает фильтрацию как входящего, так и исходящего трафика, и пользователи могут дополнительно указывать направление входа или выхода для входящего или исходящего трафика. Если направление не указано, правило применяется к входящему трафику. Например:

 ufw allow in http
 ufw reject out smtp
 ufw reject telnet comment 'telnet is unencrypted'

Пользователи также могут использовать более полный синтаксис, указывая адреса источника и назначения и порты. Этот синтаксис слабо основан на синтаксисе PF OpenBSD. Например:

 ufw allow proto udp from 192.168.0.0/29 to 192.168.0.1 port 68,69 comment BOOTPC, TFTP, DHCP
 
 ufw deny proto tcp to any port 80

Это запретит весь трафик на tcp-порт 80 на этом хосте. Другой пример:

 ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25

Это запретит весь трафик из сети RFC1918 класса A на tcp-порт 25 с адресом 192.168.0.1.

 ufw deny proto tcp from 2001:db8::/32 to any port 25

Это запретит весь трафик с IPv6 2001:db8::/32 на tcp-порт 25 на этом хосте. IPv6 должен быть включен в /etc/default/ufw, чтобы брандмауэр IPv6 работал.

 ufw deny in on eth0 to 224.0.0.1 proto igmp

Это запретит весь трафик igmp до 224.0.0.1 на интерфейсе eth0.

 ufw allow in on eth0 to 192.168.0.1 proto gre

Это позволит перенаправить весь трафик gre на 192.168.0.1 через интерфейс eth0.

 ufw allow proto tcp from any to any port 80,443,8080:8090 comment 'web app'

Вышеизложенное разрешает весь трафик на tcp-порты 80, 443 и 8080-8090 включительно и добавляет комментарий к правилу. При указании нескольких портов список портов должен быть числовым, не должен содержать пробелов и должен быть изменен в целом. Например, в приведенном выше примере позже вы не сможете попытаться удалить только порт '443'. Вы не можете указать более 15 портов (диапазоны считаются как 2 порта, поэтому количество портов в приведенном выше примере равно 4).

Ufw поддерживает несколько различных протоколов. Следующее допустимо в любом правиле и включено, когда протокол не указан:

 tcp
 udp

Следующие функции имеют определенные ограничения и не включаются, если протокол не указан:

 ah      действителен без номера порта
 esp     действителен без номера порта
 gre     действителен без номера порта
 ipv6    действителен для IPv4 и без номера порта
 igmp    действителен для IPv4 и без номера порта

Правила для трафика, не предназначенного для самого хоста, но вместо этого для трафика, который должен быть маршрутизирован / перенаправлен через брандмауэр, должны указывать ключевое слово route перед правилом (правила маршрутизации существенно отличаются от синтаксиса PF и вместо этого учитывают соглашения о FORWARD цепочке netfilter). Например:

 ufw route allow in on eth1 out on eth2

Это позволит всему трафику, направленному на eth2 и поступающему на eth1, проходить через брандмауэр.

 ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

Это правило позволяет любым пакетам, поступающим на eth0, проходить через брандмауэр на eth1 к tcp-порту 80 на 12.34.45.67.

В дополнение к правилам маршрутизации и политике, вы также должны настроить переадресацию IP. Это можно сделать, установив следующее в /etc/ufw/sysctl.conf:

 net/ipv4/ip_forward=1
 net/ipv6/conf/default/forwarding=1
 net/ipv6/conf/all/forwarding=1

Затем перезапуск брандмауэра:

 ufw disable
 ufw enable

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

ufw поддерживает ограничение скорости соединения, что полезно для защиты от атак при входе в систему методом перебора. Когда используется правило ограничения, ufw обычно разрешает подключение, но запрещает подключения, если IP-адрес пытается инициировать 6 или более подключений в течение 30 секунд. Видишь http://www.debian-administration.org/articles/187 для получения подробной информации. Типичное использование - это:

 ufw limit ssh/tcp

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

 ufw reject auth

По умолчанию ufw будет применять правила ко всем доступным интерфейсам. Чтобы ограничить это, укажите DIRECTION на INTERFACE, где DIRECTION является одним из in или out (псевдонимы интерфейса не поддерживаются). Например, чтобы разрешить все новые входящие http-соединения на eth0, используйте:

 ufw allow in on eth0 to any port 80 proto tcp

Чтобы удалить правило, просто добавьте к исходному правилу префикс delete с комментарием к правилу или без него. Например, если исходное правило было:

 ufw deny 80/tcp

Используйте это, чтобы удалить его:

 ufw delete deny 80/tcp

Вы также можете указать номер правила по умолчанию, как показано в выводе с номером состояния. Например, если вы хотите удалить правило номер '3', используйте:

 ufw delete 3

Если у вас включен IPv6 и вы удаляете общее правило, которое применяется как к IPv4, так и к IPv6 (например, "ufw allow 22/tcp"), удаление по номеру правила приведет к удалению только указанного правила. Чтобы удалить оба с помощью одной команды, добавьте к исходному правилу префикс delete.

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

 ufw insert 3 deny to any port 22 from 10.0.0.135 proto tcp

Аналогично, чтобы добавить правило перед всеми другими правилами, соответствующими типу IP правила, используйте правило добавления:

 ufw prepend deny from 1.2.3.4

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

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

 ufw status numbered

ufw поддерживает ведение журнала по каждому правилу. По умолчанию ведение журнала не выполняется, когда пакет соответствует правилу. Указание log будет регистрировать все новые соединения, соответствующие правилу, а log-all будет регистрировать все пакеты, соответствующие правилу. Например, чтобы разрешить и регистрировать все новые ssh-соединения, используйте:

 ufw allow log 22/tcp

Смотрите раздел журналирования для получения дополнительной информации о ведении журнала.

Примеры

Запретить весь доступ к порту 53:

 ufw deny 53

Разрешить всем доступ к tcp-порту 80:

 ufw allow 80/tcp

Разрешить весь доступ из сетей RFC1918 к этому хосту:

 ufw allow from 10.0.0.0/8
 ufw allow from 172.16.0.0/12
 ufw allow from 192.168.0.0/16

Запретить доступ к udp-порту 514 с хоста 1.2.3.4:

 ufw deny proto udp from 1.2.3.4 to any port 514

Разрешить доступ к порту 5469 udp 1.2.3.4 с порта 5469 1.2.3.5:

 ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469

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

При запуске ufw enable или запуске ufw через его initscript ufw очистит свои цепочки. Это необходимо для того, чтобы ufw мог поддерживать согласованное состояние, но это может привести к разрыву существующих подключений (например, ssh). ufw поддерживает добавление правил перед включением брандмауэра, поэтому администраторы могут выполнять перед запуском 'ufw enable':

 ufw allow proto tcp from any to any port 22

Правила по-прежнему будут сброшены, но ssh-порт будет открыт после включения брандмауэра. Пожалуйста, обратите внимание, что как только ufw 'enabled', ufw не будет очищать цепочки при добавлении или удалении правил (но будет при изменении правила или политики по умолчанию). По умолчанию ufw будет запрашивать при включении брандмауэра во время работы по ssh. Это можно отключить с помощью 'ufw --force enable'.

Интеграция приложений

ufw поддерживает интеграцию приложений путем чтения профилей, расположенных в /etc/ufw/applications.d. Чтобы перечислить имена профилей приложений, известных ufw, используйте:

 ufw app list

Пользователи могут указать имя приложения при добавлении правила (заключая в кавычки любые имена профилей с пробелами). Например, при использовании простого синтаксиса пользователи могут использовать:

 ufw allow <name>

Или для расширенного синтаксиса:

 ufw allow from 192.168.0.0/16 to any app <name>

Вы не должны указывать протокол ни с тем, ни с другим синтаксисом, а с расширенным синтаксисом используйте app вместо предложения port.

Подробную информацию о профиле брандмауэра для данного приложения можно просмотреть с помощью:

 ufw app info <name>

Где '<name>' - это одно из приложений, отображаемых с помощью команды списка приложений. Пользователи также могут указать все, чтобы просмотреть профили для всех известных приложений.

Синтаксис для профилей приложений simple.INI:

 [<name>]
 title=<title>
 description=<description>
 ports=<ports>

В поле "порты" может быть указан разделенный символом "|" список портов/протоколов, где протокол является необязательным. Разделенный запятыми список или диапазон (указанный с помощью 'start:end') также могут использоваться для указания нескольких портов, и в этом случае требуется протокол. Для пример:

 [SomeService]
 title=Some title
 description=Some description
 ports=12/udp|34|56,78:90/tcp

В приведенном выше примере 'SomeService' может использоваться в правилах приложения, и в нем указывается порт UDP 12, TCP и UDP на порту 34 и TCP-портах 56 и 78-90 включительно.

После создания или редактирования профиля приложения пользователи могут запускать:

 ufw app update <name>

Эта команда автоматически обновит брандмауэр с обновленной информацией профиля. Если указать "все" для имени, то все профили будут обновлены. Чтобы автоматически обновить профиль и добавить новое правило в брандмауэр, пользователи могут запустить:

 ufw app update --add-new <name>

Поведение команды update --add-new можно настроить с помощью:

 ufw app default <policy>

Политика приложения по умолчанию - пропустить, что означает, что команда update --add-new ничего не сделает. Пользователи также могут указать политику разрешения или запрета, чтобы команда update --add-new могла автоматически обновлять брандмауэр. ПРЕДУПРЕЖДЕНИЕ: использование политики разрешения по умолчанию для профилей приложений может привести к риску для системы безопасности. Внимательно рассмотрите последствия для безопасности, прежде чем использовать политику разрешения по умолчанию.

Журналирование

ufw поддерживает несколько уровней ведения журнала. ufw по умолчанию имеет уровень журнала "низкий", если уровень журнала не указан. Пользователи могут указать уровень входа с:

 ufw logging LEVEL
 
 LEVEL может быть 'off', 'low', 'medium', 'high' и 'full'. Уровни журнала определяются как:
 
 off    отключает ведение журнала, управляемого ufw
 
 low    низкий уровень журнала, плюс все разрешенные пакеты, не соответствующие определенной политике, все НЕДОПУСТИМЫЕ пакеты и все новые подключения. Все протоколирование выполняется с ограничением скорости.
      
 medium средний уровень журнала (без ограничения скорости), плюс все пакеты с ограничением скорости
     
 high   высокий уровень журнала без ограничения скорости
      
 full   регистрирует все заблокированные пакеты, не соответствующие определенной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам
      

Уровни журнала выше среднего генерируют много выходных данных журнала и могут быстро заполнить ваш диск. Среда Loglevel medium может генерировать много выходных данных журнала в загруженной системе.

Указание "вкл." просто включает ведение журнала на "низком" уровне, если ведение журнала в данный момент не включено.

Отчеты

Поддерживаются следующие отчеты. Каждый из них основан на системе live и, за исключением отчета о прослушивании, представлен в формате raw iptables:

 raw
 builtins
 before-rules
 user-rules
 after-rules
 logging-rules
 listening
 added

Необработанный отчет показывает полный брандмауэр, в то время как другие показывают подмножество того, что есть в необработанном отчете. Отчет о прослушивании отобразит порты в операционной системе в состоянии прослушивания для tcp и открытом состоянии для udp, а также адрес интерфейса и исполняемый файл, прослушиваемый на порту. Символ '*' используется вместо адреса промежуточного‐сталкиваются, когда исполняемый файл привязан ко всем интерфейсам на этом порту. За этой информацией следует список правил, которые могут повлиять на соединения на этом порту. Правила перечислены в том порядке, в котором они оцениваются ядром, и выигрывает первое совпадение. Пожалуйста обратите внимание, что политика по умолчанию не указана в списке, а tcp6 и udp6 отображаются только в том случае, если включен IPV6.

Добавленный отчет отображает список правил в том виде, в каком они были добавлены в командной строке. В этом отчете не отображается статус запущенного брандмауэра (вместо этого используйте 'ufw status'). Поскольку правила нормализованы ufw, правила могут выглядеть иначе, чем первоначально добавлено правило. Кроме того, ufw не записывает порядок команд, поэтому используется эквивалентный порядок, в котором перечислены правила только для IPv6 после других правил.

Заметки

При установке ufw отключается с политикой запрета входящих сообщений по умолчанию, политикой пересылки по умолчанию deny и политикой разрешения исходящих сообщений по умолчанию с отслеживанием состояния НОВЫХ подключений для входящих и переадресованных подключений. В дополнение к вышесказанному, устанавливается набор правил по умолчанию, который выполняет следующее:

 - DROP packets with RH0 headers
 
 - DROP INVALID packets
 
 - ACCEPT certain icmp packets (INPUT and FORWARD): destination-unreachable, source-quench, time-exceeded, parameter-problem, and echo-request for IPv4. destination-unreachable, packet-too-big, time-exceeded, parameter-problem, and echo-request for IPv6.
 
 - ACCEPT icmpv6 packets for stateless autoconfiguration (INPUT)
 
 - ACCEPT ping replies from IPv6 link-local (ffe8::/10) addresses (INPUT)
 
 - ACCEPT DHCP client traffic (INPUT)
 
 - DROP non-local traffic (INPUT)
 
 - ACCEPT mDNS (zeroconf/bonjour/avahi 224.0.0.251 for IPv4 and ff02::fb for IPv6) for service discovery (INPUT)
 
 - ACCEPT UPnP (239.255.255.250 for IPv4 and ff02::f for IPv6) for service discovery (INPUT)

Порядок правил важен, и выигрывает первый матч. Поэтому при добавлении правил сначала добавляйте более конкретные правила, а позже - более общие. ufw не предназначен для обеспечения полной функциональности брандмауэра через его командный интерфейс, но вместо этого предоставляет простой способ добавления или удаления простых правил. Команда status показывает основную информацию о состоянии брандмауэра, а также правила, управляемые с помощью команды ufw. Он не показывает правила из файлов правил в /etc/ufw. Чтобы увидеть полное состояние брандмауэра, пользователи могут ufw показать raw. Этот воспроизводит таблицы filter, nat, mangle и raw с использованием:

 iptables -n -L -v -x -t <table>
 ip6tables -n -L -v -x -t <table>

Смотрите документацию iptables и ip6tables для получения более подробной информации. Если для политики по умолчанию установлено значение REJECT, ufw может вмешиваться в правила, добавленные вне рамок ufw. Подробности смотрите в README. IPV6 разрешен по умолчанию. Чтобы изменить это поведение, чтобы принимать трафик IPv6 только через интерфейс обратной связи, установите для IPV6 значение "no" в /etc/default/ufw и перезагрузите ufw. Когда включен IPv6, вы можете указать правила таким же образом, как и для правил IPv4, и они будут отображается со статусом ufw. Правила, соответствующие адресам IPv4 и IPv6, применяются к обеим версиям IP. Например, когда включен IPv6, следующее правило разрешает доступ к порту 22 как для трафика IPv4, так и для трафика IPv6:

 ufw allow 22

IPv6 через туннели IPv4 и 6to4 поддерживаются с использованием протокола 'ipv6' ('41'). Этот протокол может использоваться только с полным синтаксисом. Например:

 ufw allow to 10.0.0.1 proto ipv6
 ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ipv6

IPSec поддерживается с помощью протоколов 'esp' ('50') и 'ah' ('51'). Эти протоколы могут использоваться только с полным синтаксисом. Например:

 ufw allow to 10.0.0.1 proto esp
 ufw allow to 10.0.0.1 from 10.4.0.0/16 proto esp
 ufw allow to 10.0.0.1 proto ah
 ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ah

В дополнение к интерфейсу командной строки ufw также предоставляет платформу, которая позволяет администраторам изменять поведение по умолчанию, а также в полной мере использовать netfilter. Смотрите страницу руководства ufw-framework для получения дополнительной информации. Смотрите также ufw-framework, iptables, ip6tables, iptables-restore, ip6tables-restore, sysctl, sysctl.conf

Автор man страницы: ufw is Copyright 2008-2021, Canonical Ltd.