작년에 악의적으로 회원가입을 반복적으로 시도하는 사람이 나타나서 네트워크 단위로 막았다. https://yiunsr.tistory.com/941

 동일인 인지 모르겠으나 그 방법으로 악의적으로 회원가입을 반복하는 사람이 다시 나타났다. 이번에는 IP 마다 공동적인 네트워크가 없어서 방법을 모르고 있다가 https://www.abuseipdb.com/  이 사이트에서 IP를 검색하니 이 IP가 토르 네트워크로 이용된다는 것을 알게 되었다. 
https://www.abuseipdb.com/ 는 IP 에 대해 부정적 사용이 많은지 검색해 보는 사이트이다. 이번에 처음으로 알게 되었다. 앞으로 매우 유용하게 이용할 수 있을 것 같다. 

tor 네트워크에 대해서는 나무위키(https://namu.wiki/w/Tor) 에 설명이 잘 되어 있어, 이 곳을 참고 하면 된다. 결론적으로 이 사용자들이 IP 를 변경하면서 들어 온다는게 문제이다. 제미나이을 통해 이 IP 들이 공개되어 있다는 것을 알게 되었다.  https://check.torproject.org/exit-addresses 에서 정보들이 공개되어 있다. 이 IP들을 막으면 된다. https://check.torproject.org/exit-addresses  에서 IP를 가져오는 것도 다음과 같이 쉘 스크립트로 만들 수 있다. 

#!/bin/bash
TOR_IP_LIST=$(curl -s https://check.torproject.org/exit-addresses | grep ExitAddress | awk '{print $2}')
NGINX_CONF="/etc/nginx/conf.d/block_tor_ips.conf"

echo "# Tor Exit Nodes Block List" > $NGINX_CONF
for ip in $TOR_IP_LIST; do
    echo "deny $ip;" >> $NGINX_CONF
done

# Nginx 설정 테스트 후 리로드
nginx -t && systemctl reload nginx

 

/etc/nginx/conf.d/block_tor_ips.conf  에 파일이 자동으로 생성된다. 

# Tor Exit Nodes Block List
deny 171.25.193.25;
deny 80.67.167.81;
.........


Nginx 에는 IP 를 막는 기능이 있기 때문에 다음과 같은 방법으로 IP를 막을 수 있다.

* nginx 에 설정
```
..........
server {
    listen 443 ssl http2;
     ..........
     include /etc/nginx/conf.d/block_tor_ips.conf;
     ..........
}

```

 

이것을 crontab 으로 등록해서 bash script 를 주기적으로 실행시키며 토르 접속 IP를 갱신 시킬 수 있다.

이제는 이런 식의 공격은 그만 들어 왔으면 좋겠다. 계속 들어 온다면 
https://github.com/firehol/blocklist-ipsets/  에 공개된 악의적으로 공격을 하는 IP 에 대해 전부 막는 방법을 생각해야 한다.