Как настроить брандмауэр 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:
1 2 |
$ sudo apt-get update $ sudo apt-get install ufw |
Примеры результата:
Как просмотреть статус UFW?
По умолчанию UFW в неактивном состоянии т.е. нет правил брандмауэра не настроен и весь трафик разрешен. Чтобы увидеть статус, введите следующую команду:
1 |
$ sudo ufw status |
Примеры результата:
1 |
<span class="notranslate"> Статус: неактивный</span> |
Настройка политики по умолчанию
По умолчанию, когда UFW активируется он блокирует весь входящий трафик на межсетевой экран / сервер. Только исходящий трафик разрешен. Вы можете просмотреть правила по умолчанию UFW, введя следующую команду:
1 |
$ grep 'DEFAULT_' /etc/default/ufw |
Пример результата:
1 2 3 4 |
DEFAULT_INPUT_POLICY="DROP" DEFAULT_OUTPUT_POLICY="ACCEPT" DEFAULT_FORWARD_POLICY="DROP" DEFAULT_APPLICATION_POLICY="SKIP" |
Политика по умолчанию работает хорошо для серверов и ноутбуков / рабочих станции, так как вам нужно только открыть ограниченное количество входящих портов. Это хорошая политика, она закрывает все порты на сервере / брандмауэра, и вам нужно только открыть порты один за другим. Вы можете выполнить следующие команды, чтобы установить политику, блокировать все входящие соединения и разрешить только исходящие соединения от сервера / межсетевого экрана:
1 2 |
$ sudo ufw default allow outgoing $ sudo ufw default deny incoming |
Создание первого правила брандмауэра, чтобы разрешить подключение к SSH (TCP-порт 22)
Введите следующую команду, чтобы разрешить SSH-соединения с сервером:
1 |
$ sudo ufw allow ssh |
ИЛИ
1 |
sudo ufw allow 22/tcp |
Скажем, если вы работаете в SSH на порту 2020, введите следующую команду:
1 |
$ sudo ufw allow 2020/tcp |
Следующие правила открывают доступ к TCP SSH порт 22 только на 10.8.0.1 (т.е. ваш сервер SSH слущает на IP 10.8.0.1 порт 22) из любого места:
1 |
$ ufw allow proto tcp from any to 10.86.115.66 port 22 |
Как добавить комментарий к правилу?
Используйте следующий синтаксис
1 |
$ sudo ufw rule comment 'my cool comment here' |
Откройте порт 53 и напишите комментарий о правиле:
1 |
ufw allow 53 comment 'open tcp and udp port 53 for dns' |
Другой пример:
1 |
ufw allow proto tcp from any to any port 80,443 comment 'my cool web app ports' |
Включить брандмауэр на основе UFW
Теперь у вас есть политика по умолчанию и SSH порт разрешен. Это безопасно для того, чтобы включить брандмауэр, введите следующую команду:
1 |
$ sudo ufw enable |
Примеры выходов:
1 2 |
<span class="notranslate"> <small><kbd>Команда может нарушить существующие соединения SSH.</kbd></small></span> <span class="notranslate"> <small><kbd>Продолжайте операции (Y | N)? <strong>У</strong></kbd></small></span> <small><kbd> </kbd></small> <span class="notranslate"> <small><kbd>Брандмауэр активен и включен при запуске системы</kbd></small></span> |
После включения, брандмауэр запускается и после перезагрузки.
Отключить брандмауэр на основе UFW
Если вам нужно остановить брандмауэр и отключить при запуске системы, введите следующую команду:
1 |
$ sudo ufw disable |
Примеры вывода:
1 |
<span class="notranslate"> <small><kbd>Брандмауэр остановлен и отключен при запуске системы</kbd></small></span> |
Как я могу проверить статус моих правил?
Используйте команду статус:
1 2 |
$ sudo ufw status $ sudo ufw status verbose |
Примеры вывода:
1 2 3 4 5 6 7 8 9 10 |
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:
1 2 |
$ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp |
Откройте сервер UDP / 1194 (OpenVPN):
1 |
$ sudo ufw allow 1194/udp |
Откройте порт 25 (smtpd / сервер электронной почты):
1 |
$ sudo ufw allow 25 |
Вы можете разрешить диапазоны портов, TCP и UDP 3000 до 5000:
1 2 |
$ sudo ufw allow 3000:5000/tcp $ sudo ufw allow 3000:5000/udp |
Разрешить соединения с определенного IP-адреса 1.2.3.4, введите следующую команду:
1 |
$ sudo ufw allow from 1.2.3.4 |
Разрешить соединения с определенного IP-адреса 1.2.3.4, к нашему порту 22, введите следующую команду:
1 |
$ sudo ufw allow from 1.2.3.4 to any port 22 proto tcp |
ИЛИ (Dest 222.222.222.222 порт 22)
1 |
$ sudo ufw allow from 1.2.3.4 to 222.222.222.222 port 22 proto tcp |
Запрет доступа к порту (с IP и блока IP-адресов)
Синтаксис выглядит следующим образом, чтобы запретить доступ (т.е. просто игнорируя доступ к порту 443) к порту TCP — порт 443:
1 |
$ sudo ufw deny 443/tcp |
Запретить все соединения с IP-адреса 1.2.3.4, введите следующую команду:
1 |
$ sudo ufw deny from 1.2.3.4 |
Запретить все соединения подсети 123.45.67.89/24, введите следующую команду:
1 |
$ sudo ufw deny from 123.45.67.89/24 |
Запретить доступ с 1.2.3.4 на порт 22:
1 |
$ sudo ufw deny from 1.2.3.4 to any port 22 proto tcp |
Отклонять доступ к порту (сообщать пользователю, что он блокируются брандмауэром)
Синтаксис reject просто игнорирует трафик. Если вы хотите позволить пользователя узнать о том, когда трафик отклонен, а не просто игнорировать его, используйте синтаксис:
1 2 3 4 |
$ 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 следующего содержания:
1 |
<span class="notranslate"> Telnet: Невозможно подключиться к удаленному узлу: Соединение отклонено</span> |
Удаление правил брандмауэра UFW
Теперь вы знаете, как добавить, игнорировать, и получить список правил брандмауэра. Настало время, удалить ненужные правила. Есть два варианта удаления правила. Первый синтаксис:
1 |
$ sudo ufw delete {rule-here} |
В этом примере, удалить HTTPS (TCP-порт 443) трафика правило,
1 |
$ sudo ufw delete allow 443 |
Если вы больше не желаете, разрешать трафик smptd / электронной почты (порт 25), выполните:
1 |
$ sudo ufw delete allow 25 |
Второй вариант заключается в перечислении список всех текущих правил в пронумерованном виде списка:
1 |
$ sudo ufw status numbered |
Примеры выходов:
|
Чтобы удалить 2-е правило ( «UFW игнорировать от 123.45.67.89/24»), наберите команду:
1 2 3 4 |
Deleting: deny from 123.45.67.0/24 Proceed with operation (y|n)? <strong>y</strong> Rule deleted |
Как сбросить брандмауэр?
Синтаксис выглядит следующим образом, что бы сбросить UFW правила к заводским установкам по умолчанию и в неактивный режим, выполните следующую команду:
1 |
$ sudo ufw reset |
Примеры вывода:
1 2 3 4 5 6 7 8 |
<span class="notranslate"> Сброс всех правил, установленных по умолчанию.</span> <span class="notranslate"> Это может нарушить существующие SSH</span> <span class="notranslate"> соединения.</span> <span class="notranslate"> Продолжайте операции (Y | N)? <strong>У</strong></span> <span class="notranslate"> Резервное копирование 'user6.rules' до '' /etc/ufw/user6.rules.20160801_121710</span> <span class="notranslate"> Резервное копирование 'after.rules' до '' /etc/ufw/after.rules.20160801_121710</span> <span class="notranslate"> Резервное копирование 'before.rules' до '' /etc/ufw/before.rules.20160801_121710</span> <span class="notranslate"> Резервное копирование 'after6.rules' до '' /etc/ufw/after6.rules.20160801_121710</span> <span class="notranslate"> Резервное копирование 'user.rules' до '' /etc/ufw/user.rules.20160801_121710</span> <span class="notranslate"> Резервное копирование 'before6.rules' до '' /etc/ufw/before6.rules.20160801_121710</span> |
Как перезагрузить брандмауэр?
Синтаксис выглядит следующим образом, перезагрузить брандмауэр:
1 |
$ sudo ufw reload |
При редактировании файла конфигурации UFW ‘, вам необходимо запустить команду перезагрузки. Например, вы можете редактировать /etc/ufw/before.rules, введите следующую команду:
1 |
$ sudo nano /etc/ufw/before.rules |
ИЛИ
1 |
$ sudo vi /etc/ufw/before.rules |
Для того, чтобы разрешить весь трафик eth0 введите следующую команду:
1 2 3 |
<span class="notranslate"> # Разрешить все на eth0 </span>-A ufw-before-input -i eth0 -j ACCEPT -A ufw-before-output -o eth0 -j ACCEPT |
Сохраните и закройте файл. Обновить firwall:
1 |
$ sudo ufw reload |
Как просмотреть журналы брандмауэра?
По умолчанию все записи UFW хранятся в /var/log/ufw.log :
1 2 |
$ sudo more /var/log/ufw.log $ sudo tail -f /var/log/ufw.log |
Примеры вывода:
1 2 3 |
<span class="notranslate"> <small>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</small></span> <small> </small> <span class="notranslate"> <small>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</small></span> <small> </small> <span class="notranslate"> <small>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</small></span> |
Вы можете искать по файлу журнала с помощью команды grep:
1 2 |
$ sudo grep something /var/log/ufw.log $ sudo grep '187.134.225.91' /var/log/ufw.log |
Как получить UFW отчеты?
Отчет отображает список правил, так как они были добавлены в командной строке:
1 |
$ sudo ufw reports added |
Примеры вывода:
1 2 3 |
<span class="notranslate"> Добавлены пользовательские правила (см 'UFW статус "для запуска брандмауэра):</span> <span class="notranslate"> UFW разрешить 22</span> <span class="notranslate"> UFW отклонить 23</span> |
Необработанные отчет показывают полный межсетевой экран
1 2 |
$ sudo ufw reports raw $ sudo ufw reports raw | more |
В отчете прослушивания будет отображать порты на системе в состоянии прослушивания для протокола TCP и открытом состоянии для УДП, наряду с адресом интерфейса и кто прослушивает порт. ‘*’ Используется вместо адреса интерфейса, когда исполняемый файл связан со всеми интерфейсами на этом порту. После этой информации список правил, которые могут повлиять на соединения на этом порту. Правила перечислены в порядке, которм оцениваются ядром, а первое соответствие приоритетнее. Обратите внимание, что по умолчанию нет в списке и tcp6 и udp6 показываются только, если IPV6 включено:
1 2 |
$ sudo ufw show listening $ sudo ufw reports listening | more |
|
Другие возможные отчеты:
1 2 3 4 5 |
$ 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?