Uncomplicated Firewall (UFW) - это фронтенд для Iptables, программы, которую мы обычно используем для управления netfilter - функцией фильтрации, включенной в ядро Linux. Так как управление Iptables требует от среднего до продвинутого уровня знаний сетевого администрирования, были разработаны фронтэнды, чтобы облегчить задачу, Uncomplicated Firewall является одним из них и будет описан в этом руководстве.
Установка UFW в Debian Linux
Чтобы установить ufw на Debian, выполните:
1 | sudo apt install ufw |
Чтобы включить UFW, выполните:
1 | sudo ufw enable |
Чтобы отключить UFW, выполните команду:
1 | sudo ufw disable |
Если вы хотите быстро проверить состояние вашего брандмауэра, выполните команду:
1 | sudo ufw status |
Где:
- Status: сообщает, активен ли брандмауэр.
- To: показывает порт или службу
- Action: показывает политику
- From: показывает возможные источники трафика.
Мы также можем проверить статус брандмауэра, выполнив команду:
1 | sudo ufw status verbose |
Эта команда для просмотра состояния брандмауэра также покажет политики по умолчанию и направление трафика.
Дополнительно к информативным экранам с "ufw status" или "ufw status verbose" мы можем вывести все пронумерованные правила, если это поможет управлять ими, как вы увидите позже. Чтобы получить пронумерованный список правил брандмауэра, выполните команду:
1 | sudo ufw status numbered |
На любом этапе мы можем сбросить настройки UFW к конфигурации по умолчанию, выполнив команду:
1 | sudo ufw reset |
При сбросе правил ufw запросит подтверждение. Нажмите Y для подтверждения.
Краткое введение в политику межсетевых экранов
В каждом брандмауэре мы можем определить политику по умолчанию, чувствительные сети могут применять ограничительную политику, которая означает отказ или блокировку всего трафика, кроме специально разрешенного. В отличие от ограничительной политики, разрешительный брандмауэр будет принимать весь трафик, кроме специально заблокированного.
Например, если у нас есть веб-сервер, и мы не хотим, чтобы этот сервер обслуживал больше, чем простой веб-сайт, мы можем применить ограничительную политику, блокирующую все порты, кроме портов 80 (http) и 443 (https), это будет ограничительная политика, потому что по умолчанию все порты заблокированы, пока вы не разблокируете определенный порт. Примером разрешительного брандмауэра может быть незащищенный сервер, в котором мы блокируем только порт входа, например, 443 и 22 для серверов Plesk как единственные заблокированные порты. Кроме того, мы можем использовать ufw для разрешения или запрета переадресации.
Применение ограничительных и разрешительных политик с помощью ufw
Чтобы ограничить весь входящий трафик по умолчанию с помощью ufw, выполните следующие действия:
1 | ufw default deny incoming |
Чтобы сделать обратное, разрешив весь входящий трафик, выполните:
1 | ufw default allow incoming |
Чтобы заблокировать весь исходящий трафик из нашей сети, синтаксис аналогичен, для этого выполните:
Для разрешения всего исходящего трафика мы просто заменим "deny" на "allow", для безусловного разрешения исходящего трафика выполним:
Мы также можем разрешить или запретить трафик для определенных сетевых интерфейсов, сохраняя различные правила для каждого интерфейса, чтобы заблокировать весь входящий трафик с моей ethernet карты, я бы выполнил:
1 | ufw deny in on [ethernet] |
К примеру
1 | sudo ufw deny in on ens33 |
Где:
- ufw - вызывает программу
- deny - определяет политику
- in - входящий трафик
- ens33 - сетевой интефейс
Теперь применим ограничительную политику по умолчанию для входящего трафика, а затем разрешим только порты 80 и 22:
1 2 3 | sudo ufw default deny incoming sudo ufw allow 22 sudo ufw allow http |
- Первая команда блокирует весь входящий трафик
- Вторая разрешает входящие подключения к порту 22
- Третья - к порту 80.
Обратите внимание, что ufw позволяет нам называть службу по умолчанию портом или именем службы. Мы можем принимать или запрещать соединения с портом 22 или ssh, портом 80 или http.
Весь входящий трафик запрещен, в то время как два разрешенных нами сервиса (22 и http) доступны.
Если мы хотим удалить определенное правило, мы можем сделать это с помощью параметра "delete". Чтобы удалить последнее правило, разрешающее входящий трафик на порт http, выполните команду:
1 | sudo ufw delete allow http |
Давайте проверим, доступны или заблокированы службы http, выполнив ufw status verbose:
Порт 80 больше не появляется как исключение, единственным портом остается порт 22.
Вы также можете удалить правило, просто вызвав его числовой ID, предоставленный командой "sudo ufw status numbered"
1 | sudo ufw delete 1 |
Программа запросит подтверждение и выполнит его.
Дополнительно к DENY мы можем использовать параметр REJECT, который сообщит другой стороне, что соединение было отклонено, для REJECT соединения с ssh мы можем выполнить:
1 | sudo ufw reject 22 |
Тогда, если кто-то попытается получить доступ к нашему порту 22, он получит уведомление о том, что соединение было отклонено, как показано на рисунке ниже.
На любом этапе мы можем проверить добавленные правила по сравнению с конфигурацией по умолчанию, выполнив команду:
1 | sudo ufw show added |
Мы можем запретить все соединения и разрешить определенные IP-адреса, в следующем примере я отклоню все соединения с портом 22, кроме IP 192.168.0.2, который будет единственным, кто сможет подключиться:
1 2 | ufw deny 22 ufw allow from [IP] |
Теперь, если мы проверим состояние ufw, то увидим, что весь входящий трафик на порт 22 запрещен (правило 1), но разрешен для указанного IP (правило 2).
Мы можем ограничить попытки входа в систему для предотвращения атак грубой силы, установив запущенный лимит:
1 | sudo ufw limit ssh |
Чтобы закончить это руководство и научиться ценить щедрость ufw, давайте вспомним, как мы могли запретить весь трафик, кроме одного IP, используя iptables:
1 2 3 4 | iptables -A INPUT -s [IP] -j ACCEPT iptables -A OUTPUT -d [IP] -j ACCEPT iptables -P INPUT DROP iptables -P OUTPUT DROP |
То же самое можно сделать с помощью всего 3 коротких и простых строк, используя ufw:
1 2 3 | sudo ufw default deny incoming sudo ufw default deny outgoing sudo ufw allow from [IP] |
Надеюсь, вы нашли это введение в ufw полезным.