phpMyAdmin을 대상으로하는 해킹 시도를 차단하려면 어떻게해야합니까?


34

내 웹 사이트는 액세스하려는 다른 IP에서 매일 수천 건의 조회수를 얻습니다.

/php-myadmin/
/myadmin/
/mysql/

... 그리고 수천 개의 다른 변형. 이 디렉토리 중 어느 것도 존재하지 않으며 서버에 phpmyadmin도 없습니다.

이러한 시도 중 어느 것도 성공했다고 생각하지는 않지만 서버의 리소스를 사용하고 대역폭을 낭비해야하므로 가능한 경우 중지하고 싶습니다. 이 IP 중 일부를 차단했지만 새 IP로 계속 돌아옵니다. 더 영구적으로 방지 할 수있는 방법이 있습니까?


8
하루에 수천 번의 조회수가 없습니다. 실제로 성능 문제가 있거나 방금 가정하고 있습니까? 하루에 수천 404 명이 실제로는 아무것도 아닙니다 .
MDMarra

아니요 성능 문제가 없습니다. 그러나 그것은 나를 귀찮게하고 내가 할 수있는 일이 있는지 궁금합니다.
amba88

6
IP 기반 차단에주의하십시오. 많은 IP가 합법적 인 사용자에게 전달됩니다. 또한 일부 합법적 인 사용자가 봇넷의 일부로 감염 될 수 있습니다. IP 기반 차단을 수행하는 경우 만료 기간이 상당히 짧아야합니다.
Bob

mod_security이 글타래에 대한 언급 이 없으므로 확인하십시오 . 아래의 주석은 실제로 서버에서 더 많은 작업을 수행 할 수 있음을 지적합니다. 따라서 구현하는mod_evasive 것도 좋을 것 입니다 . 아래에 나열되어 있습니다. fail2ban
mbrownnyc

답변:


42

걱정하지 마십시오. 404를 제공하는 것은 웹 서버가 수행하는 작은 작업입니다. 486을 사용하여 초당 404 초를 처리 할 수 ​​있습니다. 404 당 대역폭은 무시할 수 있습니다. 작은 GET 요청과 작은 404 응답.

진지하게; 걱정하지 마십시오. 이것은 인터넷에서 서버를 실행하는 것의 일부일뿐입니다.


14
Hell-Banning : 횡설수설로 출력되는 일반 페이지 (200 OK)를 제공합니다. 아이들이 사용하는 도구는 발견 페이지를보고 그들은 : (가짜 로그인 페이지가 확실히 악마 장치가 될 것이다) 손으로 조사해야합니다
arul

4
@arul-일부 공격자는이 문제를 도전으로 받아 들일 수 있지만 서버에주의를 기울이더라도주의를 기울여야합니다. 더 작거나 다른 404를 제공하는 것이 여기서 유용할까요? 예를 들어, 호스트가 일반적으로 지원 링크가있는 404를 제공하는 경우 이러한 타겟 URL에 콘텐츠가없는 일반 404를 대신 제공해야합니까?
Freiheit

1
그 목적은 공격자가 결과를 분석하기 위해 추가 자원 (시간)을 소비하게하는 것입니다. 당신이 404를 얻는다면 당신은 공격이 작동 할 가능성이 없다는 것을 알고 있습니다. 가변 길이 OK 결과는 [추가 조사없이] 예상 결과와 구별 할 수 없습니다. 인내가 미덕하지 않기 때문에 그들은 그렇게 그 지옥의 사기를 저하 그들은 :) 중단됩니다, 이러한 스캔을 실행
arul

1
보너스 포인트의 경우 실제 phpmyadmin 페이지와 똑같이 보이지만 완전히 작동하지 않는 정적 페이지를 반환하십시오.
captncraig

1
추가 보너스 포인트를 얻으려면 0.5-1 초의 지연을 만드십시오. 이로 인해 합법적 인 사용자가로드하는 시간이 크게 증가하지는 않지만 나쁜 사람이 수행하는 검색 속도가 느려집니다. (서버가 필요 이상으로 연결을 열어 놓을 수 있고 합법적 인 요청을 처리 할 수 ​​있어야합니다.)
Moshe Katz

38

불행히도 이것은 당신에게 인터넷이 작동하는 방식입니다. 그냥 무시해 수천 명의 봇 / 트로이 목마가 인터넷을 검색합니다. 소스 IP는 항상 무작위입니다. 치료법이 없습니다.

해당 트래픽을 제거하는 유일한 100 % 솔루션은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

대안은 다음
과 같습니다 .-포트 80/443에서 https / http를 사용하여 다른 것으로 이동합니다. 봇은 일반적으로 다른 모든 65k 포트에서 http 서버를 찾지 않습니다.
-VPN을 사용하여 서버에 연결하십시오 (공개 웹 사이트를 호스팅하는 경우 불가능합니다).


다이어그램에 대한 LOL +1 :-) 정적 사이트 에서이 성가신 문제 (우리 모두와 마찬가지로)가 있으며 이것이 가장 유용한 답변입니다.
Dave Everitt

30

당신이 원하는 것은 Fail2ban입니다 (이것이 리눅스 머신이라고 가정하면 말하지 않았습니다 ...)

Fail2ban은 무엇입니까?

Fail2ban은 시스템 로그를 구문 분석하여 차단할 특정 정규식을 찾습니다. 일치하는 항목 (또는 구성 방법에 따라 동일한 IP에서 여러 개의 일치하는 항목)을 찾으면 일반적으로 IPTables를 통해 차단됩니다. 일반적으로 SSH 또는 웹 서버에 대한 인증 시도 실패를 차단하는 데 사용됩니다.

설정된 시간 (분, 일 수, 지속 기간에 따라 다름)에 대해 금지하도록 구성한 후, 다시 시도하지 않으면 금지가 만료됩니다.

이것은 phpmyadmin 스캐닝 봇을 어떻게 차단합니까?

존재하지 않는 phpmyadmin 폴더에 액세스하는 것과 같이 일반적인 공격 징후와 일치하는 데 쉽게 사용할 수 있습니다. 이러한 시도와 일치하도록 올바른 정규식을 파악하고 합법적 인 사용자를 차단하지 않도록해야합니다.

이 블로그 게시물에 제공된 구성 그대로 작동하거나 설정을 약간 조정해야 할 수 있습니다.

왜 차단해야합니까? 404 오류는 많은 비용이 들지 않습니다

iptables에서 그것들을 차단하기 일부 용도가 있습니다-phpmyadmin 취약점을 점검하는 경우, 취약점에 대한 다른 서비스도 시도 할 수 있습니다. 금지하면 대부분의 봇 / 스크립트가 잠시 후에 포기하게되고 더 나은 목표로 넘어갑니다.

스캔을 통해서도 비용이 많이 들지 않지만 (실제로 취약점을 발견하지 않는 한) 로그를 넘치게하여 웹 서버의 성공적인 공격과 문제를보기가 더 어려워집니다.

아래 주석에서 알 수 있듯이 Fail2ban에는 일부 시스템 리소스가 필요합니다. 그러나별로. 최소한 Fail2ban으로 인한 성능 문제가 전혀 없다고 말할 수 있습니다. 그러나 매우 공격적인 스크립트로 인해 암호를 강제로 쓰거나 서버에서 초당 수천 건의 SQL 주입 시도 및 기타 악용을 던지면서 성능 문제가 발생했습니다. 방화벽 수준에서 차단하면 서버 / 응용 프로그램 수준에서 차단하는 것보다 적은 리소스가 필요합니다. 또한 IP 스크립트를 금지하기 위해 사용자 지정 스크립트를 실행하도록 확장 할 수 있습니다. 따라서 IPtables에서 금지하는 대신 하드웨어 방화벽에서 금지 시키거나 같은 사람이 계속 공격하려고하면 누군가에게 이메일을 보내서 불만을 제기 할 수 있습니다 ISP에 문의하거나 데이터 센터가 방화벽에서 차단하도록하십시오.

다른 팁이 있습니까?

실수로 자신을 잠그지 않도록 자신이 제어하는 ​​몇 개의 IP 주소를 허용하는 것이 좋습니다.


6
그게 내가 당신은 단순히 : 가끔 (404) 봉사에 대한보다 Fail2ban에 더 많은 CPU 사이클을 사용하는 것이라 생각합니다 :) 자원의 낭비가 될 것이다
Bartłomiej Zarzecki을

4
@ BartłomiejZarzecki 더 나은 보안을 위해서는 항상 더 많은 리소스가 필요합니다
user11153

3
@ heinrich5991 시도 후 차단됩니다 . 일부 검색에는 차이가 없지만 서버에서 여러 번 시도하는 검색에는 큰 차이가 있습니다.
Grant

2
Fail2ban (또는 이와 유사한)은 / phpmyadmin 이상의 것입니다. 그가 어떤 종류의 원격 액세스 권한을 가지고 있다고 가정하면 F2B 유형 차단 (3 개의 암호와 당신은 ... 사라졌습니다!)은 404 이상입니다.
WernerCD

3
이와 같은 작업을 수행하는 경우 금지를 비교적 빨리 (최대 몇 시간) 만료되도록 설정하거나 공격이 동적으로 할당 된 IP에서 비롯된 경우 합법적 인 사용자를 잠글 위험이 있습니다.
Jens Neubauer

7

내가하는 일은 작은 스크립트를 적절한 디렉토리에 넣는 것이므로 누군가가 / phpmyadmin /에 액세스하면 실행됩니다. 이 스크립트는 iptables (Linux의 경우)를 호출하는 것 외에는 스크립트를 액세스하는 IP 주소를 30 분 동안 차단합니다 (크론 작업은 IP 주소가 추가 된 iptables 체인을 플러시합니다).

fail2ban의 장점은 syslog / access-log를 구문 분석하는 데 리소스를 사용하지 않는다는 것입니다. 물론 단점은이 특정 주소에 액세스하는 것을 제외하고는 다른 것을 확인하지 않는다는 것입니다.

왜 이렇게합니까? 물론, 404를 제공하는 것은 서버에게는 쉽지만, 나는 그들이 그렇게 간단하게 파고 드는 것을 원하지 않습니다. 도구 시간을 낭비하고 서버가 응답하기를 기다렸다가 마침내 포기할 때까지 다시 시도하고 싶습니다. 또한 차단하지 않으면 최종적으로 이동하기 전에 여러 URL을 시도 합니다 . 때로는 수천 개가 넘습니다. 도구에 따라 도구가 "좋아"서 몇 시간 동안 공간을 두거나 몇 분 안에 서버를 관리하지 않을 수도 있습니다.

유효한 페이지를 제공하지 않는 이유는 무엇입니까? 그들의 도구는 당신을 스캔 중지하고 그것을 실행하는 skiddie를 경고 할 수 있습니다-그러면 수동으로 체크 아웃해야합니다. 이것의 단점은 스캔으로 인해 결과가 나오지 않으면 서버가 서버보다 훨씬 더 가까이 보일 것입니다. 어쩌면 그들은 조금 더, 아마도 몇 개의 포트 스캔을 찌를 수도 있고, 당신이 그들을 화나게 할 수도 있고, DoS를 시작하여 그들이 무엇을 할 수 있는지 알아볼 수도 있습니다. phpmyadmin 스크립트에 액세스하는 순간 서버 시간이 초과되는 관점에서 단순히 차단하는 것은 원치 않는주의를 피하면서 도구 시간을 낭비하는 효과가 있습니다.

서버에 phpMyAdmin이 있다면 효과적인 해결책은 별도의 디렉토리에 넣고 웹 서버의 비밀번호 제어 (Apache의 경우 .htpasswd)를 사용하여 액세스하기 전에 액세스를 차단할 수 있습니다.


좋은 대안 옵션처럼 들리지만 ... 웹 서버가 루트 권한으로 스크립트를 실행할 필요가 없습니까?
Grant

1
phpMyAdmin과 같은 도구의 별명을 조정하십시오. 구성 파일을 간단하게 변경하여 adminMyPhp 또는 chrisPhpAdmin ... 또는 스크립트를 사용하지 않는 것으로 변경하십시오.
WernerCD

답장이 늦어서 죄송합니다 (필요하지는 않습니다). sudo (sudoers 파일과 함께)를 사용하여 웹 서버가 루트 권한으로 잘 알려진 하나의 스크립트 (및 해당 스크립트)를 실행할 수 있습니다. 이 스크립트는 IP를 매개 변수로 받아들이고 정규식 ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] +)과 비교하여 확인합니다. )가 이상하게 주입되지 않도록합니다.
Aaa

1

FWIW에서는 / phpmyadmin /에 대한 액세스를 허용 된 IP 주소로만 제한합니다.

또한 우리는 mod_evasive (아파치 2)를 사용하여 DOS / 잘못 동작하는 스크립트 공격을 막습니다.


1

mysql 관리 도구를 시스템 루프백 주소 127.0.0.1에 바인딩하십시오.

그런 다음 포트 포워딩과 함께 ssh를 사용하여 관리자 백엔드에 액세스하십시오.

상당히 투명한 보안 계층을 추가하십시오.


-4

우리가 찾은 가장 좋은 방법은 phpmyadmin이있는 폴더를 암호로 보호하는 것입니다. 또한 phpmyadmin과 관련된 것을 pma, phpmy 등의 폴더 이름으로 사용하지 마십시오.


2
질문에서 : None of these directories exist, I don't even have phpmyadmin on my server.-그는 기존 설치를 강화하는 방법을 묻지 않고 ... 존재하지 않는 것들에 대해 무엇을 해야하는지 묻습니다. 이름을 바꿀 수 없거나 PMA존재하지 않는 경우 이름을 바꿀 수 없습니다 .
WernerCD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.