Межсетевой экран 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
В заключение
Обязательно используйте межсетевой экран везде где это возможно. Лучше при установке очередной софтины добавить одной строчкой дополнительное правило, чем быть поломанным через какой-нибудь левый сервис, который открыл порт наружу на вашем компьютере не спросив разрешения у вас.