UFW
Установка ufw на ALT Linux
UFW (Uncomplicated Firewall) - является самым простым и довольно популярным инструментарием командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian.
На данной странице описано краткая инструкция по его установке и настройке в системах ALT Linux.
UFW исходник можно взять здесь: https://launchpad.net/ufw/+download
Шаг 1) На момент написания этой записи ufw-0.36.1 стабильная версия. Скачайте ufw-0.36.1.tar.gz
Шаг 2) Закиньте архив на сервер и распакуйте. Установите зависимости указанные в README:
# для alt server 10 нужно доустановить следующие зависимости sudo apt-get install conntrack-tools iptables-ratelimit
Шаг 3) Войдите в папку распакованного архива. В README файле указано выполнить установку таким образом:
sudo python3 ./setup.py install
После выполнения данной команды появится скрипт запуска в /lib/ufw/ufw-init
Появится папка /etc/ufw в которой вы можете поправить преднастроенные фильтры.
Шаг 4) Включите ufw:
sudo ufw enable
Шаг 5) Настройте автозапуск ufw, например, с помощью crontab. Для этого root пользователь должен выполнить:
crobtab -e
Добавьте в планировщик cron строчку:
@reboot /lib/ufw/ufw-init start
Шаг 6) Перезагрузитесь. Затем убедитесь, что ufw запустился при загрузке с помощью команды:
sudo ufw status
Шаг 7) С помощью iptables-save > test убедитесь, что в test содержаться настройки добавленные ufw. Встроенный iptables должен оставаться выключенным.
Шаг 8) В завершении убедитесь, что ufw работает нормально с помощью iptables-save > test проверить, что в test содержаться настройки добавленные ufw. Разрешите доступ к порту, который у вас слушает данная машина и убедитесь, что при разрешающем правиле доступ открыт, при запрещающем доступ закрыт с внешнего хоста.
Установка завершена.
Переведенный на русский man ufw
UFW:(8) September 2021 NAME
ufw - программа для управления брандмауэром netfilter
DESCRIPTION
Эта программа предназначена для управления брандмауэром Linux и направлена на предоставление пользователю простого в использовании интерфейса.
USAGE
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
OPTIONS
--version показать номер версии программы и выйти
-h, --help показать справочное сообщение и выйти
--dry-run ничего не изменяйте, просто покажите изменения
включение перезагрузка фаервола и включение фаервола при загрузке.
disable выгружает брандмауэр и отключает его при загрузке
reload перезагружает брандмауэр
default allow|deny|reject DIRECTION измените политику по умолчанию для DIRECTION движения трафика, где DIRECTION является одним из входящих, исходящих или маршрутизированных. Обратите внимание, что существующие правила придется переносить вручную при изменении политики по умолчанию. Дополнительные сведения о запрете и отклонении см. в разделе RULE SYNTAX.
logging on|off|LEVEL переключите ведение журнала. Зарегистрированные пакеты используют средство системного журнала LOG_KERN. Системы, настроенные для поддержки rsyslog, также могут входить в /var/log/ufw.log. Указание LEVEL включает вход в систему для указанного LEVEL. Уровень журнала по умолчанию - "низкий". Смотрите Ведение LOGGING для подробности.
reset Отключает и сбрасывает настройки брандмауэра по умолчанию при установке. Также можно указать опцию --force для выполнения сброса без подтверждения.
status показывать статус брандмауэра и правил, управляемых ufw. Используйте 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 отображение информации о запущенном брандмауэре. Смотрите REPORTS
allow ARGS добавить разрешающее правило. Смотрите RULE SYNTAX
deny ARGS добавить запрещающее правило без уведомления. Смотрите RULE SYNTAX
reject ARGS добавить запрещающее правило с уведомлением. Смотрите RULE SYNTAX
limit ARGS добавить правило лимитирования. Смотрите RULE SYNTAX
delete RULE|NUM удалить соответствующее RULE (правило)
insert NUM RULE вставить соответствующее RULE (правило) как правило под указаным NUM (номером)
prepend RULE добавьте соответствующее RULE (правило) в начало набора правил
RULE SYNTAX
Пользователи могут указывать правила, используя либо простой синтаксис, либо полный синтаксис. Простой синтаксис указывает только порт и, необязательно, протокол, который должен быть разрешен или запрещен на хосте.
Оба синтаксиса поддерживают указание комментария к правилу. Для существующих правил указание другого комментария обновляет комментарий, а указание удаляет комментарий.
Пример правил, использующих простой синтаксис:
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
Смотрите LOGGING для получения дополнительной информации о ведении журнала.
EXAMPLES
Запретить весь доступ к порту 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
REMOTE MANAGEMENT
При запуске ufw enable или запуске ufw через его initscript ufw очистит свои цепочки. Это необходимо для того, чтобы ufw мог поддерживать согласованное состояние, но это может привести к разрыву существующих подключений (например, ssh). ufw поддерживает добавление правил перед включением брандмауэра, поэтому администраторы могут выполнять:
ufw allow proto tcp from any to any port 22
перед запуском 'ufw enable'. Правила по-прежнему будут сброшены, но ssh-порт будет открыт после включения брандмауэра. Пожалуйста, обратите внимание, что как только ufw 'enabled', ufw не будет очищать цепочки при добавлении или удалении правил (но будет при изменении правила или политики по умолчанию). По умолчанию ufw будет запрашивать при включении брандмауэра во время работы по ssh. Это можно отключить с помощью 'ufw --force enable'.
APPLICATION INTEGRATION
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 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 могла автоматически обновлять брандмауэр. ПРЕДУПРЕЖДЕНИЕ: использование политики разрешения по умолчанию для профилей приложений может привести к риску для системы безопасности. Внимательно рассмотрите последствия для безопасности, прежде чем использовать политику разрешения по умолчанию.
LOGGING
ufw поддерживает несколько уровней ведения журнала. ufw по умолчанию имеет уровень журнала "низкий", если уровень журнала не указан. Пользователи могут указать уровень входа с:
ufw logging LEVEL
LEVEL может быть 'off', 'low', 'medium', 'high' и 'full'. Уровни журнала определяются как:
off отключает ведение журнала, управляемого ufw
low низкий уровень журнала, плюс все разрешенные пакеты, не соответствующие определенной политике, все НЕДОПУСТИМЫЕ пакеты и все новые подключения. Все протоколирование выполняется с ограничением скорости.
medium средний уровень журнала (без ограничения скорости), плюс все пакеты с ограничением скорости
high высокий уровень журнала без ограничения скорости
full регистрирует все заблокированные пакеты, не соответствующие определенной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам
Уровни журнала выше среднего генерируют много выходных данных журнала и могут быстро заполнить ваш диск. Среда Loglevel medium может генерировать много выходных данных журнала в загруженной системе.
Указание "вкл." просто включает ведение журнала на "низком" уровне, если ведение журнала в данный момент не включено.
REPORTS
Поддерживаются следующие отчеты. Каждый из них основан на системе 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 после других правил.
NOTES
При установке 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
ip6tables -n -L -v -x -t