Основы Uncomplicated FireWall. Общие правила и команды брандмауэра UFW.

  • Автор записи:
  • Рубрика записи:Linux
  • Комментарии к записи:0 комментариев

UFW — это инструмент настройки брандмауэра , который работает поверх iptables  и включен в дистрибутивы Ubuntu. Он обеспечивает оптимизированный интерфейс для настройки распространенных вариантов использования брандмауэра через командную строку.

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

Проверить состояние UFW

Чтобы проверить, включен ли UFW, запустите:

sudo ufw status

Вывод покажет, активен ли ваш брандмауэр или нет.

Включить UFW

Если при проверке вы получили сообщение Status: inactive, это означает, что брандмауэр еще не включен в системе. Вам нужно будет запустить команду, чтобы включить его.

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

Чтобы включить UFW в вашей системе, запустите:

sudo ufw enable

Вы увидите такой вывод:

OutputFirewall is active and enabled on system startup

Чтобы увидеть, что в данный момент заблокировано или разрешено, вы можете использовать verbose параметр при запуске ufw status следующим образом:

sudo ufw status verbose
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

Отключить UFW

Если по какой-то причине вам необходимо отключить UFW, вы можете сделать это с помощью следующей команды:

sudo ufw disable

Имейте в виду, что эта команда полностью отключит службу брандмауэра в вашей системе.

Заблокировать IP-адрес

Чтобы заблокировать все сетевые подключения, исходящие с определенного IP-адреса, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, который вы хотите заблокировать:

sudo ufw deny from 203.0.113.100

В этом примере from 203.0.113.100 указывается исходный IP-адрес «203.0.113.100».

Если вы запустите sudo ufw status сейчас, вы увидите указанный IP-адрес, указанный как запрещенный:

OutputStatus: active

To                         Action      From
--                         ------      ----
Anywhere                   DENY        203.0.113.100         

Все соединения, входящие и исходящие, для указанного IP-адреса блокируются.

Блокировать подсеть

Если вам нужно заблокировать всю подсеть, вы можете использовать адрес подсети в качестве  параметра from команды ufw deny. Это заблокирует все IP-адреса в подсети, например 203.0.113.0/24:

sudo ufw deny from 203.0.113.0/24

Блокировать входящие подключения к сетевому интерфейсу

Чтобы заблокировать входящие подключения с определенного IP-адреса к определенному сетевому интерфейсу, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, который вы хотите заблокировать:

sudo ufw deny in on eth0 from 203.0.113.100

Параметр in сообщает ufw, что правило следует применять только для входящих соединений, а  параметр on eth0 указывает, что правило применяется только к интерфейсу eth0. Это может быть полезно, если у вас система с несколькими сетевыми интерфейсами (в том числе виртуальными) и вам необходимо заблокировать внешний доступ к некоторым из этих интерфейсов, но не ко всем.

Разрешить IP-адрес

Чтобы разрешить все сетевые подключения, исходящие с определенного IP-адреса, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, которому вы хотите разрешить доступ:

sudo ufw allow from 203.0.113.101

Если вы запустите sudo ufw statusсейчас, вы увидите аналогичный результат: слово ALLOWрядом с только что добавленным IP-адресом.

OutputStatus: active

To                         Action      From
--                         ------      ----
...          
Anywhere                   ALLOW       203.0.113.101 

Вы также можете разрешить подключения из всей подсети, указав соответствующую маску подсети для хоста, например 203.0.113.0/24.

Разрешить входящие подключения к сетевому интерфейсу

Чтобы разрешить входящие подключения с определенного IP-адреса к определенному сетевому интерфейсу, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, который вы хотите разрешить:

sudo ufw allow in on eth0 from 203.0.113.102

Параметр in сообщает ufw, что правило следует применять только для входящих соединений, а параметр on eth0 указывает, что правило применяется только к eth0 интерфейсу.

Если вы запустите sudo ufw status сейчас, вы увидите вывод, похожий на этот:

OutputStatus: active

To                         Action      From
--                         ------      ----
...         
Anywhere on eth0           ALLOW       203.0.113.102            

Удалить правило UFW

Чтобы удалить правило, которое вы настроили ранее используйте ufw delete, а затем правило ( allow или deny ) и целевую спецификацию. В следующем примере будет удалено ранее установленное правило, разрешающее все подключения с IP-адреса 203.0.113.101:

sudo ufw delete allow from 203.0.113.101

Другой способ указать, какое правило вы хотите удалить, — указать идентификатор правила. Эту информацию можно получить с помощью следующей команды:

sudo ufw status numbered
OutputStatus: active

     To                         Action      From
     --                         ------      ----
[ 1] Anywhere                   DENY IN     203.0.113.100             
[ 2] Anywhere on eth0           ALLOW IN    203.0.113.102             

Из вывода видно, что есть два активных правила. Первое правило с выделенными значениями запрещает все соединения, исходящие с IP-адреса 203.0.113.100. Второе правило разрешает поступающие с IP-адреса 203.0.113.102 подключения к eth0 интерфейсу, .

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

sudo ufw delete 1

Вам будет предложено подтвердить операцию и убедиться, что предоставленный вами идентификатор относится к правильному правилу, которое вы хотите удалить.

OutputDeleting:
 deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted

Если вы еще раз перечислите свои правила с помощью sudo ufw status, вы увидите, что правило было удалено.

Список доступных профилей приложений

После установки приложения, использующие сетевые соединения, обычно настраивают профиль UFW, который можно использовать для разрешения подключения с внешних адресов. Часто это то же самое, что и запуск ufw allow from, с преимуществом предоставления ярлыка, который абстрагирует конкретные номера портов, которые использует служба, и предоставляет удобную для пользователя номенклатуру для ссылочных служб.

Чтобы просмотреть, какие профили доступны в данный момент, выполните следующее:

sudo ufw app list

Если вы установили такую ​​службу, как веб-сервер или другое сетевое программное обеспечение, а профиль не был доступен в UFW, сначала убедитесь, что эта служба включена. Для удаленных серверов обычно имеется доступный OpenSSH:

OutputAvailable applications:
  OpenSSH

Включить профиль приложения

Чтобы включить профиль приложения UFW, запустите команду ufw allow, а затем укажите имя профиля приложения, которое вы хотите включить. Список профилей приложений можно получить с помощью команды sudo ufw app list. В следующем примере мы включаем профиль OpenSSH, который разрешает все входящие соединения SSH через порт SSH по умолчанию.

sudo ufw allow “OpenSSH”

Не забывайте заключить в кавычки имена профилей, состоящие из нескольких слов, например Nginx HTTPS.

Отключить профиль приложения

Чтобы отключить профиль приложения, который вы ранее настроили в UFW, вам необходимо удалить соответствующее правило. Например, рассмотрим следующий вывод sudo ufw status:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                               
Nginx Full                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)                   
Nginx Full (v6)            ALLOW       Anywhere (v6)        

Этот вывод указывает на то, что профиль приложения Nginx Full в настоящее время включен, что позволяет осуществлять любые подключения к веб-серверу как через HTTP, так и через HTTPS. Если вы хотите разрешить только HTTPS-запросы к вашему веб-серверу и о него, вам придется сначала включить самое строгое правило, которым в данном случае будет Nginx HTTPS, а затем отключить активное в данный момент правило Nginx Full.

sudo ufw allow "Nginx HTTPS"
sudo ufw delete allow "Nginx Full"

Помните, что вы можете перечислить все доступные профили приложений с помощью sudo ufw app list.

Разрешить SSH

При работе с удаленными серверами вам необходимо убедиться, что порт SSH открыт для подключений, чтобы вы могли удаленно войти на свой сервер.

Следующая команда включит профиль приложения OpenSSH UFW и разрешит все подключения к порту SSH по умолчанию на сервере:

sudo ufw allow OpenSSH

Альтернативный, хотя и менее удобный для пользователя, синтаксис заключается в указании точного номера порта службы SSH, по умолчанию 22:

sudo ufw allow 22

Разрешить входящий SSH с определенного IP-адреса или подсети

Чтобы разрешить входящие соединения с определенного IP-адреса или подсети, вы должны включить директиву from, определяющую источник соединения. Для этого вам также потребуется указать адрес назначения с помощью параметра to. Чтобы заблокировать это правило только для протокола SSH, ограничьте proto (протокол) tcp, а затем используйте параметр port и установите для него значение 22 (порт SSH по умолчанию).

Следующая команда разрешит только SSH-соединения, исходящие с IP-адреса 203.0.113.103:

sudo ufw allow from 203.0.113.103 proto tcp to any port 22

Вы также можете использовать адрес подсети в качестве from параметра, чтобы разрешить входящие SSH-соединения из определенной подсети:

sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22

Разрешить входящий Rsync с определенного IP-адреса или подсети

Программа Rsync , работающая на порту 873, может использоваться для передачи файлов с одного компьютера на другой.

Чтобы разрешить входящие rsync соединения с определенного IP-адреса или подсети, используйте from параметр, чтобы указать исходный IP-адрес, и port параметр, чтобы установить порт назначения 873. Следующая команда разрешит только соединения Rsync, исходящие с IP-адреса 203.0.113.103:

sudo ufw allow from 203.0.113.103 to any port 873

Чтобы разрешить доступ всей подсети 203.0.113.0/24 к вашему серверу по протоколу rsync, выполните:

sudo ufw allow from 203.0.113.0/24 to any port 873

Разрешить Nginx HTTP/HTTPS

После установки веб-сервера Nginx, он настраивает на сервере несколько различных профилей UFW. После установки и включения Nginx в качестве службы выполните следующую команду, чтобы определить, какие профили доступны:

sudo ufw app list | grep Nginx
Output  Nginx Full
  Nginx HTTP
  Nginx HTTPS

Чтобы включить трафик HTTP и HTTPS, выберите Nginx Full. В противном случае выберите либо Nginx HTTP – это разрешит только HTTP, либо Nginx HTTPS – это разрешит только HTTPS.

Следующая команда разрешит трафик HTTP и HTTPS на сервере (порты 80и 443):

sudo ufw allow "Nginx Full"

Разрешить Apache HTTP/HTTPS

После установки веб-сервера Apache он настраивает на сервере несколько различных профилей UFW. После установки и включения Apache в качестве службы выполните следующую команду, чтобы определить, какие профили доступны:

sudo ufw app list | grep Apache
Output  Apache
  Apache Full
  Apache Secure

Чтобы включить трафик HTTP и HTTPS, выберите Apache Full. В противном случае выберите Apache – это разрешит HTTP подключения или Apache Secure для включения трафика HTTPS.

Следующая команда разрешит трафик HTTP и HTTPS на сервере (порты 80 и 443):

sudo ufw allow "Apache Full"

Разрешить весь входящий HTTP (порт 80)

Веб-серверы, такие как Apache и Nginx, обычно прослушивают HTTP-запросы на порту 80. Если ваша политика по умолчанию для входящего трафика настроена на удаление или запрет, вам необходимо создать правило UFW, чтобы разрешить внешний доступ к порту 80. В качестве параметра этой команды вы можете использовать номер порта или имя службы .

Чтобы разрешить все входящие HTTP соединения на порт 80, выполните:

sudo ufw allow http

Альтернативный синтаксис — указать номер порта службы HTTP:

sudo ufw allow 80

Разрешить все входящие HTTPS соединения (порт 443)

HTTPS обычно работает на порту 443. Если ваша политика по умолчанию для входящего трафика настроена на удаление или запрет, вам необходимо создать правило UFW, чтобы разрешить внешний доступ к порту 443. В качестве параметра этой команды вы можете использовать номер порта или имя службы.

Чтобы разрешить все входящие на 443 порт соединения, выполните:

sudo ufw allow https

Альтернативный синтаксис — указать номер порта службы HTTPS:

sudo ufw allow 443

Разрешить все входящие HTTP и HTTPS соединения

Если вы хотите разрешить как HTTP трафик, так и HTTPS, вы можете создать одно правило, разрешающее оба порта. Такое использование требует, чтобы вы также определили протокол с помощью параметра proto, которому в данном случае должно быть присвоено значение tcp.

Чтобы разрешить все входящие соединения HTTP и HTTPS (порты 80 и 443), выполните:

sudo ufw allow proto tcp from any to any port 80,443

Разрешить подключение MySQL с определенного IP-адреса или подсети

MySQL прослушивает клиентские соединения на порту 3306. Если ваш сервер базы данных MySQL используется клиентом на удаленном сервере, вам необходимо создать правило UFW, чтобы разрешить этот доступ.

Чтобы разрешить входящие соединения MySQL с определенного IP-адреса или подсети, используйте параметр from, чтобы указать исходный IP-адрес, и параметр port, чтобы установить порт назначения 3306.

Следующая команда позволит IP-адресу 203.0.113.103 подключиться к порту MySQL сервера:

sudo ufw allow from 203.0.113.103 to any port 3306

Чтобы дать возможность подключаться к вашему серверу MySQL всей подсети 203.0.113.0/24, запустите:

sudo ufw allow from 203.0.113.0/24 to any port 3306

Разрешить подключение PostgreSQL с определенного IP-адреса или подсети

PostgreSQL прослушивает клиентские соединения на порту 5432. Если ваш сервер базы данных PostgreSQL используется клиентом на удаленном сервере, вам необходимо обязательно разрешить этот трафик.

Чтобы разрешить входящие соединения PostgreSQL с определенного IP-адреса или подсети, укажите источник с помощью параметра from и установите порт 5432:

sudo ufw allow from 203.0.113.103 to any port 5432

Чтобы разрешить подключаться к вашему серверу PostgreSQL подсети 203.0.113.0/24 запустите:

sudo ufw allow from 203.0.113.0/24 to any port 5432

Блокировать исходящую почту SMTP

Почтовые серверы, такие как Sendmail и Postfix, обычно используют порт 25 для SMTP-трафика. Если ваш сервер не должен отправлять исходящую почту, вы можете заблокировать этот тип трафика. Чтобы заблокировать исходящие SMTP-соединения, выполните:

sudo ufw deny out 25

Это настроит ваш брандмауэр на отбрасывание всего исходящего трафика на порт 25. Если вам нужно отклонить исходящие соединения на другой порту, вы можете повторить эту команду и заменить порт 25  нужным номером порта, который вы хотите заблокировать.

Добавить комментарий