Настройка фаервола с помощью UFW на облачных серверах Ubuntu и Debian
Вступление
Надежно настроенный фаервол — одно из важнейших условий защиты облачного сервера. Раньше для настройки фаервола использовались сложные утилиты с огромным количеством встроенных функций, ознакомление с которыми занимает немало времени и усилий. Одна из наиболее популярных программ такого типа — IPTables. Правила фаервола нельзя придумать или составить наугад, их синтаксис не так прост. UFW — отличный альтернативный вариант, намного более простой в использовании.
Что такое UFW?
UFW, или Uncomplicated Firewall («незамысловатый фаервол») — это интерфейс IPTables. Основная цель этого удобного в использовании интерфейса — существенно упростить управление фаерволом. Он популярен среди пользователей Linux и даже установлен на многие дистрибутивы по умолчанию.
Установка UFW
Для начала нужно проверить, установлен ли UFW. На Ubuntu он поставляется по умолчанию, но если по каким-либо причинам он не был установлен, его можно установить при помощи команд aptitude или apt-get следующим образом:
sudo aptitude install ufw
sudo apt-get install ufw
Проверка состояния
Чтобы проверить состояние UFW, наберите:
Скорее всего, сейчас он отключен. Всякий раз, когда UFW активен, он выдает список текущих правил, который выглядит примерно так:
Status: active
To Action From
— —— —-
22 ALLOW Anywhere
Настройка по умолчанию
Правила по умолчанию, разрешающие или запрещающие доступ, помогут быстро и надежно настроить любой фаервол. По умолчанию UFW отклоняет все входящие и разрешает все исходящие соединения. Это значит, что никто не сможет подключиться к серверу, но все его приложения могут устанавливать необходимые соединения. Чтобы установить настройки UFW по умолчанию, используйте команды:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Примечание: при необходимости установить более строгие настройки можно также запретить все исходящие соединения. Это достаточно спорный момент, но это может защитить облачный сервер от различного рода удаленных подключений оболочки. Это может усложнить управление фаерволом, поскольку придется также установить правила для исходящих соединений. Чтобы установить данные настройки по умолчанию, используйте:
sudo ufw default deny outgoing
Разрешение соединения
Синтаксис достаточно прост. Правила фаервола редактируются с помощью командной строки в терминале. Если активировать фаервол сейчас, он будет отклонять все входящие соединения. При подключении к облачному серверу через SSH могут возникнуть некоторые проблемы, так как данное соединение будет заблокировано. Чтоб не допустить этого, нужно разрешить SSH-соединения, это делается так:
sudo ufw allow ssh
Как можно видеть, синтаксис для разрешения соединений достаточно прост. UFW идет с некоторыми значениями по умолчанию для общего применения. Приведенная выше команда — всего лишь один из примеров. По сути это краткое обозначение команды:
sudo ufw allow 22/tcp
Данная команда позволяет устанавливать соединение с портом 22 при помощи протокола TCP. К примеру, если сервер запущен через порт 2222, то данное соединение разрешает следующая команда:
sudo ufw allow 2222/tcp
Другие соединения
Также нужно определить и разрешить другие важные соединения. Если веб-сервер защищен с помощью доступа FTP, понадобятся следующие команды:
sudo ufw allow www or sudo ufw allow 80/tcp
sudo ufw allow ftp or sudo ufw allow 21/tcp
Чтобы убедиться, что все работает должным образом, нужно протестировать сервер. Кроме того, нужно убедиться, что SSH-соединение разрешено.
Диапазоны портов
С помощью UFW можно также указать диапазоны портов. К примеру, чтобы разрешить подключение к портам с номером от 1000 до 2000, используйте команду:
sudo ufw allow 1000:2000/tcp
Чтобы вместо TCP использовать протокол UDP, наберите:
sudo ufw allow 1000:2000/udp
IP-адреса
Также понадобится указать IP-адреса. К примеру, если нужно разрешить подключение определенному адресу (допустим, домашнему или рабочему адресу), нужно использовать команду:
sudo ufw allow from 192.168.255.255
Ограничение подключений
По умолчанию все входящие подключения блокируются. Благодаря этому фаерволом легче управлять, поскольку все, что нужно сделать — это выборочно разрешить определенные порты и IP-адреса. Тем не менее, при желании открыть все порты сервера (что делать не рекомендуется), можно сначала разрешить все соединения, а потом заблокировать подключение к определенным портам, заменив в вышеприведенных командах «allow» на «deny». Например, команда:
sudo ufw allow 80/tcp
разрешает доступ к порту 80, а команда:
sudo ufw deny 80/tcp
запрещает доступ к нему.
Удаление правил
Для удаления правил существует 2 операции. Наиболее простая из них представлена следующим синтаксисом:
sudo ufw delete allow ssh
Как видите, нужно просто использовать команду «delete», а после ввести правила, которые нужно удалить. К примеру:
sudo ufw delete allow 80/tcp
sudo ufw delete allow 1000:2000/tcp
Но сложные и длинные правила удалять таким образом неудобно. Для этого существует альтернативная операция, состоящая из двух действий. Введите:
sudo ufw status numbered
что выведет пронумерованный список всех текущих правил UFW. Затем используйте команду:
sudo ufw delete [номер]
где «номер» — порядковый номер правила, которое нужно удалить.
Активация UFW
Настроив UFW согласно требованиям, его можно активировать при помощи команды (при подключении по SSH убедитесь, что такое соединение (обычно через порт 22) разрешено правилами фаервола):
Если все работает должным образом, снова появится командная строка. Проверьте состояние UFW:
sudo ufw status verbose
для более подробного вывода.
Чтобы деактивировать UFW, наберите:
Сброс настроек
Чтобы сбросить установленные правила и вернуть настройки по умолчанию, наберите:
Итоги
Теперь облачный сервер надежно защищен, поскольку доступ к нему разрешен только определенной группе портов или IP-адресов.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Настройка брандмауэра UFW на сервере Ubuntu 16.04
UFW (Uncomplicated Firewall) – это интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Инструмент iptables надёжный и гибкий, но новичку будет непросто настроить его самостоятельно.
Данное руководство поможет настроить брандмауэр с помощью UFW в Ubuntu 16.04
Требования
- Сервер Ubuntu 16.04 (инструкции по настройке – здесь).
- Пользователь с доступом к sudo.
В Ubuntu инструмент UFW установлен по умолчанию. Если в вашей системе он по какой-либо причине не установлен, запустите команду:
sudo apt-get install ufw
1: Использование IPv6 (опционально)
Данное руководство предназначено для IPv4, но оно подойдёт и для IPv6.
Если на вашем сервере Ubuntu включен протокол IPv6, убедитесь, что UFW поддерживает IPv6. Откройте конфигурации UFW:
sudo nano /etc/default/ufw
Убедитесь, что в настройках есть строка:
Сохраните и закройте файл (Ctrl-X, Y, Enter).
После включения UFW будет поддерживать правила для IPv4 и IPv6.
Прежде чем приступить к работе с брандмауэром, нужно убедиться, что он поддерживает соединения SSH. Ознакомьтесь с политикой UFW по умолчанию.
2: Политика по умолчанию
Начиная настройку брандмауэра, вы должны продумать и определить политику по умолчанию. Эти правила управляют обработкой трафика, который не отвечает другим правилам. По умолчанию UFW сбрасывает все входящие и разрешает все исходящие соединения. Это значит, что другие пользователи не смогут получить доступ к вашему облачному серверу, но все установленные на сервере приложения могут взаимодействовать с внешними приложениями.
Чтобы вернуться к исходным правилам брандмауэра, введите команды:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Если вы создали пользовательский набор правил, эти команды сбросят его и восстановят исходные правила. Теперь брандмауэр будет сбрасывать все входящие и разрешать исходящие соединения.
Стандартные правила брандмауэра подходят для персональных компьютеров; серверам обычно необходимо принимать входящий трафик.
3: Настройка соединений SSH
Если включить UFW сейчас, он заблокирует все входящие соединения. Потому нужно создать правила, которые разрешат входящий трафик заведомо безопасных сервисов (например, SSH и HTTP). Обязательно нужно разрешить трафик SSH на облачном сервере, так как этот протокол позволяет вам подключаться к серверу.
Чтобы разблокировать соединения SSH, введите:
sudo ufw allow ssh
Это правило разрешит входящие соединения порта 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH). Все эти сервисы перечислены в файле /etc/services.
Вместо названия сервиса в правиле можно указать порт. Например:
Если вы используете нестандартный порт SSH, укажите его в команде. К примеру, если SSH прослушивает порт 2222, нужно ввести:
sudo ufw allow 2222
4: Включение UFW
Чтобы включить UFW, введите:
Вы получите предупреждение:
command may disrupt existing ssh connections
Это значит, что команда может сбросить все текущие ssh-соединения. Поскольку только что вы разблокировали трафик ssh, этого не произойдёт. Можно нажать y и продолжить.
Теперь брандмауэр включен. Чтобы просмотреть текущий набор правил, введите:
sudo ufw status verbose
5: Разрешение соединений
Теперь разблокируйте другие соединения, которые нужны для работы сервера. Список необходимых сервисов индивидуален для каждого сервера.
Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.
Незашифрованные соединения HTTP можно разблокировать с помощью команд:
sudo ufw allow http
sudo ufw allow 80
Зашифрованные соединения HTTPS можно разрешить при помощи команд:
sudo ufw allow https
sudo ufw allow 443
Соединения FTP используются для незашифрованного обмена файлами; этот метод передачи данных небезопасен, потому рекомендуется использовать зашифрованные соединения. Чтобы разблокировать FTP, введите:
sudo ufw allow ftp
sudo ufw allow 21/tcp
Настройка диапазонов портов
UFW позволяет разблокировать диапазон портов. Некоторые приложения используют несколько портов.
К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Указывая диапазон портов, вы должны задать протокол (tcp или udp). Если вы не укажете протокол, UFW будет использовать оба протокола.
Настройка IP-адресов
Также UFW может разрешить трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 15.15.15.51, нужно ввести:
sudo ufw allow from 15.15.15.51
Вы можете ограничить доступ для IP конкретным портом. Например, чтобы разрешить IP-адресу SSH-доступ, используйте:
sudo ufw allow from 15.15.15.51 to any port 22
Настройка подсетей
Чтобы разблокировать подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 15.15.15.1-15.15.15.254, нужно ввести:
sudo ufw allow from 15.15.15.0/24
Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:
sudo ufw allow from 15.15.15.0/24 to any port 22
Настройка сетевых интерфейсов
Правила брандмауэра могут быть предназначены для конкретного интерфейса. Для этого нужно ввести allow in on, а затем указать имя интерфейса.
Прежде чем продолжить, просмотрите свои сетевые интерфейсы.
ip addr
.
2: eth0 :
mtu 1500 qdisc pfifo_fast state
.
3: eth1 :
mtu 1500 qdisc noop state DOWN group default
.
Имена интерфейсов выделены красным (обычно они называются eth0, eth1).
Чтобы разблокировать трафик HTTP для eth0, введите:
sudo ufw allow in on eth0 to any port 80
Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:
sudo ufw allow in on eth1 to any port 3306
6: Блокирование соединений
По умолчанию UFW блокирует все входящие соединения. В целом это очень безопасная политика.
Если вы хотите изменить политику брандмауэра по умолчанию на allow, вам нужно уметь блокировать трафик определённого вредоносного IP-адреса или подсети.
Правила, блокирующие трафик, пишутся точно так же, но вместо allow используется deny.
К примеру, чтобы заблокировать HTTP, нужно ввести:
sudo ufw deny http
Чтобы заблокировать все соединения адреса 15.15.15.51, введите команду:
sudo ufw deny from 15.15.15.51
7: Удаление правил брандмауэра
Существует два способа удалить правило: указать номер правила или само правило.
Удаление правила по его номеру
Для начала просмотрите список существующих правил. Для этого запросите состояние брандмауэра с опцией numbered.
sudo ufw status numbered
Status: active
To Action From
— —— —-
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
К примеру, чтобы удалить правило 2 (открывающее трафик HTTP), нужно запустить команду:
Программа запросит подтверждения.
Примечание: Если сервер поддерживает IPv6, нужно удалить соответствующее правило и для этого протокола.
Удаление правила
Также можно указать в команде само правило, которое нужно удалить. К примеру, чтобы удалить allow http, нужно запустить:
sudo ufw delete allow http
sudo ufw delete allow 80
Этот метод работает и для IPv4, и для IPv6.
8: Проверка состояния и правил UFW
Чтобы проверить состояние UFW, введите:
sudo ufw status verbose
По умолчанию UFW отключен:
Если брандмауэр включен, на экране появится его состояние и список правил. К примеру, если брандмауэр поддерживает соединения SSH (порт 22), ввод будет выглядеть так:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
— —— —-
22/tcp ALLOW IN Anywhere
9: Отключение или сброс правил UFW (опционально)
Если вы хотите отключить брандмауэр UFW, введите:
Все правила будут дезактивированы.
Если вы хотите сбросить текущий набор правил UFW, запустите:
Эта команда сбросит все текущие правила брандмауэра. Имейте в виду: при этом политика по умолчанию не будет восстановлена.
После этого вы можете добавить новые правила.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.