0. 봇이란 무엇인가
인터넷 초장기부터 사람이 아닌 프로그램이 인터넷을 돌아다니면서 자료를 수집해 왔다. (봇에 대해서는 여기 글을 참고. https://nordvpn.com/ko/blog/bot-meaning/ ) 초창기에는 사람이 검색해서 입력도 했는데 역시나 봇을 당할 수가 없다. 문제는 이 봇이 검색 뿐만 아니라 인공지능 관련해서 인터넷에 넘쳐난다는 점이다. 왜 문제인가. 이 봇들이 특정 웹 사이트가 한가한 시간 대에 접속하면 좋으련만 한번에 엄청난 트래픽을 일으켜 해당 웹 사이트를 다운 시킨다는 점이다. 마치 디도스 공격처럼 무지막지하게 공격이 들어간다. 봇이 아닌 사람이 접속을 못할 정도니, 이제는 착한 봇 나쁜 봇을 구분하기도 하고 아예 봇 자체가 못 들어오게 설정을 하기로 한다. 그래서 단계별로 봇 접속을 막는 방법을 나열해 보도록 한다.
1. 접속 지역 제한
이 방법은 IDC나 클라우드 서비스를 제공하는 업체에 요청할 수 있다. 세계화 시대에는 전 세계에서 접속해 오는 ip들을 반겼는데, 지금은 해외에서 들어오는 대다수 ip들이 사람이 아니고 봇인 관계로 이들을 다 받아주면 서비스 이용료 폭탄이 된다. 이 이후 설명할 방법들 중에서 가장 확실하지만, 서비스 지역을 제한할 수 밖에 없다는 단점이 있다.
2. 별도 솔루션
CDN이나 클라우드 서비스를 제공하는 회사에서는 봇 차단을 하는 솔루션을 제공하고 있다. 해당 솔루션을 쓰면 임의로 악성 봇을 설정할 수도 있고 업체에서 선정한 봇 리스트에 따라서 차단을 할 수가 있다. 전 세계에서 접속을 해도 구분해서 받을 수 있고 새로운 봇이 나와도 업체에서 추가를 해 주니 편하다.
참고
- https://www.akamai.com/ko/glossary/what-are-anti-bot-tools
- https://www.cloudflare.com/ko-kr/learning/bots/what-is-bot-management/
다만, 비용이 든다는 단점이 있다.
3. 방화벽
사용하고 있는 서비스의 서버 운영체제는 보통 리눅스, 윈도서버 버전, BSD 계열이나 상용 유닉스 계열 등이 많다. 해당 운영체제들이 모두 "방화벽"을 설정할 수 있다. 위 1에서 하드웨어 기반 방화벽을 사용한다면, 이 시기에는 소프트웨어 서버 기반 방화벽을 한다고 보면 된다. 예를 들어 firewalld 데몬에서 봇으로 판명된 ip를 "차단"해 버리면 된다. firewalld/zone 폴더에 public.xml 이 있는데 거기다 아래와 같이 추가하고 방화벽을 재시작한다. (참고 : https://www.7-star.net/bbs/board.php?bo_table=talk_computer&wr_id=711 )
<rule family="ipv4">
<source address="'B class IP'/16"/>
<reject/>
</rule>
4. 아파치에서 막기
a. httpd.conf 이용
httpd.conf 를 통해서 접속 ip를 제한할 수 있다. (아래 문서 참조) 이 역시도 사건 발행 후 대응한다는 단점이 있다.
참고
- https://hoing.io/archives/398
b. 별도 프로그램 이용
프로그램을 짜서 아파치 서버 단에서 해당 봇을 착을 수 있다. 이 프로그램은 상용 프로그램을 아파치 서버와 함께 실행한다.
참고
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/README.md
5. .htaccess와 robots.txt 이용
폴더 접근 권한을 설정하는 .htaccess 와 검색엔진 봇들을 제한하는 robots.txt 를 이용하는 방법인데, 효과는 확실하지만 자칫 잘못하면 외부에서 아예 접속이 안될 수도 있으니 해당 방법에 대해서 잘 알지 않으면 안 하는게 낫다.
참고
6. 웹 서비스에서 막기
a. 웹 서비스 내 프로그램 내지는 코드 설정
웹 서비스 내에서 아예 header에 bot 종류 별로 접속 시 차단해 버리는 프로그램을 넣는다. 이 방법 역시도 봇 리스트는 가지고 있어야 한다.
b. 캡차
아래 화면처럼 캡차를 쓰는 방법도 있다. 이 경우에는 정상인이 한번 누른 후에 접속한다는 단점이 있기는 하지만 봇을 차단하는 효과는 확실히 있을 듯 하다.
이 방법들 외에도 봇을 막는 방법들이 많다. 새로운 AI 서비스가 나오면 그때마다 새 봇들이 정상적인 웹 서비스들에 접근을 하기 때문에 항상 로그를 통해서 새 봇을 파악하는게 좋을 듯 하다.
*********
추가
비슷한 사례.