Deep Security~AWS WAF 제휴 도구를 평가했습니다.
14882 단어 AWSWAFAWSDeepSecurity
2015년 11월 27일 딥 시큐리티~AWS WAF 제휴 도구가 Giithub에 공개됐다.
애초에 아무리 해도 순조롭지 못했지만, 마침내 평가할 만한 곳을 그렸기 때문에 한 획을 썼다.
참고 자료
Giithub 창고 deep-security/aws-waf
기능 개요
Deep Security의 IP 목록을 AWS WAF의 condition과 결합시킵니다.
실체는python에서 쓴 스크립트 그룹입니다.
작업 환경
도구 실행 면
pythn2.7 계열
boto3 1.3.1
awscli 1.9.1
기타 준비물
DSaaS
AWS WAF
공사.
Deep Security의 IP 목록을 AWS WAF의 condition과 결합시킵니다.
실체는python에서 쓴 스크립트 그룹입니다.
작업 환경
도구 실행 면
pythn2.7 계열
boto3 1.3.1
awscli 1.9.1
기타 준비물
DSaaS
AWS WAF
공사.
1. 액션 환경 준비
이번에 사용Amazon Linux AMI 2015.09.1 (HVM), SSD Volume Type - ami-383c1956
.
시작하기 전에 AWS WAF에 액세스할 수 있는 IAM 역할을 만듭니다.
이번에는 이렇게 설정했습니다.
제작된 IAM 스크롤 막대, t2를 지정합니다.나노에서 시작합니다.
파이썬 버전 확인
도구는python 2.6 시스템에서 지원하지 않는 설명을 포함합니다.
2.7 계열의 환경을 준비하세요.$ python
Python 2.7.10 (default, Aug 11 2015, 23:39:10)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
awscli와boto3 버전 확인$ aws --version
aws-cli/1.9.1 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.1
git를 설치합니다.$ sudo yum -y install git
:
$ git --version
git version 2.4.3
복제 창고.$ git clone https://github.com/deep-security/aws-waf.git
Cloning into 'aws-waf'...
remote: Counting objects: 205, done.
remote: Total 205 (delta 0), reused 0 (delta 0), pack-reused 205
Receiving objects: 100% (205/205), 604.94 KiB | 157.00 KiB/s, done.
Resolving deltas: 100% (42/42), done.
Checking connectivity... done.
다 했네.$ ll
合計 4
drwxrwxr-x 4 ec2-user ec2-user 4096 2月 10 10:08 aws-waf
$ cd aws-waf/
$ ll
合計 20
-rw-rw-r-- 1 ec2-user ec2-user 1081 2月 10 10:08 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user 4762 2月 10 10:08 README.md
drwxrwxr-x 5 ec2-user ec2-user 4096 2月 10 10:08 dsawswaf
-rw-rw-r-- 1 ec2-user ec2-user 33 2月 10 10:08 requirements.txt
조작 가능한 버전 (a877db1) 으로 되돌려줍니다.
※ 현재 버전에서는 동작하지 않습니다.$ git checkout a877db1adb53b790f470065ed71df96f6ead82fb
Note: checking out 'a877db1adb53b790f470065ed71df96f6ead82fb'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at a877db1... Fixed typo in boto3 version
확인바뀌었네.$ ll
合計 20
-rw-rw-r-- 1 ec2-user ec2-user 1081 2月 10 10:08 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user 4586 2月 10 10:12 README.md ★
drwxrwxr-x 5 ec2-user ec2-user 4096 2月 10 10:12 dsawswaf ★
-rw-rw-r-- 1 ec2-user ec2-user 33 2月 10 10:08 requirements.txt
readme.md에서 보듯이 설치에 필요합니다.$ sudo pip install -r requirements.txt
You are using pip version 6.1.1, however version 8.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting netaddr>=0.7.18 (from -r requirements.txt (line 1))
Downloading netaddr-0.7.18-py2.py3-none-any.whl (1.5MB)
100% |████████████████████████████████| 1.5MB 308kB/s
Collecting boto3>=1.2.1 (from -r requirements.txt (line 2))
Downloading boto3-1.2.3-py2.py3-none-any.whl (108kB)
100% |████████████████████████████████| 110kB 4.0MB/s
Requirement already satisfied (use --upgrade to upgrade): jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/dist-packages (from boto3>=1.2.1->-r requirements.txt (line 2))
Collecting futures<4.0.0,>=2.2.0 (from boto3>=1.2.1->-r requirements.txt (line 2))
Downloading futures-3.0.4-py2-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): botocore<1.4.0,>=1.3.0 in /usr/lib/python2.7/dist-packages (from boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): python-dateutil<3.0.0,>=2.1 in /usr/lib/python2.7/dist-packages (from botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): docutils>=0.10 in /usr/lib/python2.7/dist-packages (from botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Installing collected packages: netaddr, futures, boto3
Successfully installed boto3-1.2.3 futures-3.0.4 netaddr-0.7.18
동작 확인.괜찮은 것 같은데.$ python ip_list_to_set.py -h
usage: ip_list_to_set.py [-h] [-d IP_LIST] [-l] [-m DSM] -u USERNAME -p
PASSWORD [-t TENANT] [--dryrun] [--verbose]
:
2. DSaS의 준비
이 도구는 뒤집을 때 DSaS만 지원되며 서버에 설치된 DSM은 지원되지 않습니다.
DSaS 계정을 준비하고 API 사용자를 생성합니다.
설정은 이런 느낌.
우선 캐릭터를 만든다.
그리고 사용자를 만들고 캐릭터를 부여합니다.
미리 만들어진 IP 목록.
원래는 성숙한 IP 리스트를 활용하는 곳이었다.
3. AWS WAF 준비
특별한 것은 없습니다. 콘디션의 상황은 이렇습니다.
4. 집행과 평가
4-1. 먼저 실행하다
그럼 실행하세요.
우선 리스트를 얻는 것이다.
사용자가 방금 만든 것을 지정합니다.
임차인 이름 DSaS 계정 이름을 지정합니다.
생성된 IP 목록 myIP
의 ID가 21
인 거 아시죠?
또한 AWS WAF의 condition(IP Sets)이 표시됩니다.$ python ip_list_to_set.py -l -u webapi -p xxxxxxxx -t tenant_name
Available Deep Security IP Lists
================================
1 Ignore Reconnaissance
2 Network Broadcast
3 Ingress Filters
4 Domain Controller(s)
5 Off Domain IPs
6 Corporate Network IPs
7 VPN Tunnel IPs
21 myIP
Available AWS WAF IP Sets
=========================
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test3
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test2
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test
그렇다면 IP 리스트myIP
와 AWS WAF의 condition(IP Sets)을 결합시켜보자.
IP 목록myIP
의 ID21
를 지정합니다.
우선--dryrun
추가 옵션이 실행되면 Will request the creation of [myIP]
이 나타납니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Will request the creation of [myIP]
--dryrun
옵션을 선택하면 실제로 공동 작업을 수행합니다.
출력은 Created IP Set [myIP]
입니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 1 IP List entries to 1 IP Set entries
Created IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
AWS WAF의 condition을 보면 추가myIP
입니다.
내용은 이런 느낌.
4-2. 평점
추가 1
IPList에 정보를 추가하여 다시 합작하다.
$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 2 IP Set entries
Will request the addition of 2 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
실행하면 Converted 2 IP List entries to 2 IP Set entries
나와요.
두 개의 IP List entries라고 하나 더 추가되었습니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 2 IP List entries to 2 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
결과는 다음과 같다.
추가적인 부분을 반영했다.
수정 1
방금 추가된 115.xxx.xxx.xxx/32
를 변경합니다.
다음은 Deep Security 약간 변화구로 지원하지만 AWS가 지원하지 않는 표현 형식으로 사용해 보자.
Deep Security에서 지원하는 디스플레이는 다음과 같습니다.
우선 115.xxx.xxx.xxx/32
를 115.xxx.xxx.0/255.255.255.0
로 변경한다.
명령 집행을 생략하다.(동일하게 표시되기 때문)
뜻밖에도 115.xxx.xxx.xxx/32
변경 없이 그대로 남아 115.xxx.xxx.0/24
로 추가 등록되었다.
너는 정말 똑똑하다.
수정 2
이어서 115.xxx.xxx.0/255.255.255.0
를 123.xxx.xxx.0 - 123.xxx.xxx.255
로 설정합니다.
기대치는123.xxx.xxx.0/24 が追加される
입니다.
$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected] --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 1 IP Set entries
Will request the addition of 1 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
출력이 바뀌었네.Converted 2 IP List entries to 1 IP Set entries
.$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected]
Converted 2 IP List entries to 1 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
123.xxx.xxx.0/24
추가되지 않습니다.
전자레인지 표시는 지원되지 않는 것 같습니다.
추가 2(2016/22 보충)
CIDER와 마스크가 없으면 문제가 있을 수 있으니 절개해야 한다.
추가123.xxx.xxx.0
, 연합을 시도해 보자.
명령 실행은 생략되었지만 결과는123.xxx.xxx.0/32
및 CIDER 형식입니다.
무척
추가 3(2016/22 보충)
실제 운용 중인 IP 리스트에서 구상에 많은 댓글이 달릴 테니 댓글로 남겨주세요.
이번에 추가123.42.99.1/32 #hogehoge
.
아이고, 실수했네.#
잘 안 되는 것 같아요.
운용에 좀 곤란하다.(2016/3/4 수정됨)$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Traceback (most recent call last):
File "ip_list_to_set.py", line 385, in <module>
if __name__ == '__main__': main()
File "ip_list_to_set.py", line 381, in main
context.create_ip_set(ip_list)
File "ip_list_to_set.py", line 321, in create_ip_set
updates = self._convert_ds_addresses_to_waf(ds_list)
File "ip_list_to_set.py", line 274, in _convert_ds_addresses_to_waf
addresses = self._parse_ds_addresses(ds_list)
File "ip_list_to_set.py", line 239, in _parse_ds_addresses
if "#" in address: address = split('#').strip() # remove any comments
NameError: global name 'split' is not defined
총결산
Deep Security~AWS WAF 협력 도구에 대한 평가는 다음과 같습니다.
$ python
Python 2.7.10 (default, Aug 11 2015, 23:39:10)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
$ aws --version
aws-cli/1.9.1 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.1
$ sudo yum -y install git
:
$ git --version
git version 2.4.3
$ git clone https://github.com/deep-security/aws-waf.git
Cloning into 'aws-waf'...
remote: Counting objects: 205, done.
remote: Total 205 (delta 0), reused 0 (delta 0), pack-reused 205
Receiving objects: 100% (205/205), 604.94 KiB | 157.00 KiB/s, done.
Resolving deltas: 100% (42/42), done.
Checking connectivity... done.
$ ll
合計 4
drwxrwxr-x 4 ec2-user ec2-user 4096 2月 10 10:08 aws-waf
$ cd aws-waf/
$ ll
合計 20
-rw-rw-r-- 1 ec2-user ec2-user 1081 2月 10 10:08 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user 4762 2月 10 10:08 README.md
drwxrwxr-x 5 ec2-user ec2-user 4096 2月 10 10:08 dsawswaf
-rw-rw-r-- 1 ec2-user ec2-user 33 2月 10 10:08 requirements.txt
$ git checkout a877db1adb53b790f470065ed71df96f6ead82fb
Note: checking out 'a877db1adb53b790f470065ed71df96f6ead82fb'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at a877db1... Fixed typo in boto3 version
$ ll
合計 20
-rw-rw-r-- 1 ec2-user ec2-user 1081 2月 10 10:08 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user 4586 2月 10 10:12 README.md ★
drwxrwxr-x 5 ec2-user ec2-user 4096 2月 10 10:12 dsawswaf ★
-rw-rw-r-- 1 ec2-user ec2-user 33 2月 10 10:08 requirements.txt
$ sudo pip install -r requirements.txt
You are using pip version 6.1.1, however version 8.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting netaddr>=0.7.18 (from -r requirements.txt (line 1))
Downloading netaddr-0.7.18-py2.py3-none-any.whl (1.5MB)
100% |████████████████████████████████| 1.5MB 308kB/s
Collecting boto3>=1.2.1 (from -r requirements.txt (line 2))
Downloading boto3-1.2.3-py2.py3-none-any.whl (108kB)
100% |████████████████████████████████| 110kB 4.0MB/s
Requirement already satisfied (use --upgrade to upgrade): jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/dist-packages (from boto3>=1.2.1->-r requirements.txt (line 2))
Collecting futures<4.0.0,>=2.2.0 (from boto3>=1.2.1->-r requirements.txt (line 2))
Downloading futures-3.0.4-py2-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): botocore<1.4.0,>=1.3.0 in /usr/lib/python2.7/dist-packages (from boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): python-dateutil<3.0.0,>=2.1 in /usr/lib/python2.7/dist-packages (from botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): docutils>=0.10 in /usr/lib/python2.7/dist-packages (from botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.4.0,>=1.3.0->boto3>=1.2.1->-r requirements.txt (line 2))
Installing collected packages: netaddr, futures, boto3
Successfully installed boto3-1.2.3 futures-3.0.4 netaddr-0.7.18
$ python ip_list_to_set.py -h
usage: ip_list_to_set.py [-h] [-d IP_LIST] [-l] [-m DSM] -u USERNAME -p
PASSWORD [-t TENANT] [--dryrun] [--verbose]
:
이 도구는 뒤집을 때 DSaS만 지원되며 서버에 설치된 DSM은 지원되지 않습니다.
DSaS 계정을 준비하고 API 사용자를 생성합니다.
설정은 이런 느낌.
우선 캐릭터를 만든다.
그리고 사용자를 만들고 캐릭터를 부여합니다.
미리 만들어진 IP 목록.
원래는 성숙한 IP 리스트를 활용하는 곳이었다.
3. AWS WAF 준비
특별한 것은 없습니다. 콘디션의 상황은 이렇습니다.
4. 집행과 평가
4-1. 먼저 실행하다
그럼 실행하세요.
우선 리스트를 얻는 것이다.
사용자가 방금 만든 것을 지정합니다.
임차인 이름 DSaS 계정 이름을 지정합니다.
생성된 IP 목록 myIP
의 ID가 21
인 거 아시죠?
또한 AWS WAF의 condition(IP Sets)이 표시됩니다.$ python ip_list_to_set.py -l -u webapi -p xxxxxxxx -t tenant_name
Available Deep Security IP Lists
================================
1 Ignore Reconnaissance
2 Network Broadcast
3 Ingress Filters
4 Domain Controller(s)
5 Off Domain IPs
6 Corporate Network IPs
7 VPN Tunnel IPs
21 myIP
Available AWS WAF IP Sets
=========================
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test3
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test2
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test
그렇다면 IP 리스트myIP
와 AWS WAF의 condition(IP Sets)을 결합시켜보자.
IP 목록myIP
의 ID21
를 지정합니다.
우선--dryrun
추가 옵션이 실행되면 Will request the creation of [myIP]
이 나타납니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Will request the creation of [myIP]
--dryrun
옵션을 선택하면 실제로 공동 작업을 수행합니다.
출력은 Created IP Set [myIP]
입니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 1 IP List entries to 1 IP Set entries
Created IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
AWS WAF의 condition을 보면 추가myIP
입니다.
내용은 이런 느낌.
4-2. 평점
추가 1
IPList에 정보를 추가하여 다시 합작하다.
$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 2 IP Set entries
Will request the addition of 2 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
실행하면 Converted 2 IP List entries to 2 IP Set entries
나와요.
두 개의 IP List entries라고 하나 더 추가되었습니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 2 IP List entries to 2 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
결과는 다음과 같다.
추가적인 부분을 반영했다.
수정 1
방금 추가된 115.xxx.xxx.xxx/32
를 변경합니다.
다음은 Deep Security 약간 변화구로 지원하지만 AWS가 지원하지 않는 표현 형식으로 사용해 보자.
Deep Security에서 지원하는 디스플레이는 다음과 같습니다.
우선 115.xxx.xxx.xxx/32
를 115.xxx.xxx.0/255.255.255.0
로 변경한다.
명령 집행을 생략하다.(동일하게 표시되기 때문)
뜻밖에도 115.xxx.xxx.xxx/32
변경 없이 그대로 남아 115.xxx.xxx.0/24
로 추가 등록되었다.
너는 정말 똑똑하다.
수정 2
이어서 115.xxx.xxx.0/255.255.255.0
를 123.xxx.xxx.0 - 123.xxx.xxx.255
로 설정합니다.
기대치는123.xxx.xxx.0/24 が追加される
입니다.
$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected] --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 1 IP Set entries
Will request the addition of 1 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
출력이 바뀌었네.Converted 2 IP List entries to 1 IP Set entries
.$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected]
Converted 2 IP List entries to 1 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
123.xxx.xxx.0/24
추가되지 않습니다.
전자레인지 표시는 지원되지 않는 것 같습니다.
추가 2(2016/22 보충)
CIDER와 마스크가 없으면 문제가 있을 수 있으니 절개해야 한다.
추가123.xxx.xxx.0
, 연합을 시도해 보자.
명령 실행은 생략되었지만 결과는123.xxx.xxx.0/32
및 CIDER 형식입니다.
무척
추가 3(2016/22 보충)
실제 운용 중인 IP 리스트에서 구상에 많은 댓글이 달릴 테니 댓글로 남겨주세요.
이번에 추가123.42.99.1/32 #hogehoge
.
아이고, 실수했네.#
잘 안 되는 것 같아요.
운용에 좀 곤란하다.(2016/3/4 수정됨)$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Traceback (most recent call last):
File "ip_list_to_set.py", line 385, in <module>
if __name__ == '__main__': main()
File "ip_list_to_set.py", line 381, in main
context.create_ip_set(ip_list)
File "ip_list_to_set.py", line 321, in create_ip_set
updates = self._convert_ds_addresses_to_waf(ds_list)
File "ip_list_to_set.py", line 274, in _convert_ds_addresses_to_waf
addresses = self._parse_ds_addresses(ds_list)
File "ip_list_to_set.py", line 239, in _parse_ds_addresses
if "#" in address: address = split('#').strip() # remove any comments
NameError: global name 'split' is not defined
총결산
Deep Security~AWS WAF 협력 도구에 대한 평가는 다음과 같습니다.
4-1. 먼저 실행하다
그럼 실행하세요.
우선 리스트를 얻는 것이다.
사용자가 방금 만든 것을 지정합니다.
임차인 이름 DSaS 계정 이름을 지정합니다.
생성된 IP 목록
myIP
의 ID가 21
인 거 아시죠?또한 AWS WAF의 condition(IP Sets)이 표시됩니다.
$ python ip_list_to_set.py -l -u webapi -p xxxxxxxx -t tenant_name
Available Deep Security IP Lists
================================
1 Ignore Reconnaissance
2 Network Broadcast
3 Ingress Filters
4 Domain Controller(s)
5 Off Domain IPs
6 Corporate Network IPs
7 VPN Tunnel IPs
21 myIP
Available AWS WAF IP Sets
=========================
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test3
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test2
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test
그렇다면 IP 리스트myIP
와 AWS WAF의 condition(IP Sets)을 결합시켜보자.IP 목록
myIP
의 ID21
를 지정합니다.우선
--dryrun
추가 옵션이 실행되면 Will request the creation of [myIP]
이 나타납니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Will request the creation of [myIP]
--dryrun
옵션을 선택하면 실제로 공동 작업을 수행합니다.출력은
Created IP Set [myIP]
입니다.$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 1 IP List entries to 1 IP Set entries
Created IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
AWS WAF의 condition을 보면 추가myIP
입니다.내용은 이런 느낌.
4-2. 평점
추가 1
IPList에 정보를 추가하여 다시 합작하다.
$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 2 IP Set entries
Will request the addition of 2 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
실행하면 Converted 2 IP List entries to 2 IP Set entries
나와요.두 개의 IP List entries라고 하나 더 추가되었습니다.
$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name
Converted 2 IP List entries to 2 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
결과는 다음과 같다.추가적인 부분을 반영했다.
수정 1
방금 추가된
115.xxx.xxx.xxx/32
를 변경합니다.다음은 Deep Security 약간 변화구로 지원하지만 AWS가 지원하지 않는 표현 형식으로 사용해 보자.
Deep Security에서 지원하는 디스플레이는 다음과 같습니다.
우선
115.xxx.xxx.xxx/32
를 115.xxx.xxx.0/255.255.255.0
로 변경한다.명령 집행을 생략하다.(동일하게 표시되기 때문)
뜻밖에도
115.xxx.xxx.xxx/32
변경 없이 그대로 남아 115.xxx.xxx.0/24
로 추가 등록되었다.너는 정말 똑똑하다.
수정 2
이어서
115.xxx.xxx.0/255.255.255.0
를 123.xxx.xxx.0 - 123.xxx.xxx.255
로 설정합니다.기대치는
123.xxx.xxx.0/24 が追加される
입니다.$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected] --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Converted 2 IP List entries to 1 IP Set entries
Will request the addition of 1 entries in IP Set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Will update IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
출력이 바뀌었네.Converted 2 IP List entries to 1 IP Set entries
.$ python ip_list_to_set.py -d 21 -u webapi -p nPxwcrV3 -t [email protected]
Converted 2 IP List entries to 1 IP Set entries
Updated IP Set [myIP] with ID [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]
123.xxx.xxx.0/24
추가되지 않습니다.전자레인지 표시는 지원되지 않는 것 같습니다.
추가 2(2016/22 보충)
CIDER와 마스크가 없으면 문제가 있을 수 있으니 절개해야 한다.
추가
123.xxx.xxx.0
, 연합을 시도해 보자.명령 실행은 생략되었지만 결과는
123.xxx.xxx.0/32
및 CIDER 형식입니다.무척
추가 3(2016/22 보충)
실제 운용 중인 IP 리스트에서 구상에 많은 댓글이 달릴 테니 댓글로 남겨주세요.
이번에 추가
123.42.99.1/32 #hogehoge
.아이고, 실수했네.
#
잘 안 되는 것 같아요.운용에 좀 곤란하다.(2016/3/4 수정됨)
$ python ip_list_to_set.py -d 21 -u webapi -p xxxxxxxx -t tenant_name --dryrun
***********************************************************************
* DRY RUN ENABLED. NO CHANGES WILL BE MADE
***********************************************************************
Traceback (most recent call last):
File "ip_list_to_set.py", line 385, in <module>
if __name__ == '__main__': main()
File "ip_list_to_set.py", line 381, in main
context.create_ip_set(ip_list)
File "ip_list_to_set.py", line 321, in create_ip_set
updates = self._convert_ds_addresses_to_waf(ds_list)
File "ip_list_to_set.py", line 274, in _convert_ds_addresses_to_waf
addresses = self._parse_ds_addresses(ds_list)
File "ip_list_to_set.py", line 239, in _parse_ds_addresses
if "#" in address: address = split('#').strip() # remove any comments
NameError: global name 'split' is not defined
총결산
Deep Security~AWS WAF 협력 도구에 대한 평가는 다음과 같습니다.
追加
이 생긴다.(삭제 안 함)주석
#
이 순조롭게 처리되지 않기 때문에 IP 목록에서 주석의 내용을 삭제할 준비가 필요합니다(2016/22 추가)(2016/3/4 수정 완료)활용의 용례에 관해서 나는 따로 쓰고 싶다.
Giithub에 등록된 도구이기 때문에 문의와 오류 지적은 Giithub이 가장 좋다.
개발자와 직접 교류할 수 있는 것이 매력이다.
오늘은 여기까지.
수고하셨습니다.
Reference
이 문제에 관하여(Deep Security~AWS WAF 제휴 도구를 평가했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fnifni/items/82a9ee6e6de7e8ea9066텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)