GCP 방화벽 규칙에 여러 IP를 구성하는 쉘을 만들었습니다.

블로그의 전재입니다.

조금 전에 쓴 기사에서 방화벽 규칙을 20개 약 작성했습니다.
htp //s도 t93516. 하테나 bぉg. jp/엔트리/2018/08/06/150052

확인하면서였기 때문에 1시간 미만의 공수.

이것을 프로젝트마다 같은 양 작성해 가고 있다고 생각하면 무섭다. 진심으로.

본래라면 다른 프로젝트에서도 방화벽 룰을 공유할 수 있었다고 생각하고 여러가지 조사했습니다만, 발견되지 않았으므로 이번의 방법에 침착했습니다.

경위



GCP로 이행했다고 한 회사의 서버에, 1분간에 3, 4통의 빈도로 대량의 스팸 메일이 도착하고 있다고 보고를 받았습니다.



도메인은 qq.com입니다. 중국? 메일 같은.

Sendgrid의 관리 화면을 보면 ランダムな数字@qq.com의 메일이 자주 왔습니다.

액세스 로그를 보고 IP를 검색한 결과 거의 모든 것이 필리핀의 공격.

지금까지, 중국으로부터 공격이 왔으므로 그 대책은 하고 있었습니다만, 맹점이었습니다.

추억이 무서워요.

앞으로도 방화벽 규칙을 만들겠다고 생각하면 정말 우울해질 것 같았기 때문에 누구나 쉘을 두드려 만들 수 있어 GitHub 만들었습니다.

준비



로컬에서 gloud 명령을 사용할 수 있는 환경을 만들어 두십시오.

설치 방법은 위의 기사에 나와 있습니다.

GitHub 붙여두므로 clone 해주세요.
htps : // 기주 b. 코 m / 뭉치 93 / G 세퍼 왓 ls. 기 t

README.md에 졸라 영어로 하는 방법 쓰고 있으므로, 문장 잘못하면 풀릭 부탁합니다.

중국, 한국, 북한, 필리핀의 IP 제한


cn-kr-kp-firewall.sh 가 중국, 한국, 북한의 IP를 제한하는 쉘입니다.
philippines-firewall.sh 가 필리핀의 IP를 제한하는 쉘.

또 공격처가 있으면 수시로 쉘을 추가해 갑니다.

IP를 나열한 텍스트를 기반으로 쉘 실행



all-firewall.sh
#!/bin/bash

count=0
BASE_PATH=$(cd $(dirname $0); pwd)
DIR_PARH=$(dirname ${BASE_PATH})

while read line
do
  if [ -s $DIR_PATH/iptext/all-ip-addresses.txt ]; then
    count=$(( count + 1 ))
    if [ "$(uname)" == 'Linux' ]; then
      ADDRESSES=`head -n 255 $DIR_PATH/iptext/all-ip-addresses.txt | sed -e ':loop; N; $!b loop; s/[\r\n]\+/,/g'`
    elif [ "$(uname)" == 'Darwin' ]; then
      ADDRESSES=`head -n 255 $DIR_PATH/iptext/all-ip-addresses.txt | sed "" -e ':loop; N; $!b loop; s/[\r\n]\+/,/g'`
    else
      ADDRESSES=""
    fi
    sed -i -e 1,255d $DIR_PATH/iptext/all-ip-addresses.txt
    if [ $count -lt 10 ]; then
      gcloud compute firewall-rules create ip-reject-0$count \
              --priority 10 \
              --action deny \
              --direction ingress \
              --rules all \
              --source-ranges $ADDRESSES
    else
      gcloud compute firewall-rules create ip-reject-$count \
              --priority 10 \
              --action deny \
              --direction ingress \
              --rules all \
              --source-ranges $ADDRESSES
    fi
  fi
done < $DIR_PATH/iptext/all-ip-addresses.txt

cd $DIR_PATH
git checkout iptext/all-ip-addresses.txt
GceFirewalls/iptext/all-ip-addresses.txt 에 중국, 한국, 북한, 필리핀의 IP 모두가 들어 있습니다.

셸( GceFirewalls/sh/all-firewall.sh )을 실행하면 이 텍스트 파일을 기반으로 gcloud 명령을 실행하여 방화벽 규칙을 만들 수 있습니다.

어쩌면 OS에 따라서는 쉘이 잘 움직이지 않을지도 모릅니다.

그 때는 풀릭 올려 주면 기뻐합니다.

끝에



방화벽 규칙을 프로젝트별로 공유하는 방법을 아는 분이 계시면 가르쳐 주셨으면합니다 m(_ _)m

좋은 웹페이지 즐겨찾기