Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Скрипт для правил файрвола: для использования списков AWS JSON для создания диапазонов IP-адресов AWS Firewall, которые можно импортировать в ваши существующие правила UNIFI FIREWALL :), site-manager
 
Большое обновление. Смотри примечание ниже насчёт Версий 1 и 2, которые представляют собой простые скрипты, работающие быстро, но содержат жёстко закодированные списки IP-подсетей. Но сразу переходи к комментарию, начинающемуся с "Version 3 Chat GPT", чтобы получить версию с большим набором функций.https://community.ui.com/questions/BASH-Shell-Script-for-parsing-AWS-Services-JSON-file-and-creating-text-files-to-import-into-your-AW/9fcf50f0-a13e-4e69-85dc-ae2f86d11a02
##################################
Я некоторое время разбирался с этим и решил, что пока что буду использовать shell-скрипт для парсинга JSON AWS в файлы, которые можно будет импортировать в существующие правила брандмауэра. Это простой Unix shell-скрипт, который получает данные с помощью опции "curl" для JSON по HTTP. Сортирует и удаляет дубликаты и затем создаёт несколько файлов *.txt, содержащих диапазоны IP-адресов AWS, которые соответствуют правилам брандмауэра на моём UDM Pro.
Этот скрипт только создаёт файлы. Вам нужно использовать графический интерфейс Unifi, чтобы импортировать их в свои правила. Я надеюсь в будущем поработать над скриптом импорта этой функции. Если кто-то уже решил эту задачу и знает, как делать скриптовый импорт командной строки в существующие правила брандмауэра на UNIFI 9.0, дайте мне знать.

Версия 1 скрипта приведена ниже, но вам стоит пролистать вниз и посмотреть версии 2 и 3. :)
Что хорошо в этом подходе в целом, так это то, что вы можете быстро воссоздать актуальные списки диапазонов IP-адресов AWS. Затем (используя графический интерфейс Unifi) очистить список диапазонов IP-адресов AWS в своих правилах брандмауэра и импортировать новые списки. Таким образом упрощается процесс поддержания списка AWS-подсетей и пар брандмауэра и обеспечивается удаление старых диапазонов IP-адресов и добавление новых диапазонов. Это также способ создать один мастер-список для запуска устройств, а затем (по мере мониторинга журналов брандмауэра и просмотра того, что эти устройства используют в AWS) использовать подход скрипта для создания более целенаправленных списков диапазонов AWS по типу устройства или внутренним сетевым сегментам (VLAN).
 
None
 
Может, я не совсем понимаю цель этого скрипта. Как мне кажется, он получает список подсетей, используемых для AWS, а дальше пользователю, запускающему скрипт, нужно угадывать, для чего нужны эти диапазоны, и назначать их различным сущностям? Например, ваш вариант предполагает, что подсети, начинающиеся с 3, 13, 18, 34, 35, 44, 50, 52, 54, 98, 100, 216, все используются для AppleTV?
 
Текст отсутствует.
 
Было бы гораздо проще читать, если бы ты использовал теги для кода… (использовал бы </> в панели инструментов) и не дублировал код несколько раз. Судя по тому, что я вижу, в куче файлов будут одинаковые адреса. Например, почти все файлы, соответствующие "*-AWS.txt", будут содержать одинаковые адреса, начинающиеся с 34. Это выглядит странно.

Кстати, небольшие советы по кодированию… Пожалуйста, восприми это так, как задумано.

Можно убрать кучу ненужных вызовов `rm -rf`, как вот этот… `rm -rf ./AWS-CLOUDFRONT-IPs-3.txt`

`grep ^3. ./AWS-CLOUDFRONT-IPs-FULL-LIST.txt | grep -v ^13 | grep -v ^32 | grep -v ^34 | grep -v ^35 | grep -v ^36 | sort | uniq > ./AWS-CLOUDFRONT-IPs-3.txt`

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

На этой строке, кажется, ты пытаешься найти строку, начинающуюся с "3.", но твое первое регулярное выражение совпадает с чем угодно, начинающимся с 3 и имеющим другой символ после него, а затем удаляешь эти адреса, которые тебе не нужны. `grep ^3. ./AWS-CLOUDFRONT-IPs-FULL-LIST.txt | grep -v ^13 | grep -v ^32 | grep -v ^34 | grep -v ^35 | grep -v ^36 | sort | uniq > ./AWS-CLOUDFRONT-IPs-3.txt`

Тебе просто нужно исправить выражение поиска, чтобы оно точно совпадало с тем, что тебе нужно, экранировав точку… `grep "^3\." ./AWS-CLOUDFRONT-IPs-FULL-LIST.txt | sort | uniq > ./AWS-CLOUDFRONT-IPs-3.txt`

Также можно избежать использования `uniq` вообще, передав `-u` в `sort`. `grep "^3\." ./AWS-CLOUDFRONT-IPs-FULL-LIST.txt | sort -u > ./AWS-CLOUDFRONT-IPs-3.txt`

И можно избежать кучи дублирующихся строк. Например… `FileName="../IMPORTS/Apple-TV-AWS-CLOUDFRONT.txt"`
`rm -rf $FileName`
`cat ./AWS-CLOUDFRONT-IPs-3.txt   >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-13.txt  >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-18.txt  >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-64.txt  >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-65.txt  >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-99.txt  >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-108.txt >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-143.txt >> $FileName`
`cat ./AWS-CLOUDFRONT-IPs-180.txt >> $FileName`

Можно переписать это так: `cat ./AWS-CLOUDFRONT-IPs-{3,13,18,64,65,99,108,143,180}.txt > "../IMPORTS/Apple-TV-AWS-CLOUDFRONT.txt"`
 
Это версия 1. Версия 2 опубликована ниже как новый комментарий :) Я сокращаю этот пост, чтобы другим было проще увидеть некоторые из первых шагов, которые можно предпринять, чтобы понять, "как" начать создавать нечто подобное. Поэтому некоторые комментарии travis.vitek могут показаться непонятными, так как вы не видите мою полную версию 1.

#!/bin/bash

# Извлечь все содержимое, отсортировать и удалить дубликаты
curl https://ip-ranges.amazonaws.com/ip-ranges.json | sort | uniq

# Извлечь весь список регионов, отсортировать и удалить дубликаты
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | .region' | sort | uniq

# Извлечь весь список УСЛУГ, отсортировать и удалить дубликаты
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | .service' | sort | uniq

# Извлечь весь список IP-ПРЕФИКСОВ, отсортировать и удалить дубликаты
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | .ip_prefix' | sort | uniq

cd ~
rm -rf ./Firewall-IP-List
mkdir ./Firewall-IP-List
cd ./Firewall-IP-List
rm -rf ./IMPORTS
mkdir ./IMPORTS
rm -rf ./AWS
mkdir ./AWS
cd ./AWS

# Извлечь ВСЕ IP-адреса AWS для США
rm -rf ./AWS-EAST-1.txt
rm -rf ./AWS-EAST-2.txt
rm -rf ./AWS-WEST-1.txt
rm -rf ./AWS-WEST-2.txt
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | .ip_prefix' | sort | uniq >> ./AWS-EAST-1.txt
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-2") | .ip_prefix' | sort | uniq >> ./AWS-EAST-2.txt
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-west-1") | .ip_prefix' | sort | uniq >> ./AWS-WEST-1.txt
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-west-2") | .ip_prefix' | sort | uniq >> ./AWS-WEST-2.txt

# Отсортировать ВСЕ IP-адреса AWS в один файл
rm -rf ./AWS-IPs-FULL-LIST.txt
cat ./AWS-EAST-1.txt >> ./AWS-IPs-FULL-LIST.txt
cat ./AWS-EAST-2.txt >> ./AWS-IPs-FULL-LIST.txt
cat ./AWS-WEST-1.txt >> ./AWS-IPs-FULL-LIST.txt
cat ./AWS-WEST-2.txt >> ./AWS-IPs-FULL-LIST.txt

# Найти ВСЕ IP-адреса AWS для определенных классов A адресов и поместить в текстовые файлы
rm -rf ./AWS-IPs-3.txt
grep ^3\. ./AWS-IPs-FULL-LIST.txt | grep -v ^13 | grep -v ^32 | grep -v ^34 | grep -v ^35 | sort | uniq > ./AWS-IPs-3.txt
rm -rf ./AWS-IPs-13.txt
grep ^13\. ./AWS-IPs-FULL-LIST.txt | grep -v ^136 | grep -v ^139 | sort | uniq > ./AWS-IPs-13.txt
rm -rf ./AWS-IPs-16.txt
grep ^16\. ./AWS-IPs-FULL-LIST.txt | grep -v ^161 | grep -v ^162 | grep -v ^168 | sort | uniq > ./AWS-IPs-16.txt
rm -rf ./AWS-IPs-18.txt
grep ^18\. ./AWS-IPs-FULL-LIST.txt | grep -v ^184 | sort | uniq > ./AWS-IPs-18.txt
rm -rf ./AWS-IPs-34.txt
grep ^34\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-34.txt
rm -rf ./AWS-IPs-35.txt
grep ^35\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-35.txt
rm -rf ./AWS-IPs-44.txt
grep ^44\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-44.txt
rm -rf ./AWS-IPs-50.txt
grep ^50\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-50.txt
rm -rf ./AWS-IPs-52.txt
grep ^52\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-52.txt
rm -rf ./AWS-IPs-54.txt
grep ^54\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-54.txt
rm -rf ./AWS-IPs-98.txt
grep ^98\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-98.txt
rm -rf ./AWS-IPs-100.txt
grep ^100\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-100.txt
rm -rf ./AWS-IPs-216.txt
grep ^216\. ./AWS-IPs-FULL-LIST.txt | sort | uniq > ./AWS-IPs-216.txt

# Создать файл Apple-TV для AWS
FileName="../IMPORTS/Apple-TV-AWS.txt"
rm -rf $FileName
cat ./AWS-IPs-3.txt >> $FileName
cat ./AWS-IPs-13.txt >> $FileName
cat ./AWS-IPs-18.txt >> $FileName
cat ./AWS-IPs-34.txt >> $FileName
cat ./AWS-IPs-35.txt >> $FileName
cat ./AWS-IPs-44.txt >> $FileName
cat ./AWS-IPs-50.txt >> $FileName
cat ./AWS-IPs-52.txt >> $FileName
cat ./AWS-IPs-54.txt >> $FileName
cat ./AWS-IPs-98.txt >> $FileName
cat ./AWS-IPs-100.txt >> $FileName
cat ./AWS-IPs-216.txt >> $FileName
 
Не вижу твой скрипт.
Страницы: 1
Читают тему (гостей: 1)