클라이언트가 IP 주소를 통해 내 웹 서버의 특정 URL에 액세스하는 것을 어떻게 방지합니까?

클라이언트가 IP 주소를 통해 내 웹 서버의 특정 URL에 액세스하는 것을 어떻게 방지합니까?

취약한 것으로 알려진 페이지(예:)에 액세스하는 IP 주소를 영구적으로 차단하려면 어떻게 해야 합니까 /phpMyadmin/? 저는 데비안 서버를 운영하고 있는데 봇이나 해커가 취약점을 찾기 위해 내 서버를 스캔하는 것을 자주 봅니다.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

나는 이 stackoverflow 질문을 따랐습니다.phpMyAdmin을 보호하는 방법.

봇이 대역폭을 차지하는 것을 차단하고 싶습니다.

답변1

이는 원하는 것보다 무거울 수 있지만, fall2ban(https://www.fail2ban.org). 이 도구는 로그 파일을 모니터링하고 사용자 정의 가능한 패턴 세트와 일치하는 로그를 생성하는 주소를 자동으로 억제할 수 있습니다.

답변2

아니요. 가장 좋은 경우에는 로그가 덜 복잡해집니다. 최악의 시나리오는 결국 끝날 것입니다합법적인 방문자 차단그는 한때 PC가 봇넷 노드로 감염된 사람의 소유였던 IP 주소를 (DHCP를 통해) 얻었습니다.

여기서 진짜 문제는 로그가 복잡하다는 것입니다. 이는 알려진 취약성 스캔을 제거하도록 로그를 구성하여 간단히 해결할 수 있습니다. 왜냐하면 귀하는 취약성을 사용하지 않고 따라서 귀하의 사이트는 현재 프레임워크에 취약성을 갖고 있지 않으며 앞으로도 없을 것이기 때문입니다. 스캐닝. 로그 기록이 모두 손실되는 것이 걱정된다면(다른 공격에 책임이 있는 사람이 누구인지, 공격이 시작된 시점 등에 대한 증거를 제공할 수도 있음) 짧은 시간 안에 특정 IP의 스팸 URL에서 여러 로그 항목을 제한하면 됩니다. 기간은 더 잘 작동해야 합니다.

답변3

httpd 구성 디렉터리 중 하나에서 phpMyAdmin.conf를 찾아 deny 73.199.136.112구성 파일의 허용/거부 섹션과 섹션 2.4의 필수 IP를 추가합니다. 대신 도구에 대한 액세스를 허용한 IP 범위를 제외한 모든 항목을 차단한 항목이 포함된 전체 구성 파일의 예를 아래에 배치했습니다.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>

관련 정보