Поделиться через


Устранение неполадок с подключением на виртуальных машинах Ubuntu в Azure с помощью UFW

Область применения: ✔️ виртуальные машины Linux

В этой статье описывается, как использовать неусложненный брандмауэр (UFW) для диагностики и устранения проблем с подключением на виртуальной машине Ubuntu Azure.

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

Предварительные требования

  • Привилегии корня.
  • Доступ к последовательной консоли.
  • Установленные net-tools, iproute2и netcat-openbsd пакеты.

Как проверить, закрыт ли порт на виртуальной машине Ubuntu с помощью UFW

Примечание.

По умолчанию UFW не включен на виртуальных машинах Ubuntu, созданных с помощью образов из Azure Marketplace. Включение UFW на виртуальной машине закроет все порты, включая порт 22 для служб SSH.

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

    sudo ufw status
    

    В выходных данных:

    • Status: active указывает, что UFW запущен.

    • Status: inactive указывает, что UFW не активен, и порт не будет заблокирован UFW.

  2. Список текущих правил UFW:

    sudo ufw status numbered
    

    Эта команда содержит все правила. В нем показано, разрешены ли или запрещены определенные порты. Если порт не отображается в списке, он по умолчанию запрещен.

  3. Проверьте правила UFW, чтобы определить, запрещен ли определенный порт. Например, чтобы проверить, запрещен ли порт SSH 22, выполните следующую команду:

    sudo ufw status | grep '22'
    
    • Если выходные данные отображаются 22/tcp ALLOW, порт разрешен через брандмауэр.
    • Если выходные данные не отображаются или правило не отображается 22/tcp DENY, порт запрещен.
  4. netstat Используйте команду или ss команду, чтобы проверить, используется ли порт.

    sudo netstat -tuln | grep ':22'
    
    tcp6   0   0 :::22     :::*   LISTEN   
    
    • В примере выходных данных показано, что служба использует или прослушивает порт 22. Однако это не подтверждает, что порт разрешен или разблокирован брандмауэром. Даже если порт заблокирован брандмауэром, он по-прежнему может отображаться как ПРОСЛУШИВАТЕЛЬ в выходных данных.
    • Выходные данные не указывают на то, что порт не прослушивается какой-либо службой.
  5. Тестирование подключения к порту с помощью nc:

    sudo nc -zv <server-ip> 22
    
    • Если подключение завершается ошибкой, но порт прослушивается, это подтверждает, что порт запрещен брандмауэром.
    • Успешное подключение означает, что порт разрешен.

Если проверяющий порт не отображается в правилах UFW или если он помечен как DENY, UFW блокирует порт. Кроме того, если вы не можете подключиться к порту с помощью внешних средств, порт блокируется.

Работа с UFW

Сценарий 1. Разрешить подключение SSH для всех IP-адресов

Выполните следующую команду:

sudo ufw allow ssh
Rule added

Проверьте правило:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  

Сценарий 2. Разрешить SSH (порт 22) для определенного IP-адреса

Выполните следующую команду:

sudo ufw allow from 10.0.10.10 to any port 22 proto tcp

Проверьте правило:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             

Сценарий 3. Разрешить подсети подключаться к порту 22

Выполните следующую команду:

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

Проверьте правило:

sudo ufw status
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             
22/tcp                     ALLOW       10.1.0.0/24 

Сценарий 4. Запретить SSH для всех IP-адресов

Выполните следующие команды:

sudo ufw deny ssh
sudo ufw status
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             
22/tcp                     ALLOW       10.1.0.0/24          
22/tcp                     DENY        Anywhere                     

Внимание

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

Удаление правила

Если правила не заданы в правильном порядке, можно удалить правило, а затем восстановить его, чтобы изменить порядок.

Чтобы удалить правило, можно использовать его число из выходных ufw status numbered данных. Например, чтобы удалить номер правила 3:

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW       10.0.10.10             
[ 2] 22                         ALLOW       10.1.0.0/24 
[ 3] 22/tcp                     DENY IN     Anywhere  
sudo ufw delete 3

Дополнительные сведения см. в статье Ubuntu — сообщество UFW

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.