Как настроить брандмауэр UFW на Ubuntu 16.04 LTS
Как насторить брандмауэром UFW на сервере Ubuntu Linux 16.04 LTS , чтобы ограничить трафик на мой личный веб-сервер, на котором размещены мои фотографии и блоги для членов моей семьи?
UFW является аббревиатурой простой брандмауэр. Он используется для управления брандмауэром Linux и призван обеспечить простой в использовании интерфейс для пользователя. В этом уроке вы узнаете, как использовать UFW с IPTables для управления брандмауэром на Ubuntu Linux 16.04 LTS сервере.
Установка UFW
UFW входит в состав Ubuntu, но не в Debian Linux. Введите следующую команду APT-GET установите UFW на сервере Debian Linux:
$ sudo apt-get update $ sudo apt-get install ufw
Примеры результата:
Как просмотреть статус UFW?
По умолчанию UFW в неактивном состоянии т.е. нет правил брандмауэра не настроен и весь трафик разрешен. Чтобы увидеть статус, введите следующую команду:
$ sudo ufw status
Примеры результата:
Статус: неактивный
Настройка политики по умолчанию
По умолчанию, когда UFW активируется он блокирует весь входящий трафик на межсетевой экран / сервер. Только исходящий трафик разрешен. Вы можете просмотреть правила по умолчанию UFW, введя следующую команду:
$ grep 'DEFAULT_' /etc/default/ufw
Пример результата:
DEFAULT_INPUT_POLICY="DROP" DEFAULT_OUTPUT_POLICY="ACCEPT" DEFAULT_FORWARD_POLICY="DROP" DEFAULT_APPLICATION_POLICY="SKIP"
Политика по умолчанию работает хорошо для серверов и ноутбуков / рабочих станции, так как вам нужно только открыть ограниченное количество входящих портов. Это хорошая политика, она закрывает все порты на сервере / брандмауэра, и вам нужно только открыть порты один за другим. Вы можете выполнить следующие команды, чтобы установить политику, блокировать все входящие соединения и разрешить только исходящие соединения от сервера / межсетевого экрана:
$ sudo ufw default allow outgoing $ sudo ufw default deny incoming
Создание первого правила брандмауэра, чтобы разрешить подключение к SSH (TCP-порт 22)
Введите следующую команду, чтобы разрешить SSH-соединения с сервером:
$ sudo ufw allow ssh
ИЛИ
sudo ufw allow 22/tcp
Скажем, если вы работаете в SSH на порту 2020, введите следующую команду:
$ sudo ufw allow 2020/tcp
Следующие правила открывают доступ к TCP SSH порт 22 только на 10.8.0.1 (т.е. ваш сервер SSH слущает на IP 10.8.0.1 порт 22) из любого места:
$ ufw allow proto tcp from any to 10.86.115.66 port 22
Как добавить комментарий к правилу?
Используйте следующий синтаксис
$ sudo ufw rule comment 'my cool comment here'
Откройте порт 53 и напишите комментарий о правиле:
ufw allow 53 comment 'open tcp and udp port 53 for dns'
Другой пример:
ufw allow proto tcp from any to any port 80,443 comment 'my cool web app ports'
Включить брандмауэр на основе UFW
Теперь у вас есть политика по умолчанию и SSH порт разрешен. Это безопасно для того, чтобы включить брандмауэр, введите следующую команду:
$ sudo ufw enable
Примеры выходов:
Команда может нарушить существующие соединения SSH. Продолжайте операции (Y | N)? У Брандмауэр активен и включен при запуске системы
После включения, брандмауэр запускается и после перезагрузки.
Отключить брандмауэр на основе UFW
Если вам нужно остановить брандмауэр и отключить при запуске системы, введите следующую команду:
$ sudo ufw disable
Примеры вывода:
Брандмауэр остановлен и отключен при запуске системы
Как я могу проверить статус моих правил?
Используйте команду статус:
$ sudo ufw status $ sudo ufw status verbose
Примеры вывода:
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From -- ------ ---- 192.168.1.10 443/tcp ALLOW Anywhere 192.168.1.10 22/tcp ALLOW Anywhere
Добавление большего количества правил (открытие портов и разрешение IP-адреса)
Синтаксис выглядит следующим образом, чтобы открыть порт TCP 22 и 443:
$ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp
Откройте сервер UDP / 1194 (OpenVPN):
$ sudo ufw allow 1194/udp
Откройте порт 25 (smtpd / сервер электронной почты):
$ sudo ufw allow 25
Вы можете разрешить диапазоны портов, TCP и UDP 3000 до 5000:
$ sudo ufw allow 3000:5000/tcp $ sudo ufw allow 3000:5000/udp
Разрешить соединения с определенного IP-адреса 1.2.3.4, введите следующую команду:
$ sudo ufw allow from 1.2.3.4
Разрешить соединения с определенного IP-адреса 1.2.3.4, к нашему порту 22, введите следующую команду:
$ sudo ufw allow from 1.2.3.4 to any port 22 proto tcp
ИЛИ (Dest 222.222.222.222 порт 22)
$ sudo ufw allow from 1.2.3.4 to 222.222.222.222 port 22 proto tcp
Запрет доступа к порту (с IP и блока IP-адресов)
Синтаксис выглядит следующим образом, чтобы запретить доступ (т.е. просто игнорируя доступ к порту 443) к порту TCP — порт 443:
$ sudo ufw deny 443/tcp
Запретить все соединения с IP-адреса 1.2.3.4, введите следующую команду:
$ sudo ufw deny from 1.2.3.4
Запретить все соединения подсети 123.45.67.89/24, введите следующую команду:
$ sudo ufw deny from 123.45.67.89/24
Запретить доступ с 1.2.3.4 на порт 22:
$ sudo ufw deny from 1.2.3.4 to any port 22 proto tcp
Отклонять доступ к порту (сообщать пользователю, что он блокируются брандмауэром)
Синтаксис reject просто игнорирует трафик. Если вы хотите позволить пользователя узнать о том, когда трафик отклонен, а не просто игнорировать его, используйте синтаксис:
$ sudo ufw reject in smtp $ sudo ufw reject out smtp $ sudo sudo ufw reject 1194 comment 'No more vpn traffic' $ sudo ufw reject 23 comment 'Unencrypted port not allowed'
Если кто-то попытается подключиться к порту 23 они получат сообщение reject следующего содержания:
Telnet: Невозможно подключиться к удаленному узлу: Соединение отклонено
Удаление правил брандмауэра UFW
Теперь вы знаете, как добавить, игнорировать, и получить список правил брандмауэра. Настало время, удалить ненужные правила. Есть два варианта удаления правила. Первый синтаксис:
$ sudo ufw delete {rule-here}
В этом примере, удалить HTTPS (TCP-порт 443) трафика правило,
$ sudo ufw delete allow 443
Если вы больше не желаете, разрешать трафик smptd / электронной почты (порт 25), выполните:
$ sudo ufw delete allow 25
Второй вариант заключается в перечислении список всех текущих правил в пронумерованном виде списка:
$ sudo ufw status numbered
Примеры выходов:
Status: active To Action From -- ------ ---- [ 1] 10.8.0.1 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 123.45.67.0/24 [ 3] 22/tcp DENY IN 1.2.3.4 |
Чтобы удалить 2-е правило ( «UFW игнорировать от 123.45.67.89/24»), наберите команду:
Deleting: deny from 123.45.67.0/24 Proceed with operation (y|n)? y Rule deleted
Как сбросить брандмауэр?
Синтаксис выглядит следующим образом, что бы сбросить UFW правила к заводским установкам по умолчанию и в неактивный режим, выполните следующую команду:
$ sudo ufw reset
Примеры вывода:
Сброс всех правил, установленных по умолчанию. Это может нарушить существующие SSH соединения. Продолжайте операции (Y | N)? У Резервное копирование 'user6.rules' до '' /etc/ufw/user6.rules.20160801_121710 Резервное копирование 'after.rules' до '' /etc/ufw/after.rules.20160801_121710 Резервное копирование 'before.rules' до '' /etc/ufw/before.rules.20160801_121710 Резервное копирование 'after6.rules' до '' /etc/ufw/after6.rules.20160801_121710 Резервное копирование 'user.rules' до '' /etc/ufw/user.rules.20160801_121710 Резервное копирование 'before6.rules' до '' /etc/ufw/before6.rules.20160801_121710
Как перезагрузить брандмауэр?
Синтаксис выглядит следующим образом, перезагрузить брандмауэр:
$ sudo ufw reload
При редактировании файла конфигурации UFW ‘, вам необходимо запустить команду перезагрузки. Например, вы можете редактировать /etc/ufw/before.rules, введите следующую команду:
$ sudo nano /etc/ufw/before.rules
ИЛИ
$ sudo vi /etc/ufw/before.rules
Для того, чтобы разрешить весь трафик eth0 введите следующую команду:
# Разрешить все на eth0
-A ufw-before-input -i eth0 -j ACCEPT
-A ufw-before-output -o eth0 -j ACCEPT
Сохраните и закройте файл. Обновить firwall:
$ sudo ufw reload
Как просмотреть журналы брандмауэра?
По умолчанию все записи UFW хранятся в /var/log/ufw.log :
$ sudo more /var/log/ufw.log $ sudo tail -f /var/log/ufw.log
Примеры вывода:
1 августа 12:09:48 server2 ядро: [+15727,245115] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 62.210.181.123 DST = 75.xxx.yyy.zzz LEN = 40 TOS = 0x00 = 0x00 PREC TTL = 245 ID = 20343 DF PROTO = TCP SPT = 2328 ПТР = 80 ОКНО = 512 RES = 0x00 SYN URGP = 0 1 августа 12:09:58 server2 ядро: [+15737,485726] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 187.134.225.91 DST = 75.xxx.yyy.zzz LEN = 46 TOS = 0x00 = 0x00 PREC TTL = 54 ID = 0 DF PROTO = UDP SPT = 54704 DPT = 53413 LEN = 26 1 августа 12:09:58 server2 ядро: [+15737,486102] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 187.134.225.91 DST = 75.xxx.yyy.zzz LEN = 151 TOS = 0x00 = 0x00 PREC TTL = 54 ID = 0 DF PROTO = UDP SPT = 54704 DPT = 53413 LEN = 131
Вы можете искать по файлу журнала с помощью команды grep:
$ sudo grep something /var/log/ufw.log $ sudo grep '187.134.225.91' /var/log/ufw.log
Как получить UFW отчеты?
Отчет отображает список правил, так как они были добавлены в командной строке:
$ sudo ufw reports added
Примеры вывода:
Добавлены пользовательские правила (см 'UFW статус "для запуска брандмауэра): UFW разрешить 22 UFW отклонить 23
Необработанные отчет показывают полный межсетевой экран
$ sudo ufw reports raw $ sudo ufw reports raw | more
В отчете прослушивания будет отображать порты на системе в состоянии прослушивания для протокола TCP и открытом состоянии для УДП, наряду с адресом интерфейса и кто прослушивает порт. ‘*’ Используется вместо адреса интерфейса, когда исполняемый файл связан со всеми интерфейсами на этом порту. После этой информации список правил, которые могут повлиять на соединения на этом порту. Правила перечислены в порядке, которм оцениваются ядром, а первое соответствие приоритетнее. Обратите внимание, что по умолчанию нет в списке и tcp6 и udp6 показываются только, если IPV6 включено:
$ sudo ufw show listening $ sudo ufw reports listening | more
tcp: 22 10.86.115.66 (sshd) [ 1] allow 22 22 10.8.0.1 (sshd) [ 1] allow 22 443 75.xxx.yyy.zzz (openvpn) udp: 123 10.8.0.1 (ntpd) 123 75.xxx.yyy.zzz (ntpd) 123 10.86.115.66 (ntpd) 123 * (ntpd) udp6: 123 * (ntpd) |
Другие возможные отчеты:
$ sudo ufw show builtins $ sudo ufw show before-rules $ sudo ufw show user-rules $ sudo ufw show after-rules $ sudo ufw show logging-rules
Если не получилось настроить фаервол, обращайтесь к нам за помощью, раздел Контакты.
как посмотреть список правил при неактивном ufw, перед тем как делать его enable?