Рубрики
Без рубрики

Automate AWS Security Group с CloudFlare IPS

Краткая демонстрация того, как создать группы безопасности AWS для CloudFlares, используя услугу Lambda. Tagged Security, AWS, Python.

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

Безопасность всегда должна рассматриваться как слоистый процесс, а Cloudflare играет важную роль в качестве первой линии защиты. Возможность блокировать вредоносные или подозрительные запросы до того, как он достигнет вашего сервера, является отличным активом. Очевидно, что это работает только в том случае, если CloudFlare расположен перед вашим сервером, и запросы вынуждены пройти через прокси CloudFlare.

Для любого плохого парня стоит его соли, относительно просто выяснить реальный IP -адрес сервера и обходить облачный флажок. Ваш сервер теперь более уязвим, а безопасность теперь зависит от ваших навыков сервера, современных программных и лучших практик кодирования.

Поэтому довольно важно остановить прямой доступ к вашим сайтам, разрешив только доступ к веб -сайту с IP -адресов CloudFlare. Этот пост Blob будет охватывать это в Amazon Web Services Окружающая среда:

  • Создание группы безопасности
  • Назначить группу безопасности соответствующим экземплярам EC2.
  • Создайте функцию Lambda для регулярного получения списка IP -адресов CloudFlare и обновить группу безопасности.

Если вы не используете AWS, теория все еще звучит и не потребует много настроек, чтобы достичь того же самого, хотя и Cron Service и Iptables.

Код Lambda использует Python 2.7 и использует Boto3 Библиотека для общения с AWS.

Код Lambda Python доступен в Репозиторий кода GitHub . Я относительно новичок в Python, поэтому не стесняйтесь вносить свой вклад и улучшаться.

Создать группу безопасности EC2

Сначала создайте группу безопасности и обратите внимание на идентификатор группы. Это можно сделать через веб -интерфейс AWS:

Или из командная строка :

AWS EC2 Create-Security-Group-Group-Name-Name CloudFlare-Access-Description “http (s) доступ к Cloudflare IPS”-VPC-ID VPC-ID-Goes-Here

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

Создать функцию лямбды

Поскольку эти IP -адреса могут измениться, нам нужен какой -то код для их обновления. Как и в среде AWS, мы можем легко сделать это из функции Lambda, которую мы можем регулярно запускать практически ни с чем.

Если вы не знакомы с AWS Lambda, его программным обеспечением в качестве сервисного объекта, где вы можете разместить какой -то код (C#, Java Python или Node), и вы платите только за время, которое запускается код. Не нужно поддерживать сервер, просто код, чистый славный код!

Итак, вот код репозиторий для одного Я сделал раньше Анкет

Требуемый код находится в файле cf-security-group-update.py . Для тех, кто не знаком def lambda_handler (событие, контекст): является основной функцией, которая вызывается, когда лямбда запускается. То, что происходит отсюда, должно быть самостоятельным от названий описательных функций.

Выберите Blueprint

В пользовательском интерфейсе AWS выберите новая функция и выберите Пустая функция из списка Blueprint.

Настройте триггеры

Затем установите триггер, нажав на пустой квадрат и выбрав События CloudWatch – расписание Анкет

Вы можете настроить свой требуемый Cron или определенную ставку отсюда. На данный момент выберите ставку (1 день), чтобы запустить это ежедневно.

Настройка функции

Теперь дайте Lambda имя, выберите Python из списка времени выполнения, а затем вставьте содержимое cf-security-group-update.py из Репозиторий кода GitHub в текстовой области.

В Переменные среды раздел, добавьте следующее:

key: SECURITY_GROUP_ID
value: add your security group id here
key: PORTS_LIST
value: 80,443

Добавить 80 или 80,443 В зависимости от того, хотите ли вы, чтобы HTTP и HTTPS были добавлены в группу безопасности.

Вам может потребоваться добавить роль в Lambda Function обработчик и роль раздел. Если это так, единственное необходимое правило:

"Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": [
                "*"
            ]
        }
    ]

Установить Тайм -аут Может быть, 5-8 секунд.

Держите остальные значения по умолчанию, продолжайте и просмотрите, после того, как Happy Finish, нажав Создать функцию Анкет

Тест

Нажмите на Тест Кнопка и принять значения по умолчанию, и Lambda, надеясь, будет надеяться, что работать. Вывод должен перечислить добавленные IP -адреса.

Чтобы проверить это, действительно добавил их, вернитесь в раздел EC2 и проверьте свой Cloudflare-Access Группа безопасности и, надеюсь, она содержит IP -адреса. Попробуйте удалить немного и снова запустить лямбду, она должна заменить их.

Там вы идете, теперь у вас есть функция Lambda, которая будет регулярно работать и будет обновлять указанную группу безопасности с любыми новыми IP -адресами CloudFlare, сделанным!

вопросы

Если это не сработало или у вас есть сообщения об ошибках:

  • Ошибка ответа CloudFlare – По какой -то причине API CloudFlare не был доступен.
  • Не удалось получить группу безопасности – Используемый идентификатор группы был неверным.
  • Если Lambda Times Out, нажмите в Конфигурация вкладка и установите Тайм -аут На более высокое значение 10 секунд должны быть адекватными.
  • Любые другие ошибки, вероятно, связаны с тем, что роль безопасности неверно настроена. Это Переполнение стека время!

Сделать

  • Добавьте адреса IPv6
  • Удалить старые IP -адреса

Automate AWS Security Group с CloudFlare IPS впервые появилась на моем сайт блога 04/04/2017.

Оригинал: “https://dev.to/johnmccuk/automate-aws-security-group-with-cloudflare-ips-la6”