서버를 운영하다보면 상당히 많은 악의적인 접근이 있다는 것을 알 수 있다. 그중에서 가장 많은 비중을 차지하는 것이 중국이다. 그래서 이번에는 중국 ip를 차단하는 방법을 알아보도록 하겠다.
먼저 아래와 같이 설치한다.
#sudo apt-get install geoip-bin geoip-database
그리고 아래와 같이 쳐본다.
#geoiplookup 218.92.0.107
이렇게 친절하게 중국이라고 알려준다.
이제 이런 중국 ip는 접근을 못하게 막아보려고 한다.
#vi /usr/local/bin/sshfilter.sh
이런 파일을 만든다.그리고 아래와 같이 입력한다.
쉘 스크립트를 몰라도 php만 공부했어도 무슨 말인지 대충 감이온다. goiplookup이란 명령어를 사용해서 country 를 뽑은 다음disallow_countries가 아니면 허용을 한다는 뜻이다.
반대로 주석을 해 놓은 부분을 보면 allow_countries만 허용을 하겠단 뜻이다. 해외 ip를 모두 차단하겠다면 아랫부분은 주석을 해주고 윗부분 주석돼 있는 부분을 풀어주면 된다.
이렇게 저장하고 나온다. 그리고 해당 파일에 대한 권한을 준다.
# sudo chown root.root /usr/local/bin/sshfilter.sh
# sudo chmod 775 /usr/local/bin/sshfilter.sh
소유자를 root로 바꾸고 실행권한을 주었다.
#vi /etc/hosts.deny
이 파일을 열어서 아래 구문을 입력한다.
sshd: ALL
저장하고 나온다.
#vi /etc/hosts.allow
파일을 열어서
sshd: ALL: aclexec /usr/local/bin/sshfilter.sh %a
이렇게 입력하고 저장한다.
이제 다음을 실행한다.
#/usr/local/bin/sshfilter.sh 218.92.0.107
그리고 아래 파일을 열어본다.
#vi /var/log/syslog
맨 아랫줄에 보면
aaa 11 15:24:10 ooooo root: DENY sshd connection from 218.92.0.107 (CN)
이렇게 해당 ip를 차단했다는 기록이 남는다.
설정을 다하고 나면 중국에서 접근하는 ip는 모두 차단이 된다. 모니터링을 해보자.
#tail -f /var/log/syslog
이렇게 쳐보고 기다려보면 차단 되는 ip들이 나타난다. 처음 설치하고 나면 충격을 받는다. 진짜 많이 들어오거든...
마지막으로 ip database를 주기적으로 업데이트 해준다.
#vi /etc/cron.monthly/updatingGeoIP
이렇게 저장한다.
이제 한달에 한번씩 업데이트를 수행하게 된다.
물론 이렇게 해도 vpn같은거 쓰면 소용없다. 그래도 최소한의 방어책은 마련해두는 것이 좋다.
이 모든 정보는 아래 블로그에서 가져왔다. 이분께 감사드립니다.
https://shutcoding.tistory.com/24
'개발은아니지만' 카테고리의 다른 글
자막 만들어주는 프로그램 (0) | 2024.10.20 |
---|---|
무료 부트스트랩 템플릿 많은 사이트 (0) | 2024.08.20 |
[우분투]내 사이트의 이미지를 긁어가지 못하게 하려면 feat.htaccess (0) | 2023.06.14 |
엑셀에서 개발자가 꼭 알아야하는 함수 (0) | 2023.06.09 |
리눅스 서버에서 동시 접속자 수 확인하는 명령어 (0) | 2022.01.14 |