반응형

paloalto rest api를 사용해서 일단 시스템 리소스 확인하는 거 완성하고

PRTG에 알람 발생시 mattermost 로 incomming webhook에 전송하는걸.. 하려고 했으나..  그게 지원이 좀 힘들어서

arcsight 로 syslog 전송하고 syslog받으면 arcsight에서 내부 sh을 실행하고.. sh 에는 python 파일을 실행하도록 해놓고..

python 은 전달받은 파라메터를 이용하여 mattermost 로 전송

mattermost는 push로 담당자에게 전달..

그리고 다시 또 메세지를 띄우고 incomming webhook으로 다시 전송해서

메세지 분석해서 띄워놓은 python bot에서 추가 rest api를 호출해서 시스템 자원 확인해서 다시 mattermost 에게 전달.. 그 후 다시 담당자에게 push..


일단 여기까지 하려고 하는데

paloalto -> PRTG -> Arcsight -> sh실행 -> python 실행 -> mattermost -> push and incomming webhook -> python bot -> push


paloalto rest api 를 python bot에서 호출해야되니 key 받아서 호출하고.. 필요한 리소스들 가져오는 것까지 짰는데..


python - paloalto rest api module (클릭)


맙소사..

이런게 있었네요...

이미 모듈화가 있었어요 ㅠㅠㅠ 된장....

괜히 고생했어.... ㅠㅠ


[yad2nus@VM mattermost]$ panxapi.py --help

panxapi.py [options] [xpath]

    -d                    delete object at xpath

    -e element            edit XML element at xpath

    -g                    get candidate config at xpath

    -k                    generate API key

    -s                    show active config at xpath

    -S element            set XML element at xpath

    -U cmd                execute dynamic update command

    -C cmd                commit candidate configuration

    --validate            validate candidate configuration

    --force               force commit when conflict

    --partial part        commit specified part

    --sync                synchronous commit

    -A cmd                commit-all (Panorama)

    --ad-hoc query        perform ad hoc request

    --modify              insert known fields in ad hoc query

    -o cmd                execute operational command

    --export category     export files

    --log log-type        retrieve log files

    --report report-type  retrieve reports (dynamic|predefined|custom)

    --name report-name    report name

    --src src             clone source node xpath

                          export source file/path/directory

    --dst dst             move/clone destination node name

                          rename new name

                          export destination file/path/directory

    --move where          move after, before, bottom or top

    --rename              rename object at xpath to dst

    --clone               clone object at xpath, src xpath

    --override element    override template object at xpath

    --vsys vsys           VSYS for dynamic update/partial commit/

                          operational command/report

    -l api_username[:api_password]

    -h hostname

    -P port               URL port number

    --serial number       serial number for Panorama redirection/

                          commit-all/threat-pcap

    --group name          device group for commit-all

    --merge               merge with candidate for commit-all

    --nlogs num           retrieve num logs

    --skip num            skip num logs

    --filter filter       log selection filter

    --interval seconds    log/commit/report job query interval

    --timeout seconds     log/commit/report job query timeout

    --stime time          search time for threat-pcap

    --pcapid id           threat-pcap ID

    -K api_key

    -x                    print XML response to stdout

    -p                    print XML response in Python to stdout

    -j                    print XML response in JSON to stdout

    -r                    print result content when printing response

    --text                print text response to stdout

    -X                    convert text command to XML

    --ls                  print formatted PCAP listing to stdout

    --recursive           recursive export

    -H                    use http URL scheme (default https)

    -G                    use HTTP GET method (default POST)

    -D                    enable debug (multiple up to -DDD)

    -t tag                .panrc tagname

    -T seconds            urlopen() timeout

    --cafile path         file containing CA certificates

    --capath path         directory of hashed certificate files

    --version             display version

    --help                display usage


반응형

'작업공간 > Tool' 카테고리의 다른 글

fortigate automation using rest api python 모듈  (0) 2020.04.30
안드로이드 디컴파일러(유료)  (2) 2013.02.13
Malware Crawler  (0) 2013.02.12
Retina Free Network Scanner  (2) 2011.04.07
xwodi  (0) 2011.02.28
반응형

O365 및 AWS와 같이 클라우드 기반으로 동적IP가 할당되고 수시로 변경되는 경우, 방화벽에서 IP만 가지고 차단하는것은 불가능합니다.

하물며 도메인도 여러가지로 변경이 되는 것은 더 큰 문제!!


기존 방화벽 기반으로 처리를 하던 기존 수 많은 담당자들은

Maybe.. 

그냥 Any Open일 거예요. 100%!!


매번 변경되는 IP를 쉽게 크롤링(수집)하고 수집된 정보를 적용(활용)할 수는 없을까..?

라는 고민으로

방화벽 자동화의 첫번째 발걸음!

그 시작을 크롤링으로 시작합니다.


minemeld를 선택한 이유.

팔로알토에서 제공하는 오픈소스입니다. 믿을만하죠?


팔로알토에서 Autofocus 라는 서비스를 유료로 제공하는데 그 서비스의 일부로 minemeld를 넣어서 제공할 만큼 minemeld를 활용하고자 하는 것 같습니다.


자.. 그럼 이 minemeld라는 녀석을 어떻게 활용할 수 있을까요?

팔로알토는 친절하게도 사용할 수 있는 상황(CASE)에 대해 정리하고 있네요.

저 중에서 다양한 용도로 사용할 예정입니다.


자 그럼.. 이 minemeld를 어떻게 설치하느냐?

MineMeld Github 사이트 링크 [클릭]


위 github에서 다운로드 받아서 설치하거나 팔로알토에서 제공하는 이미지파일을 받아 VM 환경에 올리면 됩니다.

install minemeld설치방법

4가지 설치방안을 제공하고 있으니 아래 링크 클릭해서 각자 원하는 설치방법으로 설치!!

MineMeld 설치 링크 [클릭]


설치하는 방법은 위에 링크에 잘 나와있으니 별다른 말을 첨언할게 없어요~ 따라만 하시면 됩니다.

이렇게 설치가 완료되면 웹데몬이 떠서 웹서비스 형태로 동작하게 됩니다.

바로 이렇게!!

logiin minemeldlogiin minemeld

ID/PASS는 default로 admin / minemeld 로 되어 있으니 참고~!!

로그인하면 대시보드를 확인 할 수 있습니다.

minemeld dashboardminemeld dashboard

이미 꽤 오래전부터 운영하고 있었기 때문에 수집되고 있는 IP가 꽤 많습니다.


설치하면 기본적으로 수집하는 IP들도 있고 원하는 것들은 추가해서 볼 수 있고

크롤링하는 inteval은 각각 지정할 수 있는데 대부분 1~20초, 600초, 3600초 정도로 설정되어 있는데 이 값은 바꾸면 되지만 굳이 바꿀 이유를 찾지 못해 그냥 쓰고 있습니다.

minemeld nodeminemeld node

이건 하나의 예시입니다.

AWS IP는 인터넷에 공개되어 있어요

AWS IP Range(범위) [클릭]


하.지.만. JSON 형태로 되어 있어 쓰려면 가공이 필요합니다.

minemeld는 수집과 가공을 동시에 제공하는데, 다른 솔루션을 통해서도 할 수 있지만 처음부터 minemeld를 써서 그런가..

이게 굉장히 편하더라고요.


위에 사진에서도 있지만

1. 제일 첫번째 녹색은 miner. 수집하는 노드

2. 두번째 가운데 있는 분홍색은 processor. 가공하는 노드

3. 제일 마지막으로 오른쪽에 있는 노란색은 output. 결과물을 출력해주는 노드


외부 인터넷에 있는 IP들을 수집하고, 가공(분류)하고 출력(웹형태)해주는 기능을 하는게 바로 이 minemeld의 정체!


저런식으로 AWS의 서비스와 리전을 기반으로 모든 IP들을 구분하고 사용하고 있습니다.

방화벽 설정을 할때 ANY를 안쓰기 위한 방법 중 하나라고 할까요..?

AWS IP RANGEAWS S3 US-EAST-2 IP RANGE

minemeld에서는 이렇게 출력을 해줍니다.


팔로알토에서 제공해주는 오픈소스이기 때문에 팔로알토 방화벽에서 바로 적용이 가능하며 Objects > External Dynamic Lists 에서 객체화 시킬 수 있습니다.

paloalto aws ip 적용방법external dynamic lists 활용

국내 팔로알토 엔지니어들(코리아 제외)은 이 기능(External Dynamic Lists)을 "차단"을 하는 기능이라고 말하더라고요

굉장히.. "차단", "Deny"에 국한해서 이야기를 합니다. 왜 그런 이야기를 하는지는 모르겠어요. 누가 그렇게 가르쳐주나?


실제로 화면상에도 보면 알겠지만 malicous ip, high risk ip 들을 별도로 정의 해줍니다.

하지만 나는 blacklist가 아닌 whitelist 기반으로 쓸거예요!!

firewall policy방화벽 정책

이렇게 적용할 수 있습니다.

물론 일부는 IP는 ANY로 두고 URL Category만 지정해서 하면 되지 않느냐~ 라고 하실 수 있지만

제 개인적인 생각은 이렇습니다.


1. ANY 객체를 쓰고 싶지 않다.

   - ANY 객체를 쓰면 정책 최적화 과정에서도 굉장히 불편합니다.

2. URL Category만 쓸 경우 오류가 있다.

   - URL까지 확인되기 위해 3-way handshake가 발생합니다. 웹인지 확인해야되니까요. 즉, 통신은 이루어 집니다.

   - 환경에 따라 일부 트래픽들이 URL Category로 식별되지 않아 차단되기도 합니다.


minemeld prototypeminemeld prototype

추가로 악성도메인이나 IP, URL 정보를 수집할 수 있는 프로토타입들이 있으니 참고하셔도 좋을 것 같습니다.

아니면 저처럼 프로토타입을 추가해서 사용하는 것도 좋습니다. :)


이렇게 IP크롤링 시스템 구축이 끝!

적용까지 완료!!


다음엔 다른걸 자동화 해봅시다. 하나하나 자동화하여 업무의 80%가 자동화 되는 그날까지!!


#보안, #security, #자동화, #automatic, #방화벽, #크롤링, #팔로알토, #Minemeld, #externaldynimiclists

반응형

+ Recent posts