O365 및 AWS와 같이 클라우드 기반으로 동적IP가 할당되고 수시로 변경되는 경우, 방화벽에서 IP만 가지고 차단하는것은 불가능합니다.
하물며 도메인도 여러가지로 변경이 되는 것은 더 큰 문제!!
기존 방화벽 기반으로 처리를 하던 기존 수 많은 담당자들은
Maybe..
그냥 Any Open일 거예요. 100%!!
매번 변경되는 IP를 쉽게 크롤링(수집)하고 수집된 정보를 적용(활용)할 수는 없을까..?
라는 고민으로
방화벽 자동화의 첫번째 발걸음!
그 시작을 크롤링으로 시작합니다.
minemeld를 선택한 이유.
팔로알토에서 제공하는 오픈소스입니다. 믿을만하죠?
팔로알토에서 Autofocus 라는 서비스를 유료로 제공하는데 그 서비스의 일부로 minemeld를 넣어서 제공할 만큼 minemeld를 활용하고자 하는 것 같습니다.
자.. 그럼 이 minemeld라는 녀석을 어떻게 활용할 수 있을까요?
팔로알토는 친절하게도 사용할 수 있는 상황(CASE)에 대해 정리하고 있네요.
저 중에서 다양한 용도로 사용할 예정입니다.
자 그럼.. 이 minemeld를 어떻게 설치하느냐?
위 github에서 다운로드 받아서 설치하거나 팔로알토에서 제공하는 이미지파일을 받아 VM 환경에 올리면 됩니다.
설치방법
4가지 설치방안을 제공하고 있으니 아래 링크 클릭해서 각자 원하는 설치방법으로 설치!!
설치하는 방법은 위에 링크에 잘 나와있으니 별다른 말을 첨언할게 없어요~ 따라만 하시면 됩니다.
이렇게 설치가 완료되면 웹데몬이 떠서 웹서비스 형태로 동작하게 됩니다.
바로 이렇게!!
logiin minemeld
ID/PASS는 default로 admin / minemeld 로 되어 있으니 참고~!!
로그인하면 대시보드를 확인 할 수 있습니다.
minemeld dashboard
이미 꽤 오래전부터 운영하고 있었기 때문에 수집되고 있는 IP가 꽤 많습니다.
설치하면 기본적으로 수집하는 IP들도 있고 원하는 것들은 추가해서 볼 수 있고
크롤링하는 inteval은 각각 지정할 수 있는데 대부분 1~20초, 600초, 3600초 정도로 설정되어 있는데 이 값은 바꾸면 되지만 굳이 바꿀 이유를 찾지 못해 그냥 쓰고 있습니다.
minemeld node
이건 하나의 예시입니다.
AWS IP는 인터넷에 공개되어 있어요
하.지.만. JSON 형태로 되어 있어 쓰려면 가공이 필요합니다.
minemeld는 수집과 가공을 동시에 제공하는데, 다른 솔루션을 통해서도 할 수 있지만 처음부터 minemeld를 써서 그런가..
이게 굉장히 편하더라고요.
위에 사진에서도 있지만
1. 제일 첫번째 녹색은 miner. 수집하는 노드
2. 두번째 가운데 있는 분홍색은 processor. 가공하는 노드
3. 제일 마지막으로 오른쪽에 있는 노란색은 output. 결과물을 출력해주는 노드
외부 인터넷에 있는 IP들을 수집하고, 가공(분류)하고 출력(웹형태)해주는 기능을 하는게 바로 이 minemeld의 정체!
저런식으로 AWS의 서비스와 리전을 기반으로 모든 IP들을 구분하고 사용하고 있습니다.
방화벽 설정을 할때 ANY를 안쓰기 위한 방법 중 하나라고 할까요..?
AWS S3 US-EAST-2 IP RANGE
minemeld에서는 이렇게 출력을 해줍니다.
팔로알토에서 제공해주는 오픈소스이기 때문에 팔로알토 방화벽에서 바로 적용이 가능하며 Objects > External Dynamic Lists 에서 객체화 시킬 수 있습니다.
external dynamic lists 활용
국내 팔로알토 엔지니어들(코리아 제외)은 이 기능(External Dynamic Lists)을 "차단"을 하는 기능이라고 말하더라고요
굉장히.. "차단", "Deny"에 국한해서 이야기를 합니다. 왜 그런 이야기를 하는지는 모르겠어요. 누가 그렇게 가르쳐주나?
실제로 화면상에도 보면 알겠지만 malicous ip, high risk ip 들을 별도로 정의 해줍니다.
하지만 나는 blacklist가 아닌 whitelist 기반으로 쓸거예요!!
방화벽 정책
이렇게 적용할 수 있습니다.
물론 일부는 IP는 ANY로 두고 URL Category만 지정해서 하면 되지 않느냐~ 라고 하실 수 있지만
제 개인적인 생각은 이렇습니다.
1. ANY 객체를 쓰고 싶지 않다.
- ANY 객체를 쓰면 정책 최적화 과정에서도 굉장히 불편합니다.
2. URL Category만 쓸 경우 오류가 있다.
- URL까지 확인되기 위해 3-way handshake가 발생합니다. 웹인지 확인해야되니까요. 즉, 통신은 이루어 집니다.
- 환경에 따라 일부 트래픽들이 URL Category로 식별되지 않아 차단되기도 합니다.
minemeld prototype
추가로 악성도메인이나 IP, URL 정보를 수집할 수 있는 프로토타입들이 있으니 참고하셔도 좋을 것 같습니다.
아니면 저처럼 프로토타입을 추가해서 사용하는 것도 좋습니다. :)
이렇게 IP크롤링 시스템 구축이 끝!
적용까지 완료!!
다음엔 다른걸 자동화 해봅시다. 하나하나 자동화하여 업무의 80%가 자동화 되는 그날까지!!
#보안, #security, #자동화, #automatic, #방화벽, #크롤링, #팔로알토, #Minemeld, #externaldynimiclists
'작업공간 > Automatic' 카테고리의 다른 글
Python warning 메세지 안뜨게 하는 방법 (2) | 2021.01.18 |
---|---|
mattermost app(앱) 접속 오류시 (0) | 2020.03.07 |
mattermost version check! 확인방법!! (0) | 2020.03.06 |