UFW или Uncomplicated Firewall это приложение для управления межсетевым экраном на основе iptables. UFW установлен по умолчанию в Ubuntu и имеет относительно простую настройку.
UFW поддерживает как IPv4, так и IPv6.
Также UFW имеет интерфейс, если вы используете GNOME — установите guwf,а если KDE — kcm-ufw.
В этой статье мы рассмотрим основы работы с UFW в Ubuntu 15.04
Исходные данные
- Ubuntu 15.04
- root права
Установка UFW
По умолчанию, UFW уже установлен в Ubuntu 15.04. Вы можете найти его с помощью команды:
which ufw
Если команда не отобразила путь к UFW, установите его вручную следующей командой:
apt-get install ufw
После чего запустите его:
ufw enable
В результате увидите подобное сообщение:
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Базовые команды UFW
Команда «ufw enable» включила UFW и установила базовые правила. Вы можете проверить статус работы UFW следующей командой:
ufw status verbose
В результате увидите подобное:
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip
Если хотите отключить UFW, используйте:
ufw disable
В ответ вы получите следующее сообщение:
Firewall stopped and disabled on system startup
Команды Allow и Deny
Команда Allow
После включения UFW, все входящие соединения будут заблокированы. Поэтому, первым делом нужно разрешить доступ по SSH, если вы управляете сервером удаленно.
Команда «ufw allow port» разрешит доступ к порту port (замените port на номер порта, для SSH по умолчанию — 22).
ufw allow 22
В результате увидите подобное сообщение:
Rules updated Rules updated (v6) #For IPv6
Если вы хотите разрешить все входящие соединения к 22 порту, но только по протоколу TCP, добавьте в конец команды «/tcp«:
ufw allow 22/tcp
Если сервис, к которому вы хотите разрешить входящие соединения работает на стандартном порту (например SSH — 22 порт), просто замените номер порта на имя сервиса.
Это сильно упрощает процесс открытия портов и избавляет от необходимости запоминать порты.
UFW берет стандартные порты в файле /etc/services.
Например, чтобы открыть доступ к SSH, используйте это:
ufw allow ssh
И проверим результат:
ufw status
Команда Deny
Команда Deny обратна «Allow» т.е. она запрещает доступ к порту.
Например, чтобы закрыть доступ к порту 80, используйте:
ufw deny 80
Результат:
Rule added Rule added (v6)
Также как и в команде «Allow», можно использовать имена сервисов, для блокирования стандартных портов.
Например заблокируем http порт (80):
ufw deny http
Продвинутые команды UFW
Немного углубимся в синтаксис команд UFW, в этой части рассмотрим работу с диапазонами.
(например, разрешить пассивный режим FTP и разрешим доступ только с одного IP или подсети).
Команда Allow для диапазона портов
Помимо разрешения доступа к одиночному порту, можно указать целый диапазон портов. Например, FTP или IRC используют несколько портов для связи с клиентами.
Разрешим доступ к IRC серверу, работающему на портах с 6660 по 6670:
ufw allow 6660:6670/tcp ufw allow 6660:6670/udp
Это разрешит подключение к портам 6660-6670 по протоколам TCP и UDP.
Команда Allow для конкретного IP
Также вы можете разрешить доступ ко всем сервисам(портам) для конкретного IP адреса. Например, если вы имеете статический IP на домашнем сервере и хотите получить доступ к нему извне.
Разрешим доступ ко всем портам для IP 192.168.1.106:
ufw allow from 192.168.1.106
Результат:
Rule added
Команда Allow для подсетей
Если вы хотите разрешить полный доступ для целой подсети IP адресов, используйте:
ufw allow from 192.168.1.1/24
Результат:
WARN: Rule changed after normalization Rule added
Команда Allow для доступа с конкретного IP к определенному порту
Если вы хотите разрешить доступ только с конкретного IP и к определенному порту, вы можете совместить команды, рассмотренные выше.
Разрешим доступ к порту 22 (SSH) только для IP 192.168.1.106, все остальные соединения будут отклонены:
ufw allow from 192.168.1.106 proto tcp to any port 22
Результат:
Rule added
Команда Allow разрешающая все входящие соединения к определенному порту
Разрешим все входящие соединения к порту 80:
ufw allow to any port 80
Удаление правил UFW
В этой секции мы рассмотрим удаление правил, добавленных в UFW. Для этого вы можете использовать команду «delete«.
Вы также можете указать, удалить разрешающее или запрещающее правило.
Например, удалим разрешающее правило для SSH:
ufw delete allow ssh
Результат:
Rule deleted Rule deleted (v6)
Внимание, этой командой вы заблокируете доступ к серверу по SSH, не потеряйте контроль над сервером!
Если у вас множество правил, то самый простой способ идентификации и работы с правилами — работа с их ID.
Следующая команда выведет список правил с их ID:
ufw status numbered
Результат:
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 22/tcp (v6) ALLOW IN Anywhere (v6)
Удалим разрешающее правило для SSH по IPv6 (ID правила: 2)
ufw delete 2
Отключение и сброс UFW
Если вам нужно отключить UFW, но оставить правила, используйте команду:
ufw disable
Результат:
Firewall stopped and disabled on system startup
Если вы хотите отключить UFW и удалить все его правила, используйте:
ufw reset
Результат:
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'after6.rules' to '/etc/ufw/after6.rules.20150918_190351' Backing up 'user.rules' to '/lib/ufw/user.rules.20150918_190351' Backing up 'after.rules' to '/etc/ufw/after.rules.20150918_190351' Backing up 'before.rules' to '/etc/ufw/before.rules.20150918_190351' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20150918_190351' Backing up 'user6.rules' to '/lib/ufw/user6.rules.20150918_190351'
Вас спросят уверены ли вы? После чего создается резерная копия правил и происходит удаление правил.
На этом всё 🙂