작년에 악의적으로 회원가입을 반복적으로 시도하는 사람이 나타나서 네트워크 단위로 막았다. 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 에 대해 전부 막는 방법을 생각해야 한다.