Как автоматически настроить межсетевой экран для частных сетей DigitalOcean с помощью Droplan

Вступление

Функция частной сети DigitalOcean дает вашим каплям сетевой интерфейс, который https://www.digitalocean.com/community/tutorials/digitalocean-private-networking-faq доступен только для других капель в той же команде или учетной записи и находится в той же сети. Дата центр].

Утилита + droplan + может помочь защитить частные сетевые интерфейсы в Droplet, добавив правила брандмауэра * iptables *, которые разрешают трафик только от других ваших Droplet в том же центре данных. Установив и запустив утилиту на каждой Droplet, вы можете гарантировать, что ваши системы будут принимать только локальный трафик друг от друга.

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

Предпосылки

В этом руководстве предполагается, что у вас есть два или более Linux-дроплета в одном регионе, каждый из которых настроен для пользователя без полномочий root с правами + sudo для административных задач. В частности, он содержит инструкции для последних выпусков Debian, Ubuntu и CentOS. В системах CentOS он отключит + firewalld +, поэтому вы должны знать, что он может переопределить любую существующую конфигурацию брандмауэра.

Получение токена личного доступа только для чтения

Утилита + droplan + Чтобы запросить у API список ваших дроплетов, команде + droplan + необходим доступ к * личному токену доступа * с областью чтения. Вы можете получить токен, открыв Панель управления DigitalOcean, нажав кнопку * API * в верхнем меню и нажав кнопку * Создать новый токен *. Введите описательное имя для нового токена в поле * Token Name *, например «droplan readonly», и снимите флажок * Write (Необязательно) *:

изображение: https: //assets.digitalocean.com/articles/droplan/enter_name_small.png [Создать новый токен]

Нажмите * Generate Token * и скопируйте полученный токен на локальный компьютер:

изображение: https: //assets.digitalocean.com/articles/droplan/display_token_small.png [токены личного доступа]

Дополнительные сведения об этом процессе и об основах использования API см. По адресу Как использовать API DigitalOcean v2 .

Установка Дроплана

Установка Debian и Ubuntu Предварительные требования

Если вы используете Debian или дистрибутив, производный от Debian, например Ubuntu, установите пакет + unzip +, используя + apt-get +:

sudo apt-get install unzip iptables-persistent

Нам понадобится + iptables-persistent + в момент, когда мы настроим постоянные правила брандмауэра. Программа установки спросит вас, хотите ли вы сохранить текущие правила брандмауэра во время установки. Это не должно причинить вреда, если вы скажете да.

Установка обязательных компонентов CentOS

Если вы используете CentOS 7, установите пакеты + unzip и` + iptables-services` с помощью + yum:

sudo yum install unzip iptables-services

Нам понадобятся + iptables-services в тот момент, когда мы настроим постоянные правила брандмауэра.

Извлечение и извлечение архива

Посетите страницу releases в проекте + droplan + GitHub и найдите URL-адрес последней версии, поддерживающей вашу архитектуру. Скопируйте URL, войдите в одну из ваших капель и найдите файл с помощью + wget + или + curl +:

wget https://github.com/tam7t/droplan/releases/download//

Теперь используйте команду + unzip +, чтобы извлечь двоичный файл + droplan + из архива релиза:

unzip

Создайте каталог в + / opt + для + droplan + и переместите туда бинарный файл:

sudo mkdir /opt/droplan
sudo mv ./droplan /opt/droplan/

Каталог + / opt + - это стандартное расположение для программного обеспечения, установленного из других источников, а не из официальных репозиториев дистрибутива.

Создание правил Iptables

Имея двоичный файл + droplan +, вы можете использовать его для создания правил. Запустите команду под + sudo +, установив переменную окружения + DO_KEY + в свой токен:

sudo DO_KEY= /opt/droplan/droplan

Теперь проверьте ваши правила iptables:

sudo iptables -L

Предполагая, что у вас есть две другие капли в том же регионе, вы должны увидеть что-то вроде следующего:

OutputChain INPUT (policy ACCEPT)
target     prot opt source               destination
droplan-peers  all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain droplan-peers (1 references)
target     prot opt source               destination
ACCEPT     all  --         anywhere
ACCEPT     all  --          anywhere

Чтобы подтвердить, что эти правила применяются только к * eth1 *, вы можете добавить опцию + -v + для более подробного вывода, которое будет включать интерфейсы:

sudo iptables -L -v

Постоянные правила Iptables

На данный момент все остальные капли в том же регионе могут подключаться к текущей системе, в то время как трафик от систем, которые вы не контролируете, заблокирован. Однако если система перезагрузится, правила iptables исчезнут. Также вероятно, что вы создадите новые капли (или удалите существующие) в какой-то момент в будущем. Чтобы справиться с этими проблемами, мы позаботимся о том, чтобы правила сохранялись при перезапуске, и запланируем запуск + droplan + на регулярной основе и внесем необходимые изменения в брандмауэр.

Постоянные правила в Debian или Ubuntu

Правила брандмауэра хранятся в + / etc / iptables / rules.v4 ++ / etc / iptables / rules.v6 + для правил ipv6). Вы можете создать новую версию этого файла, используя команду + iptables-save +:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Постоянные правила на CentOS 7

По умолчанию CentOS 7 использует службу firewalld вместо iptables. Поскольку мы уже установили пакет + iptables-services выше, мы можем использовать` + systemctl`, чтобы остановить этот сервис и замаскировать его, гарантируя, что он не будет перезапущен:

sudo systemctl stop firewalld
sudo systemctl mask firewalld

Теперь включите сервис + iptables +:

systemctl enable iptables

С сервисом + iptables + сохраните текущие правила брандмауэра:

sudo service iptables save

Проверка правила сохранения

Вы можете перезагрузить систему, повторно подключиться и проверить, что правила сохраняются. Сначала перезагрузите компьютер:

sudo reboot

Теперь снова подключитесь к вашей капле (это займет несколько секунд) и проверьте правила:

sudo iptables -L

Планирование задания Cron для обновления правил Iptables

В качестве последнего шага мы будем периодически запускать + droplan +, чтобы он отслеживал изменения в вашей коллекции капель.

Начните с создания нового скрипта с именем + / opt / droplan / refresh.sh +, используя + nano + (или по вашему выбору):

sudo nano /opt/droplan/refresh.sh

Вставьте следующее, раскомментировав соответствующую строку для вашего дистрибутива, удалив ведущий ++:

/opt/droplan/refresh.sh

#!/usr/bin/env bash

/opt/droplan/droplan

# Uncomment for Centos:


# Uncomment for Debian or Ubuntu:

Выйдите и сохраните файл, затем отметьте его как исполняемый:

sudo chmod +x /opt/droplan/refresh.sh

Затем создайте новый файл в + / etc / cron.d / droplan +:

sudo nano /etc/cron.d/droplan

Добавьте следующую строку в файл, чтобы запускать скрипт как * root * каждые 5 минут:

кронтаб

*/5 * * * * root PATH=/sbin:/usr/bin:/bin DO_KEY= /opt/droplan/refresh.sh > /var/log/droplan.log 2>&1

Это будет запускать скрипт + refresh.sh + один раз каждые 5 минут, как указано в первом поле + * / 5 +, и записывать его самый последний вывод в + / var / log / droplan.log +.

Выйдите и сохраните файл. Теперь вы можете использовать команду + watch +, которая отображает вывод другой команды каждые несколько секунд, чтобы убедиться, что скрипт выполняется успешно:

sudo watch cat /var/log/droplan.log

После запуска сценария вы должны увидеть что-то вроде следующего:

Sample CentOS OutputEvery 2.0s: cat droplan.log                      Fri Mar 25 01:14:45 2016

2016/03/25 01:14:02 Added 2 peers to droplan-peers
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

В системах, производных от Debian, + systemctl iptables save + не будет отображать никакого вывода.

Нажмите * Ctrl-C *, чтобы выйти из + watch.

Заключение и последующие шаги

Теперь, когда вы настроили брандмауэр на одной капле, вы захотите повторить этот процесс с остальной частью вашей инфраструктуры. Для более чем нескольких капель было бы проще автоматизировать этот процесс. Если вы используете Terraform от Hashicorp для систем инициализации, вы можете найти шаблоны example в GitHub Droplan. проект. Широкий обзор задач автоматизации, подобных этой, см. В An Введение в управление конфигурациями.

Для получения более подробной информации о брандмауэрах см. Https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work[What Firewall и как он работает?]

Related