Межсетевой экран UFW

UFW - межсетевой экран (Firewall) для Linux, который является надстройкой над iptables. В отличии от iptables является более интуитивно понятным, т.к. по сути все правила к нему пишутся на английском языке. Своим синтаксисом чем-то напоминает pf (packet filter) от разработчиков OpenBSD.
UFW полностью совместим с iptables и его можно совмещать с iptables при необходимости.
UFW не является полноценной заменой iptables, очень сложные правила на нём не напишешь, но необходимый минимумом, который обычно требуется простому пользователю, он имеет.

Установка и включение

Ставится стандартно:

$ sudo apt-get install ufw

Внимание! Если манипуляции производятся на удалённом сервере, то есть смысл сразу же разрешить входящий и исходящий трафик для SSH, иначе при включении фаервола можно потерять коннект к машине:

$ sudo ufw allow 22 # вместо **22** необходимо вставить ваш порт SSH (если он не стандартный)

Включаем ufw (sudo опустим, т.к. все команды выполнять будем от root):

root# ufw enable

Выключается он аналогично:

root# ufw disable

Важные моменты

После включения/выключения ufw никаких дополнительных махинаций производить не нужно. Если вы включили фаервол, то после перезагрузки он включится, если выключили - он будет выключен.
Тоже самое касается и правил. Всё что вы добавили - сохранится и будет работать после перезагрузки.

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

Все пользовательские настройки ufw хранятся в каталоге /etc/ufw. Поэтому периодически можно делать резервную копию этого каталога для бэкапа правил (либо sudo iptables-save > iptables.rules).

UFW обладает весьма внушительным функционалом, ознакомиться с которым можно выполнив ufw help, либо man ufw.

Примеры настройки

Откроем входящий и исходящий tcp/udp трафик для порта 80:

root# ufw allow 80

Если нужен только tcp, а udp нет, тогда правило модифицируется так:

root# ufw deny 80/tcp

Открываем порт 3000 на компьютере для определённого IP (127.0.0.1):

root# ufw allow from 127.0.0.1 to any port 3000

Открыть все порты для IP-адреса 192.168.1.6:

root# ufw allow from 192.168.1.6 to any

Аналогичным образом закрываются все порты от неугодного IP-адреса (например, бота который брутфорсит вам SSH):

root# ufw deny from 23.96.52.53 to any

Просмотреть существующие правила можно выполнив:

root# ufw status
Status: active

To                         Action      From
--                         ------      ----
443                        ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
22                         ALLOW       Anywhere                  
666                        ALLOW       Anywhere                  
81/tcp                     ALLOW       127.0.0.1                 
81/udp                     ALLOW       127.0.0.1                 
3000                       ALLOW       127.0.0.1                 
666/udp                    ALLOW       Anywhere                  
443 (v6)                   ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)             
666 (v6)                   ALLOW       Anywhere (v6)             
666/udp (v6)               ALLOW       Anywhere (v6)

Удалять правила можно несколькими способами:

1.) Указывая непосредственно введённое правило:

root# ufw delete allow 22

2.) Предварительно выводя на экран нумерованный список правил:

root# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 443                        ALLOW IN    Anywhere                  
[ 2] 80                         ALLOW IN    Anywhere                  
[ 3] 22                         ALLOW IN    Anywhere                  
[ 4] 666                        ALLOW IN    Anywhere                  
[ 5] 81/tcp                     ALLOW IN    127.0.0.1  
...

и удаляя по номеру строки:

root# ufw delete НОМЕР_СТРОКИ

3.) Либо можно удалить вообще все правила:

root# ufw reset

В заключение

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