티스토리 뷰
[CentOS 6.X] iptables-GeoIP로 국가 차단
공감될만한 이야기다. 국가간 악감정은 없지만 ㅠ... 워낙 사이즈가 큰 대륙의 스케일로 DDoS 공격도 정말 어마어마한 양으로 크게 들어올 때가 있다. 그렇다. 중국 얘기다ㅠ.. 거진 모든 DDoS 에 사용되는 IP는 웬만하면 대륙 IP인 경우가 많다.
이럴 때 아예 해외 IP를 차단하고 싶다, 혹은 특정국가(중국)에 대한 접근을 차단하고 싶다. 할경우에 사용되는 방법이다.
!! 주의사항
1. 내 서버에 접근하는 모든 중국발 접근이 차단될 수 있으므로 신중히 사용해야 한다.
2. 아래 iptables_drop_China.sh은 iptables INPUT 체인에서 차단되도록 설정된 스크립트이므로, bridge/NAT 방화벽에서의 차단을 원하는 경우 FORWARD 체인에 차단되도록 스크립트를 INPUT -> FORWARD로 변경해야 합니다. iptables 체인간 패킷 흐름도를 잘 모르시는 경우, 아래에 첨부된 iptables 흐름도를 참고하세요~
1. 아래 URL을 클릭하여 maxmind 사에서 제공하는 국가간 GeoIP 데이터베이스를 다운받는다.
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
2. zip파일을 unzip을 사용하여 압축해제한 후 csv 파일을 확인합니다.
lim@lim-PC ~/geoip $ unzip GeoIPCountryCSV.zip
Archive: GeoIPCountryCSV.zip
inflating: GeoIPCountryWhois.csv
3. vi 편집기를 사용하여 iptables_drop_China.sh 스크립트를 작성합니다.
#!/bin/bash DB=/home/lim/geoip/GeoIPCountryWhois.csv for IP in `egrep "CN" $DB | cut -d, -f1,2 | sed -e 's/"//g' | sed -e 's/,/-/g'` do echo $IP iptables -A INPUT -p all -m iprange --src-range $IP -j DROP done exit 0
위와 같이 작성 후 :wq로 저장 후 빠져나옵니다.
!! for IP in `egrep "CN" $DB | cut -d, -f1,2 | sed -e 's/"//g' | sed -e 's/,/-/g'`에서 egrep을 감싸는 양쪽의 ``은 작은따옴표(')가 아닌 백쿼타(`)(물결표시 ~ shift안누른 모양) 입니다.
vi 편집기 사용법을 모르시면 아래 링크를 참조하세요~
2017/11/15 - [OS/Linux] - [Linux] vi editor 사용법
4. 이제 해당 스크립트에 생명을 부여합니다.
chmod 700 /home/lim/geoip/iptables_drop_China.sh
5. 스크립트를 실행합니다.
/home/lim/geoip/iptables_drop_China.sh
6. 결과를 확인합니다.
lim-PC geoip # iptables -nvL | more
Chain INPUT (policy ACCEPT 1788 packets, 2015K bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.0.1.0-1.0.3.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.0.8.0-1.0.15.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.0.32.0-1.0.63.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.1.0.0-1.1.0.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.1.2.0-1.1.63.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.2.0.0-1.2.2.255
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range 1.2.4.0-1.2.127.255
9. 나중에 복구는 어떻게 하느냐!?
lim-PC geoip # iptables-restore < 20180621_iptables
[설 명 충]
이미 설정된 GeoIP를 제거하고 싶다면?
- iptables_drop_China.sh 내 아래 라인을 변경합니다.
iptables -A INPUT -p all -m iprange --src-range $IP -j DROP
-->
iptables -D INPUT -p all -m iprange --src-range $IP -j DROP
'OS > CentOS 6.X' 카테고리의 다른 글
[CentOS 6.X] 초간단 ClamAV(리눅스 AntiVirus) 설치 및 운영 (0) | 2018.08.14 |
---|---|
[CentOS 6.X] DB Query 실행시 느림 (0) | 2018.08.14 |
[CentOS 6.X] Owncloud 설치 (0) | 2018.07.16 |
[CentOS 6.X] 센토스 mirror 사이트 구축(HTTP를 이용한 FTP구축) (0) | 2018.06.26 |
[CentOS 6.X] 웹 페이지 느림 현상 (0) | 2018.02.04 |
- Total
- Today
- Yesterday
- 파워쉘 문자열
- end 응모
- 웹쉘 해결
- 피파온라인4
- Java
- 배트멍 할인
- 이지 부스트 700 모브
- 이지 350 지브라
- 조던1 사틴
- selinux 설명
- 케니4
- 나이키 코르테즈
- 리눅스 hostname 변경
- 이지 부스트 700
- 파워쉘 문자열 포함 조건
- 나이키 켄드릭라마
- 웹쉘 탐지
- 리눅스 모니터링
- 매치스패션 할인
- selinux 정책설정
- selinux 사용법
- troijan
- 웹쉘 예방
- 조던1 사틴 블랙토 개봉기
- 조던1 사틴 블랙토
- 파워쉘 문자열 포함
- linux bridge 설정
- 이지 700 모브
- CloudStack
- 리니지m 격수 팁
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |