
Nginx 악성 봇 차단, 스팸 리퍼러 차단기, 취약점 스캐너, 사용자 에이전트, 악성코드, 애드웨어, 랜섬웨어, 악성 사이트 차단, anti-DDOS, WordPress 테마 탐지기 차단 및 반복 위반자용 Fail2Ban Jail
| 저장소 | 스폰서가 되세요 |
|---|---|
| 후원자가 되시면 귀하의 로고와 도메인 링크가 이곳에 표시됩니다. 이 프로젝트를 후원하고 싶다면 [email protected]으로 이메일을 보내주세요. 남아프리카공화국은 아직 GitHub 후원 프로그램에서 지원되지 않습니다. | |
| 저를 후원해 주세요: https://ko-fi.com/mitchellkrog |
차단기가 업데이트되거나 중요하거나 미션 크리티컬한(잠재적으로 중단을 일으킬 수 있는) 변경이 발생할 때 알림을 받으려면 Github 알림을 구독해야 합니다.
이 저장소에 기여되었으며 Alpine Linux 패키지 관리자 중 한 명인 Stuart Cardall @itoffshore가 유지 관리하는 일련의 셸 스크립트를 통해 수행되는 새로운 권장 설치 방법입니다.
아래 지침은 차단기에 필요한 모든 파일을 다운로드하는 빠르고 간편한 설치 과정을 위한 것이며, 스크립트에는 nginx.conf 및 nginx .vhost 파일에 필요한 include를 추가하는 작업이 포함됩니다. 설정 스크립트는 vhost 구성 파일이 /etc/nginx/sites-available/에 있고 각 vhost 구성 파일의 확장자가 .vhost라고 가정합니다.
수동 설치 지침은 다음을 참조하십시오 - 참조: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
setup-ngxblocker, install-ngxblocker 및 update-ngxblocker는 모두 명령줄에서 사용자 지정 설치/업데이트 위치로 구성할 수 있습니다. (지침의 11단계에서 이러한 스크립트와 비표준 Nginx 위치를 사용하는 방법을 확인하십시오)
옵션을 보려면 setup, install 또는 update 스크립트를 --help 또는 -h와 함께 실행하십시오.
참고: Let's Encrypt SSL 인증서를 사용하는 경우 권장되며 100% 작동하는 방법은 Webroot Authenticator Method를 사용하는 것입니다. http 챌린지 방법을 사용하는 사용자들에게 일부 문제가 있는 것으로 보이지만 webroot가 완벽하게 작동한다는 것을 확인할 수 있습니다. 현재 http-01 챌린지 방법이 certbot 또는 nginx 버그인지 여부는 확실하지 않습니다.
Nginx의 중복 네트워크 보고서는 버그가 아니며 수정할 수도 없습니다. 이는 차단기의 의도된 동작입니다. IP 블랙리스트가 매일 업데이트되면 잘 알려진 일부 IP 및 범위가 블랙리스트에 등록됩니다( old value "1" ). 그런 다음 로딩 순서상 globalblocklist의 맨 끝에서 이러한 IP를 다시 화이트리스트에 등록하여 우리가 정상으로 알고 있는 IP를 새 value "0" 으로 설정함으로써 화이트리스트에 등록합니다. 차단기 출시 이후로 계속 그랬으며 앞으로도 그럴 것입니다. 이것은 단순한 [WARN] 메시지이지 [EMERG] 메시지가 아니며 Nginx 작동에 어떤 식으로든 영향을 미치지 않습니다.
install-ngxblocker를 /usr/local/sbin/ 디렉터리에 다운로드하고 스크립트를 실행 가능하게 설정하십시오.```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
Linux 배포판에 wget이 없는 경우 위의 wget 명령을 curl을 사용하여 다음과 같이 대체할 수 있습니다:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
패키지를 설치합니다.```sh pkg install www/nginx-ultimate-bad-bot-blocker
또는 portmaster를 통해 설치:```sh
portmaster www/nginx-ultimate-bad-bot-blocker
이제 install-ngxblocker 스크립트를 DRY-MODE(시험 실행 모드)로 실행하세요. 어떤 변경이 이루어질지, 어떤 파일을 다운로드할지 보여줍니다. 이는 단지 DRY-RUN일 뿐이므로 아직 변경 사항은 적용되지 않습니다.
install-ngxblocker는 setup 및 update 스크립트를 포함한 모든 필수 파일을 다운로드합니다.```sh cd /usr/local/sbin sudo ./install-ngxblocker
이것은 변경될 사항에 대해 다음과 같이 출력을 보여줍니다.
**(참고: 이것은 DRY-RUN일 뿐이며 어떠한 변경도 이루어지지 않았습니다)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
setup-ngxblocker, install-ngxblocker 및 update-ngxblocker는 모두 명령줄에서 사용자 지정 설치/업데이트 위치로 구성할 수 있습니다.
setup, install 또는 update 스크립트 중 하나를 --help 또는 -h와 함께 실행하여 옵션을 확인하세요.
이제 -x 매개변수와 함께 install 스크립트를 실행하여 저장소에서 필요한 모든 파일을 다운로드하세요:```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
이것은 다음과 같은 출력을 제공합니다:```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
필요한 모든 파일이 이제 저장소에서 직접 Nginx의 올바른 폴더로 다운로드되었습니다.
다음 두 명령을 실행하여 setup 및 update 스크립트를 실행 가능하게 설정했는지 확인하십시오. 이는 4단계 이후를 계속하기 전에 중요합니다.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**setup-ngxblocker, install-ngxblocker 및 update-ngxblocker는 모두 명령줄에서 사용자 지정 설치/업데이트 위치로 구성할 수 있습니다.**
**setup, install 또는 update 스크립트 중 하나를 --help 또는 -h와 함께 실행하여 옵션을 확인하세요.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
이제 DRY-MODE에서 setup-ngxblocker 스크립트를 실행하세요. 그러면 어떤 변경 사항이 적용되고 어떤 파일을 다운로드할지 표시됩니다. 이것은 DRY-RUN일 뿐이므로 아직 변경 사항은 없습니다.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
다음과 같은 출력이 표시됩니다 (아래 출력은 nginx.conf 파일에 /etc/nginx/conf.d/*의 기본 include가 이미 있다고 가정합니다). 제가 아는 모든 Nginx 설치에는 모든 버전과 함께 배포되는 nginx.conf 파일에 이 기본 include가 있습니다.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
이 스크립트는 또한 사용자의 IP를 whitelist-ips.conf 파일에 자동으로 화이트리스트에 등록합니다.
추가 IP 또는 IP 범위는 /etc/nginx/bots.d/whitelist-ips.conf에 있는 사용자 정의 가능한 whitelits-ips.conf 파일에 추가할 수 있습니다.
**setup-ngxblocker, install-ngxblocker 및 update-ngxblocker는 모두 명령줄에서 사용자 지정 설치/업데이트 위치로 구성할 수 있습니다.**
**옵션을 보려면 setup, install 또는 update 스크립트 중 하나를 --help 또는 -h와 함께 실행하세요.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
이제 -x 파라미터와 함께 setup 스크립트를 실행하여 nginx.conf에 필요한 모든 변경 사항(필요한 경우)을 적용하고 모든 vhost 파일에 필요한 include를 추가하세요.
이 setup-ngxblocker 스크립트는 /etc/nginx/sites-available에 있는 모든 vhost 파일이 .vhost 확장자로 끝난다고 가정합니다. 모든 vhost 구성 파일을 .vhost 확장자로 끝나게 하는 것이 좋은 방법이지만, 기존에 사용하던 예를 들어 .conf 확장자를 유지하려면 `-e` 파라미터를 사용하여 setup-ngxblocker를 실행하면 vhost 파일에 사용하는 확장자를 지정할 수 있습니다.
예를 들어 vhost 파일이 .conf로 끝나는 경우 다음과 같이 추가 명령줄 파라미터를 사용하여 setup-ngxblocker를 실행하면 됩니다:
`sudo ./setup-ngxblocker -x -e conf`
이제 setup 스크립트를 실행하여 Bot Blocker를 모든 사이트에서 활성화하는 데 필요한 모든 변경 사항을 적용하도록 합시다.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
다음과 같이 출력이 표시됩니다:```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
당신은 이 스크립트가 테스트 베드 서버의 모든 .vhost 파일에 include 지시문을 추가했고, whitelist-ips.conf 파일에 당신의 IP 주소도 화이트리스트로 등록했음을 알 수 있을 것입니다. 추가 IP 또는 IP 범위는 /etc/nginx/bots.d/whitelist-ips.conf에 위치한 사용자 정의 가능한 whitelits-ips.conf 파일에 추가할 수 있습니다.
이 설정 스크립트가 수행한 작업은 단순히 다음 include 문들을 .vhost 파일에 추가한 것이며, 또한 nginx.conf의 include 항목에 /etc/nginx/conf.d/*를 추가합니다(아직 nginx.conf에 없는 경우). 그렇지 않으면 전체 스크립트가 실패합니다.```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
setup-ngxblocker, install-ngxblocker 및 update-ngxblocker는 모두 명령줄에서 사용자 지정 설치/업데이트 위치로 구성할 수 있습니다.
setup, install 또는 update 스크립트 중 하나를 --help 또는 -h 옵션과 함께 실행하여 옵션을 확인하세요.
이제 nginx 구성을 테스트하세요
sudo nginx -t
그러면 다음과 같은 내용이 표시되어야 합니다.```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
이제 Nginx를 리로드/재시작하기만 하면 Bot Blocker가 즉시 활성화되어 모든 웹사이트를 보호합니다.
`sudo nginx -t && sudo nginx -s reload`
또는
`sudo service nginx restart`
그게 전부입니다. 이제 차단기가 활성화되어 수천 개의 악성 봇과 도메인으로부터 사이트를 보호합니다.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
이제 cron을 설정하여 차단기가 매일 자동으로 업데이트되도록 하여 항상 최신 보호 기능을 유지하세요.
`sudo crontab -e`
crontab 파일 끝에 다음 줄을 추가하세요. 업데이트 보고서를 받을 이메일 주소를 지정하려면 `-e` 명령줄 매개변수를 추가해야 합니다. 당연히 `[email protected]`을 실제 이메일 주소로 바꾸지 않으면 스크립트가 업데이트되었을 때 이메일을 받지 못합니다.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
이렇게 하면 매일 밤 10시에 차단기가 자동으로 업데이트됩니다.
더 자주 업데이트하려면(가끔 하루에 3~4회 업데이트를 푸시하기도 합니다) cron을 8시간마다 실행하도록 다음과 같이 설정할 수 있습니다. 물론 하루에 한 번이면 충분합니다.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
업데이트 후 이메일 알림을 원하지 않는다면(리로드 시 Nginx에 EMERG가 발생할 경우를 대비해 권장되지 않음) 다음과 같이 cron을 실행하세요.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
이메일을 <a href="https://www.mailgun.com/">mailgun</a>을 통해 보내고 싶다면 cron을 다음과 같이 실행하세요.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
그게 전부입니다. 차단기는 최신 버전의 globalblacklist.conf 파일을 다운로드한 후 자동으로 업데이트 상태를 유지하고 Nginx를 리로드합니다.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
이제 아래의 파일들을 사용자 환경이나 요구 사항에 맞게 자유롭게 사용자 정의할 수 있습니다. 이 포함된 파일들은 위의 자동 업데이트 스크립트를 사용한 업데이트 중에도 수정되지 않으므로, 여기서 수행한 사용자 정의는 업데이트 중에 덮어쓰여지지 않습니다.```text
/etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
여러분이 어떤 "난해한" 이유로 실제로 GoogleBot이 사이트에 접근하는 것을 차단하고 싶다고 가정해 봅시다. /etc/nginx/bots.d/blacklist-user-agents.conf 파일에 해당 봇을 추가하기만 하면 GoogleBot에 대한 기본 화이트리스트를 재정의하게 됩니다. 기본적으로 화이트리스트에 등록된 다른 모든 봇에도 동일하게 적용됩니다.
모든 include 파일은 여러분의 편의를 위해 주석 처리되어 있습니다.
(작동 테스트)
테스트
다른 Linux 머신의 터미널에서 자신의 도메인 이름을 대상으로 다음 명령을 하나씩 실행하세요.
❗ 아래 예시의 http:// yourdomain.com ❗ 부분을 여러분의 실제 도메인 이름 ❗ 으로 바꾸세요
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
200 OK로 응답해야 합니다
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com
다음 오류 메시지 중 하나로 응답해야 합니다:
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
다음 오류 메시지 중 하나로 응답해야 합니다:
Nginx Ultimate Bot Blocker가 이제 작동 중이며 여러분의 웹 사이트를 보호하고 있습니다 !!!
❗ 아래 예시의 http:// yourdomain.com ❗ 부분을 여러분의 실제 도메인 이름 ❗ 으로 바꾸세요
Cloudflare CDN / 캐싱 시스템을 사용하는 Cloudflare 사용자라면 항상 Cloudflare CDN을 비활성화(회색 구름으로 설정)해야 합니다.
테스트하는 동안 아래와 같은 올바른 응답 코드 결과를 받게 됩니다:
이것은 의도된 동작입니다. CDN이 제 역할을 하고 있는 것으로, 서버의 첫 번째 응답이 봇에게 444 또는 443 응답을 발급하여 "꺼져라"라고 말한 것입니다.
Cloudflare는 해당 응답을 캐시하므로 두 번째 테스트 시에는 520 Origin Error 원본 오류 메시지를 받게 됩니다.
블로커를 테스트하는 동안에는 CDN / 캐싱 시스템을 비활성화하고, 테스트 결과가 만족스러우면 실제 운영 환경에서 CDN/캐시를 다시 활성화하세요. 봇들이 Cloudflare로부터 그 응답을 받도록 하려면 그래야 합니다.
대부분의 다른 CDN 시스템도 동일한 동작을 보일 가능성이 높으므로 테스트 중에는 항상 CDN을 비활성화하여 테스트를 방해할 수 있는 요소를 배제하세요. 테스트가 끝나면 반드시 CDN을 다시 활성화하십시오 !!
Cloudflare CDN을 활성화한 후 다시 테스트하세요.
테스트 중에 다음이 발생하면
이는 CDN이 작동 중이라는 뜻입니다.
블로커를 비표준 NGINX 폴더 위치에 설치하기
어떤 사람들은 Nginx를 직접 빌드하여 표준 nginx 폴더 위치인 /etc/nginx를 사용하지 않습니다.
이러한 사용자의 경우 다음과 같이 명령줄에서 폴더 위치를 지정하여 install-ngxblocker, setup-ngxblocker 및 update-ngxblocker를 실행할 수 있습니다.
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]
이렇게 하면 파일이 지정한 위치에 자동으로 배치되고, 사용자 지정 위치를 사용하여 vhost에 include를 추가합니다. 또한 update-ngxblocker가 새 업데이트를 가져올 때 globalblacklist.conf 파일 내부의 "Include" 섹션을 사용자 지정 위치로 자동 다시 작성합니다. 이 훌륭한 스크립트를 기여해 주신 Stuart Cardall(@itoffshore)님께 다시 한번 감사드립니다.
Nginx의 중복 네트워크 보고서는 버그가 아니며 수정할 수도 없습니다. 이는 블로커의 의도된 동작입니다. IP 블랙리스트의 일일 업데이트로 인해 잘 알려진 일부 IP와 범위가 블랙리스트에 등록됩니다. old value "1" 그런 다음 globalblocklist의 맨 끝에서 화이트리스트에 등록되는데, 이는 로딩 순서에 따라 우리가 정상으로 알고 있는 IP를 새로운 value "0" 으로 설정하여 화이트리스트에 등록합니다. 블로커의 첫날부터 지금까지 그랬고 앞으로도 그럴 것입니다. 이는 단순한 [WARN] 메시지이지 [EMERG] 메시지가 아니며 Nginx의 작동에 어떤 식으로든 영향을 미치지 않습니다.
(4,000개 이상의 나쁜 리퍼러, 스팸 리퍼러, User-Agent, 나쁜 봇, 나쁜 IP, 성인, 도박 및 클릭재킹 사이트, 수익성 높은 SEO 회사, WordPress 테마 탐지기 등이 포함되며 계속 늘어나고 있습니다)
이 프로젝트에는 수천 시간의 프로그래밍과 테스트가 투자되었습니다. 애정을 보여주세요.
봇들은 사용자 에이전트를 위장하여 다른 소프트웨어나 웹 사이트처럼 보이도록 시도합니다. 그들의 사용자 에이전트 이름은 무해해 보이고, 완전히 합법적으로 보일 수도 있습니다.
예를 들어, "^Java"는 Project Honeypot에 따르면 실제로 가장 위험한 것 중 하나이지만, 밖에는 사용자 에이전트 문자열에 "Java"를 포함하는 매우 합법적인 봇도 많습니다. 따라서 많은 사람들이 "Java"를 차단하는 방식은 무지할 뿐만 아니라 Google과 Bing의 일부를 포함한 매우 합법적인 크롤러까지 차단하게 됩니다. 그리고 봇 차단 스크립트를 작성하는 사람들이 거의 테스트를 하지 않는다는 점이 분명해집니다.
스팸 리퍼러와 스팸 도메인 이름은 매우 교묘한 기술을 사용하여 여러분의 사이트에서 이탈해, 웹을 탐색하는 의심 없는 사람들에게 광고를 게재하거나 심지어 멀웨어, 애드웨어 또는 랜섬웨어를 브라우저에 심는 매우 수익성 높은 클릭재킹 및 클릭 리다이렉션 캠페인을 실행하며, 이는 결국 그들의 수익성 높은 봇 네트워크의 일부가 됩니다.
이 Bot Blocker에는 대부분의 사람들이 Nginx 로그에서조차 보지 못할 수백 개의 도메인 이름과 IP 주소가 포함되어 있습니다. 이는 제 모든 사이트가 SSL로 운영되고 Nginx에 도달하기 전에 차단하는 CSP(Content-Security-Policy)를 사용하기 때문입니다. 그래서 저는 최악의 도메인과 봇들을 계속해서 발견하고 있습니다.
방대한 양의 성인, 도박 및 가짜 뉴스 웹 사이트도 이 블로커 스크립트에서 차단되며, 이 목록은 빠른 속도로 계속 늘어나고 있습니다.
불행히도 대부분의 봇 차단 스크립트는 다른 사람의 스크립트를 단순히 복사하여 붙여넣기한 후 자기 것처럼 보이게 만든 것입니다. 이 프로젝트는 https://github.com/mariusv 가 만든 프로젝트에서 영감을 받았고, 저는 그 프로젝트에 기여했지만 완전히 새로운 레이아웃으로 방향을 바꾸어 대대적으로 정리하고 처음부터 다시 시작했습니다. 이제는 완전히 독립적인 프로젝트입니다. 깔끔하고, 작동하며, 철저히 테스트되었습니다.
이 nginx bad bot bot blocker 목록은 전역 Nginx include 파일로 설계되었으며 Nginx map $http_user_agent, map $http_referer 및 geo $validate_client 지시문을 사용합니다.
이렇게 하면 .conf 파일이 Nginx에 의해 메모리에 한 번 로드되어 운영 중인 모든 웹 사이트에서 사용할 수 있습니다. Nginx vhost conf 파일에서 Include 문을 사용하기만 하면 됩니다.
이것의 장점은 모든 웹 사이트에서 사용하는 하나의 중앙 파일이라는 점입니다. 즉, 로그 파일에서 발견한 새로운 봇을 추가하는 등 수정할 곳이 한 곳뿐이라는 뜻입니다. 변경 사항은 "sudo service nginx reload"만 실행하면 즉시 모든 사이트에 적용됩니다. 물론 리로드 전에 항상 sudo nginx -t를 실행하여 구성 변경 사항을 테스트해야 합니다.
파일 크기는 아주 작습니다. 이 글을 쓰는 시점이자 이 프로젝트의 첫 공개 커밋 시점에, Nginx가 무시하는 모든 주석을 포함한 파일 크기는 단 185kb이며 이미 5,000개 이상의 나쁜 도메인, 나쁜 봇 및 나쁜 IP 주소를 포함하고 있습니다. 너무 가벼워서 Nginx조차 그것이 존재하는지 느끼지 못할 정도입니다. 이미 수천 개의 항목이 포함되어 있으며, 총 개수는 이 README 상단에서 업데이트됩니다.
다른 사람들의 목록을 단순히 복사하여 붙여넣기만 하는 Nginx 및 Apache용 다른 많은 나쁜 봇 차단기와 달리, 이 목록은 처음부터 구축되었으며 10개월 넘게 철저히, 정말 철저히 테스트되었습니다. 매일 모니터링되는 실제 서버 로그에서 얻은 것이며, 거의 매일 최소 3~10개의 새 항목이 이 파일에 추가됩니다.
또한 수개월간의 지속적이고 정기적인 테스트와 로그 파일 모니터링을 통해 오탐(false positive)에 대해서도 철저히 테스트되었습니다.
나쁜 리퍼러 목록에 등록된 모든 웹 사이트는 추가되기 전에 하나씩 확인됩니다. 로그 파일에서 의심스러워 보이는 것을 아무것도 확인하지 않고 그냥 복사하여 이런 차단기에 추가하는 것은 ... 솔직히 어리석은 일입니다.
Nginx에는 말 그대로 연결을 끊어버리는 멋진 오류인 444가 있습니다. 이 모든 규칙은 444 응답을 발급하므로 규칙이 일치하면 요청하는 IP는 응답을 전혀 받지 못하며, 그들에게는 여러분의 서버가 존재하지 않거나 오프라인 상태로 보입니다.
/conf.d/globalblacklist.conf 파일에 문서화된 테스트 명령줄 중 하나를 사용한 curl 테스트는 간단히 "curl: (52) Empty reply from server"를 반환하며, 이것이 나쁜 리퍼러와 봇이 받는 응답입니다.
여전히 허용하고 싶지만 방문 속도를 제한하고 싶은 봇이나 스파이더의 경우, 제가 포함시킨 내장 속도 제한 기능을 사용할 수 있습니다. 파일 전체에 광범위하게 주석이 달려 있으므로 이해할 수 있을 것입니다. 문제가 있다면 그냥 저에게 메시지를 보내세요.
또는 여러분이 발견한 나쁜 리퍼러나 봇을 기여하거나 잘못 차단된 봇이나 도메인을 수정하려면 이 저장소를 포크한 후 여기에 있는 개별 파일에서 풀 리퀘스트를 보내 주세요.
잘못된 목록이나 기타 문제에 대해서는 이슈 시스템에 등록해 주세요. 조사 후 필요하면 제거하겠습니다. 사용자 문제에 매우 빠르게 응답하며, 수많은 사용자가 봇 차단기를 작동시킬 수 있도록 며칠씩 도와왔습니다. 제가 미쳤다고 말할 수도 있지만(논란의 여지가 있지만) 저는 사람들을 돕는 것을 좋아하며, 이슈나 이 기능을 작동시키는 데 문제가 있는 사람들을 무시하지 않습니다.
많은 목록들이 이상한 도메인을 hosts 파일에 넣습니다. 여러분의 hosts 파일과 DNS는 이를 이해하지 못할 것입니다. 이 목록은 모든 운영 체제가 이해할 수 있는 올바른 DNS 형식으로 변환된 도메인을 사용합니다. 올바른 형식의 도메인 구조를 목록에 넣지 않은 목록 사용을 피하십시오.
예를 들어 도메인:
lifehacĸer.com (K에 주목)
실제로는 다음과 같이 변환됩니다:
xn--lifehacer-1rb.com
어떤 운영 체제에서든 nslookup을 실행하면 올바르게 확인될 것입니다.
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com origin = dns1.yandex.net mail addr = iskalko.yandex.ru serial = 2016120703 refresh = 14400 retry = 900 expire = 1209600 minimum = 14400 xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net. Name: xn--lifehacer-1rb.com Address: 78.110.60.230 xn--lifehacer-1rb.com nameserver = dns2.yandex.net. xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net" xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
- 자세한 내용은 https://www.charset.org/punycode 를 참조하세요.
************************************************
## 항상 하고 있는 일을 모니터링하세요:
**이 기능을 구현한 후에는 웹 사이트 로그를 반드시 모니터링하세요.** 먼저 한 사이트에 로드하여 오탐(false positive) 가능성이 없는지 모니터링한 후 모든 웹 사이트에 프로덕션 배포할 것을 권장합니다.
타조처럼 모래에 머리를 묻고 있지 마세요. 책임감 있는 서버 운영자이자 웹 사이트 소유자라는 것은 로그를 자주 모니터링해야 한다는 뜻입니다. 여러분 중 많은 분들이 처음에 이곳까지 오게 된 이유 중 하나는 Nginx 로그 파일에서 수상한 것들을 보았기 때문입니다.
또한 차단하려는 새로운 악성 리퍼러(referer) 및 사용자 에이전트(user-agent) 문자열이 있는지 로그를 매일 모니터링하세요. 이 목록에 추가할 최고의 소스는 제 로그가 아니라 여러분 자신의 서버 로그입니다.
자신의 로그에서 발견한 악성 리퍼러를 Pull Request(PR)를 보내 이 프로젝트에 자유롭게 기여하세요. 물론 이 목록만으로도 대부분의 악성 봇의 99%를 차단할 수 있습니다.
************************************************
## 매일 로그를 모니터링하는 방법 (쉬운 방법):
**다음 사이트에 깊은 감사를 드립니다**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
특정 웹 사이트의 로그 파일에서 매일 상위 리퍼러를 모니터링하려면 아래의 간단한 cron 작업을 사용하세요. 이 cron 작업은 매일 아침 특정 웹 사이트의 로그 파일에서 상위 리퍼러/사용자 에이전트 목록을 이메일로 보내줍니다. 이 예시는 한 사이트에 대한 단 하나의 cron 작업입니다. 모니터링하려는 사이트마다 여러 개를 설정하세요. 아래 cron은 매일 아침 8시에 실행되며 리퍼러 로그를 축약한 목록을 이메일로 보냅니다. '축약'이라 함은 사이트의 도메인과 Google, Bing 같은 기타 리퍼러가 결과에서 제거된다는 뜻입니다. 물론 아래 예시에서 로그 파일 이름, 도메인 이름 및 이메일 주소를 변경해야 합니다. 사용자 에이전트 수집용 두 번째 cron은 리퍼러를 전혀 제거하지 않지만, 원한다면 첫 번째 예시의 awk 문 !~ 을 복사하여 해당 기능을 추가할 수 있습니다.
##### Nginx에서 일일 리퍼러를 모니터링하는 Cron
`00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]`
이 명령은 google, bing 및 자신의 도메인 이름과 같은 도메인을 제외하는 awk 명령을 사용하여 일일 리퍼러 목록을 이메일로 보내줍니다.
##### Nginx에서 일일 사용자 에이전트를 모니터링하는 Cron
`00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]`
이 명령은 지난 24시간 동안 사이트를 방문한 상위 User-Agent 목록을 이메일로 보내주며, 비정상적이거나 의심스러운 User-Agent 문자열을 발견하는 데 유용합니다.
************************************************
## FAIL2BAN으로 방화벽 수준에서 공격적인 봇 차단:
대량의 444 오류를 생성하는 봇을 Nginx 로그에서 모니터링하는 사용자 정의 Fail2Ban 필터와 액션을 직접 작성하여 추가했습니다. 이 사용자 정의 Fail2Ban 감옥(jail)은 1주일 기간의 로그를 검사하고 위반자를 24시간 동안 차단합니다. 반복적으로 위반하는 봇을 차단하고 봇이 로그 파일을 444 오류로 가득 채우는 것을 방지하는 데 큰 도움이 됩니다. Nginx Bad Bot Blocker용 이 훌륭한 애드온 구성 지침은 Fail2Ban 폴더를 참조하세요.
************************************************
## GOOGLE ANALYTICS "GHOST" 스팸 차단:
Nginx 차단기만 사용해서는 Google Analytics 고스트 리퍼러 스팸을 차단할 수 없습니다. 스팸이 Analytics를 직접 공격하며 반드시 웹 사이트를 경유하지는 않기 때문입니다.
고스트 리퍼러 스팸을 방지하려면 Analytics에서 정규식 필터를 사용해야 합니다.
이를 위해 여러분을 위해 생성된 여러 개의 google-exclude-0*.txt 파일이 있으며, 이 파일들은 Nginx 차단기가 업데이트될 때 동시에 업데이트됩니다. 목록이 커짐에 따라 더 많은 제외 파일이 생성될 것입니다.
************************************************
## GOOGLE ANALYTICS에서 "GHOST" 스팸을 차단하려면 아래의 간단한 시각적 가이드를 따르세요
아래의 단계별 시각적 지침에 따라 이 google-exclude 파일을 세그먼트로 웹 사이트에 추가하세요.
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - 고스트 스팸 차단을 위한 세그먼트 추가"/></td>
</tr>
</table>
************************************************
## GOOGLE SEARCH CONSOLE / WEBMASTER TOOLS를 사용한 스팸 도메인 차단
(google-disavow.txt 파일 사용 방법)
google-disavow.txt라는 Google Disavow 텍스트 파일 생성을 추가했습니다. 이 파일은 Google의 Webmaster Tools에서 이러한 모든 도메인을 스팸 또는 유해 링크로 차단하는 데 사용할 수 있습니다. 주의해서 사용하세요.
************************************************
## 전체 차단기를 사용할 수 없는 분들을 위한 ROBOTS.txt 버전?
많은 분들이 호스팅 업체에 의해 제약을 받고 있으며 웹 사이트 뒤에서 실행되는 서버에 대한 루트 액세스 권한이 없습니다. 이런 상황이라면 자동 생성된 robots.txt 파일을 확인하세요. 이 파일은 많은 악성 봇과 User-Agent를 사이트에서 차단하는 데 어느 정도 도움이 될 것입니다.
************************************************
## 전체 차단기를 사용할 수 없는 분들을 위한 .htaccess 버전?
많은 분들이 호스팅 업체에 의해 제약을 받고 있으며 웹 사이트 뒤에서 실행되는 서버에 대한 루트 액세스 권한이 없습니다.
이런 상황이라면 <a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">이 저장소</a>에서 찾을 수 있는 자동 생성된 .htaccess 버전의 스팸 리퍼러 차단기를 확인하세요. 이 .htaccess 방식(APACHE 사이트 전용)은 이 차단기에 포함된 모든 스팸 리퍼러를 사이트에서 차단하는 데 도움이 될 것입니다.
이것을 여기서 언급하는 이유는 많은 CPanel 사용자가 Nginx 서버 뒤에 있다고 생각하지만 실제로는 Nginx 프록시 서버 뒤에 있는 Apache 서버에서 실행되고 있기 때문입니다. .htaccess는 Nginx 사이트에서는 작동하지 않습니다.
Nginx 웹 서버를 사용하지 않나요? [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker) 를 확인하세요.
************************************************
# 정말로 작동합니다 !!!
************************************************
## 이제 Nginx Bad Bot Blocker가 여러분과 여러분의 웹 사이트를 위해 무엇을 할 수 있는지 즐기세요.
### 그리고 이 프로젝트를 지원해 주세요
수천 시간의 프로그래밍과 테스트가 이 프로젝트에 투입되었습니다. 사랑을 보여주세요
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# 웹 사이트가 해킹당했나요?
[](mailto:[email protected]) 웹 사이트를 정리하고 보안을 강화하는 데 도움을 받으세요.
************************************************
### 기타 멋진 무료 프로젝트들
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### 해킹된 멀웨어 및 WORDPRESS 웹 사이트의 새로운 대규모 목록도 확인하세요
이 저장소에는 제가 발견한 멀웨어에 감염된 모든 웹 사이트 목록이 포함되어 있습니다. 대부분의 사이트 소유자는 자신의 사이트가 해킹되어 멀웨어를 심는 데 사용되고 있다는 사실을 인지하지 못합니다.
확인하기: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### 사진에 관심이 있나요?
들러서 [mitchellkrog.com](https://mitchellkrog.com) 또는 [Facebook](https://www.facebook.com/MitchellKrogPhotography)에서 저를 만나보세요. 또는 Twitter에서 저를 팔로우하세요 <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### 감사의 말 및 기여자:
이 프로젝트에 기여해 주신 모든 분들께 감사드립니다.
이 프로젝트를 구동하는 생성기 스크립트와 코드의 많은 부분은 수백 개의 소스에서 가져온 스니펫을 각색한 것입니다. 사실 모든 분을 언급하기는 어렵지만, 제가 항상 새로운 기능을 도입하는 데 도움을 준 작은 코드 스니펫을 제공한 핵심 인물 몇 분을 소개합니다. 그들에게 사랑을 보여주고 그들의 프로젝트도 확인해 보세요.
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (Fail2Ban 필터 정규식 개선)
- Stuart Cardall - https://github.com/itoffshore (설치, 업데이트 및 설정 스크립트 & Alpine Linux 패키지 관리자)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (ACTIVE, INACTIVE 및 EXPIRED 도메인 이름 확인을 위한 훌륭한 스크립트)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos from StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (Travis 빌드 태깅 및 커밋 지원)
- StackOverflow - http://stackoverflow.com/ (수백 개의 질문과 답변에서 가져온 bash 스크립트)
- SuperUser - http://superuser.com/ (다양한 질문과 답변에서 가져온 스니펫)
여기에 이름이 포함되어야 한다고 생각되면 연락 주세요.
************************************************
### 이런 코드를 작성하는 데는 많은 시간이 걸립니다 !!
수천 시간의 프로그래밍과 테스트가 이 프로젝트에 투입되었습니다. 사랑을 보여주세요
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# MIT 라이선스
## Copyright (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
이 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 획득하는 모든 사람에게는 다음 조건에 따라 제한 없이 소프트웨어를 다룰 수 있는 권한이 무료로 부여됩니다. 여기에는 소프트웨어 사본의 사용, 복사, 수정, 병합, 게시, 배포, 재라이선스 및/또는 판매 권리와 소프트웨어를 제공받은 사람에게 이러한 행위를 허용할 권리가 포함되며, 이에 국한되지 않습니다.
위 저작권 고지 및 이 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.
소프트웨어는 상품성, 특정 목적 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 모든 종류의 명시적 또는 묵시적 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 발생하든, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하거나 이와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.