Что такое UFW и его первоначальная настройка на Ubuntu-сервере
Обновлено:
Брандмауэры, они же фаерволы, они же межсетевые экраны, – это программы для фильтрации сетевого трафика. Брандмауэр регулирует, какие приложения могут получать данные извне через порт, сетевой интерфейс или в зависимости от IP источника, а какие – нет. Благодаря этому создается дополнительная защита, что важно для серверов.
UFW (uncomplicated firewall – несложный фаервол) на самом деле не брандмауэр, а интерфейс к IPTables. В свою очередь, утилиту iptables также часто называют брандмауэром, хотя она является интерфейсом управления к Netfilter.
Netfilter – это межсетевой экран Linux, настраиваемый через iptables. Настраивать правила фильтрации трафика через iptables относительно сложно, поэтому используют утилиту ufw, которая позволяет упростить процесс настройки.
Обычно в Ubuntu ufw устанавливается с системой, но находится в выключенном (неактивном) состоянии:
# ufw status Status: inactive
Некоторые программы, принимающие по сети данные (среди них Openssh-server, Nginx, Apache), при установки сами прописывают в UFW свои так называемые профили. Зарегистрированными таким образом сервисами можно управлять (открывать/закрывать для них получение данных по сети), обращаясь к ним по именам, а не номерам портов. Имеющиеся профили содержатся в каталоге /etc/ufw/applications.d/:
# ls /etc/ufw/applications.d/ openssh-server # cat /etc/ufw/applications.d/openssh-server [OpenSSH] title=Secure shell server, an rshd replacement description=OpenSSH is a free implementation of the Secure Shell protocol. ports=22/tcp
Чтобы в удобном виде выводить список зарегистрированных профилей и информацию по ним, используют команды ufw app list и ufw app info 'Имя_Сервиса':
# ufw app list Available applications: OpenSSH # ufw app info 'OpenSSH' Profile: OpenSSH Title: Secure shell server, an rshd replacement Description: OpenSSH is a free implementation of the Secure Shell protocol. Port: 22/tcp
Если изначально брандмауэр выключен, то есть команда ufw status возвращает Status: inactive, следует выполнить такую серию команд:
# ufw default deny incoming Default incoming policy changed to 'deny' (be sure to update your rules accordingly) # ufw default allow outgoing Default outgoing policy changed to 'allow' (be sure to update your rules accordingly) # ufw allow 'OpenSSH' Rules updated Rules updated (v6) # ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Первые две команды здесь для подстраховки, так как по умолчанию все так и есть — всё входящее запрещено, разрешено всё исходящее. Поэтому важно разрешить получение данных для OpenSSH до того, как будет включен фаервол, иначе вы не сможете подключаться по протоколу ssh: ufw allow 'OpenSSH'. Команда ufw enable переводит фаервол в активный статус.
# ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Если потребуется выключить фаервол, используется команда disable.
# ufw disable Firewall stopped and disabled on system startup # ufw status Status: inactive
В дальнейшем при установке веб-сервера (Apache или Nginx) получение им трафика надо будет разрешать в UFW.