UFW или Uncomplicated Firewall это приложение для управления межсетевым экраном на основе iptables. UFW установлен по умолчанию в Ubuntu и имеет относительно простую настройку.
UFW поддерживает как IPv4, так и IPv6.
Также UFW имеет интерфейс, если вы используете GNOME – установите guwf,а если KDE – kcm-ufw.
В этой статье мы рассмотрим основы работы с UFW в Ubuntu 15.04
Всю статью я разделил на 7 этапов:
- Исходные данные
- Установка UFW
- Базовые команды UFW
- Команды Allow и Deny
- Продвинутые команды UFW
- Удаление правил UFW
- Отключение и сброс UFW
Оглавление
1. Исходные данные
- Ubuntu 15.04
- root права
2. Установка 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
3. Базовые команды 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
4. Команды Allow и Deny
4.1 Команда 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
4.2 Команда Deny.
Команда Deny обратна "Allow" т.е. она запрещает доступ к порту.
Например, чтобы закрыть доступ к порту 80, используйте:
ufw deny 80
Результат:
Rule added Rule added (v6)
Также как и в команде "Allow", можно использовать имена сервисов, для блокирования стандартных портов.
Например заблокируем http порт (80):
ufw deny http
5. Продвинутые команды UFW
Немного углубимся в синтаксис команд UFW, в этой части рассмотрим работу с диапазонами.
(например, разрешить пассивный режим FTP и разрешим доступ только с одного IP или подсети).
5.1 Команда Allow для диапазона портов
Помимо разрешения доступа к одиночному порту, можно указать целый диапазон портов. Например, FTP или IRC используют несколько портов для связи с клиентами.
Разрешим доступ к IRC серверу, работающему на портах с 6660 по 6670:
ufw allow 6660:6670/tcp
ufw allow 6660:6670/udp
Это разрешит подключение к портам 6660-6670 по протоколам TCP и UDP.
5.2 Команда Allow для конкретного IP
Также вы можете разрешить доступ ко всем сервисам(портам) для конкретного IP адреса. Например, если вы имеете статический IP на домашнем сервере и хотите получить доступ к нему извне.
Разрешим доступ ко всем портам для IP 192.168.1.106:
ufw allow from 192.168.1.106
Результат:
Rule added
5.3 Команда Allow для подсетей
Если вы хотите разрешить полный доступ для целой подсети IP адресов, используйте:
ufw allow from 192.168.1.1/24
Результат:
WARN: Rule changed after normalization Rule added
5.4 Команда 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
5.5 Команда Allow разрешающая все входящие соединения к определенному порту
Разрешим все входящие соединения к порту 80:
ufw allow to any port 80
6. Удаление правил 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
7. Отключение и сброс 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'
Вас спросят уверены ли вы? После чего создается резерная копия правил и происходит удаление правил.
На этом всё 🙂