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.