IP 주소로 클라이언트가 내 웹 서버의 특정 URL에 액세스하지 못하도록 차단하는 방법은 무엇입니까?


9

알려진 취약한 페이지에 액세스하는 ipaddress를 어떻게 영구적으로 차단할 수 /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 보안 방법 .

봇이 대역폭을 차지하지 못하도록 차단하려고합니다.


4
이렇게하면 로그 파일이 정리되지만 보안에 전혀 도움이되지 않습니다. 항상 phpmyadmin을 최신 상태로 유지하거나 localhost에서만 액세스하고 다른 모든 트래픽을 차단하십시오. 원격 서버에 액세스하려면 ssh를 통해 포트를 터널링하십시오.
Stefan M

사이트에 액세스하려는 악의적 인 IP 주소를 차단하기 때문에 보안에 도움이 될 것이라고 생각합니다.
Whitecat

@Whitecat는 404HTTP 코드를 의미 Page not found합니다. 이 IP가 IP를 위반한다는 것을 어떻게 알 수 있습니까? 이 IP를 차단하기로 결정한 출력을 기반으로합니까?
Valentin Bajrami

그들이 phpMyAdmin에 가고 있다는 사실에 근거하여 IP를 차단하고 싶습니다. 내 사이트를 보호했으며 해당 페이지를 방문하는 사람은 모두 악의적 인 것으로 알고 있습니다.
Whitecat

1
.htpasswd
nicoX

답변:


18

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


5
tbh 이것은 정확한 문제 fail2ban가 해결 하도록 설계되었습니다. 약간 무겁지만 다시 한 번 원하는 기준은 상당히 역동적입니다. fail2ban표준 도구를 사용하여 이러한 종류의 문제를 해결하려고 시도 할 때 고려되는 모든 것은 가벼운 무게입니다.
Bratchley

1
글쎄, 당신은 suid-root 바이너리 cgi를 작성하고 / phpmyadmin으로 호스팅하여 호출자의 방화벽 규칙을 추가한다고 가정합니다.
Joshua

7

하지마 기껏해야 로그를 덜 복잡하게 만드는 것 외에는 아무 것도 달성 할 수 없습니다. 최악 의 경우 PC를 봇넷 노드로 감염된 사람의 IP 주소 (DHCP를 통해)를 얻은 합법적 인 방문자차단하게 됩니다.

여기에서 실제 문제는 로그 클러 터 (log clutter)이며, 취약성을 사용하지 않기 때문에 사이트에서 발견하지 못하거나하지 않는 취약점에 대해 알려진 취약점 검색 요청을 삭제하도록 로깅을 구성하여 해결할 수 있습니다. 그들이 찾고있는 프레임 워크. 로깅이 완전히 손실되는 것에 대해 우려하는 경우 (아마도 다른 공격을 담당 한 사람 또는 공격이 시작된시기 등을 제안하는 증거를 제공 할 수 있음) 짧은 시간 내에 특정 IP에서 정크 URL에 대한 여러 로그 항목을 제한합니다. 더 잘 작동합니다.


6
fail2ban금지는 일시적입니다. XY 및 Z를 구성 할 수있는 Y 초, Z 분 금지 내에서 잘못된 로그인 시도의 X 적중
Shadur

2
0.1 % 확률로 이런 일이 발생하면이 phpmyadmin 인스턴스의 합법적 인 사용자 는 차단되지 않도록 OP 메시지를 보낼 수 있습니다. 또한 fail2ban은 서버에서 패치되지 않은 또는 제로 데이 취약점을 발견하기 전에 검색 공격을 종료 할 수 있습니다.
Segfault

1
@Segfault : 서버에 존재하지 않기 /phymyadmin/때문에 합법적 인 사용자가 없을 것입니다 /phymyadmin/(404 참조). 문제가되는 합법적 인 사용자는 방화벽으로 차단 된 사이트의 사용자입니다 .
R .. GitHub 중지 지원 얼음

1
"최고"는 실제로 실제로 성공했을 수있는 테스트를 포함하여 차단 된 추가 테스트를 포함합니다. 로그 내용을 가지고 놀아도 필터에 오류가 있다는 것을 알 때 정보를 잃는 좋은 방법처럼 보입니다. 로그 클러 터가 걱정된다면 ELK와 같은 분석 플랫폼이 필요합니다. 관심있는 항목을 모두 분석 할 수 있습니다.
Bratchley

2
다른 관련 문제는 CGN의 사용 증가입니다. ISP는 단일 IP 주소를 공유하는 수백 명의 고객을 보유 할 수 있으므로 IP 차단은 일시적인 경우에도 위험합니다. 동일한 주소에서 합법적 인 사용자와 활성 검색을 동시에 수행 할 수 있습니다.
Bob

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>

대단해. 그러나 문제는 많은 다른 IP에서 일정한 봇이 있다는 것입니다. 하루에 20-30 개의 고유 한 악성 IP를 얻을 때마다 모든 다른 IP를 따라 잡을 수는 없습니다.
Whitecat

2
그렇기 때문에 액세스하려는 세그먼트를 허용하고 나머지는 자동 차단하는 역순을 보여주었습니다.
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadmin보안을 위해 다른 것으로 변경해야합니다. Alias /secret /usr/share/phpMyAdmind
nicoX

설치시 도구와 함께 제공되는 기본 구성 파일을 수정하고 임의의 IP 주소를 구성했습니다.
thebtm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.