В современных дистрибутивах Linux, включая отечественные Astra Linux, поставляется межсетевой экран UFW.
По умолчанию после установки он выключен, и пропускает все соединения.
Для защиты подключений из внешних сетей можно использовать межсетевой экран на уровне Edge Gateway, как описано в статье
Для защиты подключений внутри виртуальной сети, а также в дополнение к межсетевому экрану на Edge Gateway, нужно настроить межсетевой экран на уровне виртуальной машины.
ВНИМАНИЕ! Перед включением UFW проверьте, что добавлено правило, разрешающее подключение по SSH с компьютера, с которого в текущее время выполняется администрирование, в противном случае может быть потеряно управление машиной.
Все команды выполняются с правами суперпользователя.
Для добавления разрешающего правила используем командуufw allow from <src> to <dst> port <port> proto tcp
где <src> - IP-адрес или подсеть источника, например 192.168.5.0/24 или 192.168.5.31
<dst> - IP-адрес назначения, чтобы разрешить подключения на конкретный сетевой адаптер, если в системе несколько адаптеров, или any если разрешено подключение на любой из имеющихся адаптеров
<port> - порт, список или диапазон портов, на которые разрешены подключения. Допускается не более 15 портов в списке, при этом диапазон считается как два порта. Одиночный порт может быть указан как имя протокола, например, SSH, HTTP, HTTPS; при указании списка портов можно использовать только числовые значения.
proto tcp - указание протокола, по которому работает правило, в данном случае TCP. Для выбора протокола UDP нужно указать proto udp. Если не указать протокол, то правило будет обрабатывать и TCP, и UDP
Пример правила, разрешающего подключения по протоколу SSH из внутренней сети:ufw allow from 192.168.5.0/24 to any port ssh proto tcp
для задания правил по умолчанию используется директива defaultufw default <action> <direction>
где <action> - действие, deny - запрет, allow - пропуск
<direction> - направление трафика, incoming - входящий, outgoing - исходящий
Пример правил, запрещающих входящие, но разрешающих исходящие соединенияufw default deny incomingufw default allow outgoing
После создания правил нужно включить ufw командой enableufw enable
Появится предупреждение о возможности обрыва SSH-подключений "Command may disrupt existing ssh connections. Proceed with operation (y|n)?", в котором нужно подтвердить выполнение операции
После этого можно проверить созданные правила с помощью командыufw status numbered
Status: active
To Action From-- ------ ----[ 1] 22/tcp ALLOW IN 192.168.5.0/24[ 2] 80/tcp ALLOW IN 192.168.5.0/24[ 3] 443/tcp ALLOW IN 192.168.5.0/24
Для удаления правила, если оно стало не нужно, используется команда deleteufw delete <rule>
где <rule> - правило или его номер
Пример удаления правилаufw delete 3Deleting:allow from 172.17.0.0/24 to any port 443 proto tcpProceed with operation (y|n)? yRule deleted
Будет запрошено подтверждение на удаление правила, в котором нужно подтвердить выполнение операции.
Всё вышеописанное применяется к протоколу IPv4
Для применения правил к IPv6 нужно проверить, что в файле /etc/default/ufw параметр IPv6=yes и в качестве адресов источника и назначения указывать адреса IPv6
По умолчанию, для UFW включена обработка протокола IPv6, для входящих подключений политика deny, для исходящих подключений политика allow
Если при добавлении правила указать только порт и протокол, то оно будет добавлено как для IPv4, так и для IPv6.
Для журналирования подключений в правило добавляется директива logufw allow log from 192.168.5.0/24 to any port ssh proto tcp
В этом случае в журнале /var/log/ufw.log будут журналироваться соединения, попадающие под созданное правило.
По умолчанию журналируются все блокированные пакеты.
Для защиты от перебора (множественных подключений) используется команда limit вместо allowufw limit ssh
Это ограничит количество подключений до 6 с одного адреса в течение 30 секунд по протоколу SSH.
После внесения изменений нужно перезапустить UFWufw reload