Назад | Перейти на главную страницу

Простой скрипт IPtables для внесения в белый список (конечные точки Amazon)

Я пытаюсь заблокировать экземпляр Amazon EC2, который имеет единственный открытый порт для Amazon SNS. Я не могу использовать группы безопасности для ограничения порта, поскольку IP-адрес постоянно меняется, поэтому он должен быть открыт для всех сразу, а затем защищен с помощью IPtables.

Все, что мне нужно сделать, это сбросить все подключения к порту, кроме локального, а затем принять подключения от конечной точки SNS, например. sns.us-west-1.amazonaws.com

например.

#!/bin/bash

# Deny all except localhost on 8080
iptables -A INPUT ! -s 127.0.0.1 -p tcp -m tcp --dport 8080 -j DROP

# Run every 5 minutes and whitelist resolved AWS SNS IP
iptables -I INPUT -p tcp -s sns.us-west-1.amazonaws.com --dport 8080 -j ACCEPT

Проблема в том, что конечная точка sns "sns.us-west-1.amazonaws.com" регулярно меняет IP.

Если я запустил это правило iptables, оно добавит правило ACCEPT для нового IP-адреса, поскольку он постоянно меняется. Насколько я могу судить, этот список IP не доступен в свободном доступе на Amazon.

Если я могу разрешить IPtables специально с конечной точки, например. "sns.us-west-1.amazonaws.com", тогда я в порядке, но, насколько я понимаю, это невозможно, поскольку он всегда разрешает правила для IP.

Единственный обходной путь, который я могу придумать вместо поддерживаемого общедоступного списка диапазонов IP-адресов SNS от Amazon, который я могу запрашивать и вносить в белый список, - это запускать cron каждые несколько минут, добавляя в белый список конечную точку и любой IP-адрес, с которым она может разрешить.

Это поднимает проблему флагов -I или -A и -C для iptables. Я не могу запустить -C при первом запуске, так как он ничего не находит и ошибки. Я не могу запустить -I, так как он будет добавлять дублирующийся IP-адрес каждый раз, когда он встречается.

Как я могу сделать следующее:

1) всегда имейте правило DENY: iptables -A INPUT! -s 127.0.0.1 -p tcp -m tcp --dport 8080 -j ОТКАЗ

2) добавьте правило, разрешающее источник «sns.ap-southeast-2.amazonaws.com» на 8080, но сначала проверьте, существует ли в это время правило сопоставления для разрешенного IP.