Два интерфейса, оба требуют, чтобы брандмауэр был включен перед запуском

Допустим, у меня есть пара серверов в DigitalOcean, и я хочу, чтобы они общались друг с другом.

DigitalOcean предлагает соединение WAN и соединение LAN. Проблема в том, что оба они небезопасны. WAN - это Интернет, а LAN используется всеми, у кого есть компьютер (VPS) в DigitalOcean.

Итак, я хочу заблокировать все, кроме нескольких портов, таких как 53, 80, 443, в глобальной сети. Это стандартная процедура.

Тогда, возможно, у меня есть MySQL на другом компьютере, поэтому я хочу открыть порт 3306 для IP-адреса 10.1.1.1 (примеры IP-адресов, на самом деле не действующие в DigitalOcean.)

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

auto eth0 eth1 

iface eth0 inet static
        address 8.8.8.2  # some Internet address
        netmask 255.255.255.255
        gateway 8.8.8.1  # some Internet address
        dns-nameservers 8.8.8.8 8.8.4.4
        pre-up /etc/network/firewall

iface eth1 inet static
        address 10.1.1.1
        netmask 255.0.0.0
        pre-up /etc/network/firewall

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

Это способ сделать это? Или есть лучший способ иметь эквивалент pre-up , который будет глобальным для всех интерфейсов?

Примечание: ОС - это Ubuntu 16.04.1, последняя доступная версия.

-1
10.10.2016, 23:15
1 ответ

Я действительно нашел решение, так как я использую Ubuntu 16.04 и у нас есть systemd, я просто создал скрипт snapinitfirewall.service и установил его на свой код межсетевого экрана.

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Snap! Websites firewall initialization
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/etc/network/firewall
#ExecStop=... -- why would you ever want to remove your firewall rules?

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

/ etc / network / firewall - это сценарий, который восстанавливает все правила сразу при загрузке.

Поскольку у меня есть другой служебный файл для этого одного пакета (то есть один пакет, предлагающий две службы), я должен включить следующую строку, чтобы убедиться, что инициализация включена и выполняется при перезагрузке:

systemctl -q enable snapinitfirewall

Это гораздо лучший подход, чем с помощью возможности pre-up , поскольку вы можете быть уверены, что она будет запущена до запуска сети.

Для тех, кого интересует больше, проект snapfirewall находится на github.

0
28.01.2020, 05:13

Теги

Похожие вопросы