2013-06-03 6 views
1

처음 로깅을 시도한 시간을 저장하고 10 분이 지나지 않아 10 분이 지나면 IP 주소를 금지하면 무차별 공격과 DDoS 공격을 막을 수 있습니까? 실생활에서 사용자가 1 분에 10 번 이상 잘못된 주소를 입력 할 수 있습니까?무차별 공격과 ddos에 대해 10 요청/분?

편집 : 아마도 10 req/m 이후에 사용자/ip를 차단하면 10 번의 잘못된 시도 이후 표준 블록보다 시스템이 훨씬 안전 해집니다.

+0

가 아니, 난 그렇게 생각하지 않는다 사용됩니다. – BlitZ

+0

물건을 안전하게 만들기 위해 ** 아무 것도 ** 충분하지 않습니다. 얼마나 중요한지 생각해야합니다. (사이트가 얼마나 중요하고 적을 가지고 있는지). – ncm

+3

DDoS 공격에 대해서는 별 도움이되지 않습니다. – Lidor

답변

1

나는 감지 방법이 아주 정확하다고 생각합니다. 사용자가 분당 10 번 로그인을 시도하면 여기에 잘못된 것이 있습니다. 사용자가 너무 참을성 열 배는 그냥 "로딩 더 빠르게"를 클릭

  • :

    는하지만 당신은 있는지 확인해야합니다. JavaScript로 로그인 버튼을 비활성화해도 사용자가 JS를 비활성화 할 수 있습니다.

  • 사용자가 수행 로그인 페이지에서 "새로 고침"을 클릭하여 브라우저가 게시물 데이터를 다시 보내도록합니다. 연결 속도가 느리기 때문에 리디렉션 할 수 있습니다. 그래서 이것은 당신에 의해 공격으로 취급 될 수 있습니다.
  • 사용자가 틀린 비밀번호가 저장된 자동 완성 양식이 있습니다. 그는 클릭하기 때문에 오류가 있으므로 다시 반복합니다.

내 생각에 DoS 공격을 시도하는 경우 대책이 없습니다. 그가 서버를 중단하려고하기 때문에 어떤 쿼리를 작성해도 상관 없습니다. 그리고 그는 다른 IP를 가진 많은 컴퓨터에서이 작업을 시도 할 것이므로 쉽게 차단할 수 없습니다.

나는 IP 차단이 아무런 보호 장치가 아니므로 사용자가 숨길 게 있음을 확신 할 수 있다고 생각합니다. 당신은 이런 식으로 그를 막을 수 있습니다. 그래서 그는 당신이 생각조차하지 못했던 또 다른 길을 시작할 것입니다. 다른 의견에서 말한 것처럼 사용자는 일시적으로 사용자를 차단해야합니다 (IP를 기록 할 수 있습니까?). "내부 서버/데이터베이스 오류입니다. 잠시 기다려주십시오."와 같은 메시지를 표시합니다.

전세계의 가장 큰 회사의 모든 주요 사이트는 아무도 차단하지 않습니다.

마지막으로 질문에 대답하십시오. 예,이 방법을 사용하면 시스템이 단기간에 안전 해 지지만 사용자는 차단 된 것을 알 수 없습니다.

+0

감사합니다. @Voitcus IP 차단 아이디어를 제거합니다.하지만 IP 이전에 사용자가 차단 한 경우 사용자가 차단하면 잘못된 사용자 이름/비밀번호를 얻을 수 있습니다. 잘못된 시도가 있지만 올바른 비밀번호를 입력하면 차단을 해제하는 옵션으로 너무 많은 시도가 차단되어 자신의 계정이 차단되었다는 메시지를 받게됩니다. 이는 사용자와 가능한 공격에 도움이됩니까? – lesandru

+0

나는 그것이 안전하다고 생각하지만, 이것은 사용자 경험의 관점에서 불공평 할 수있다. 누군가 내 로그인을 사용하여 사이트를 침입 한 경우 왜 암호를 변경해야합니까? 그것은 내 잘못이 아니며 당신의 보안 허점에 관심이 없습니다. 누군가 다른 사람을 차단하기 위해이 방법을 사용할 수 있습니다. 사용자가 2 ~ 5 분 또는 10 분 동안 로그인하지 못하게하면 충분하지만 일부 기술적 인 이유 때문에 충분하다고 생각합니다. – Voitcus

0

PHP에서 무차별 대항 공격 방어를 담당하는 클래스를 만들었습니다.

https://github.com/ejfrancis/BruteForceBlocker

이는 DB 테이블에 사이트 전체의 모든 로그인 실패를 기록하고 (어떤 시간 프레임 당신이 선택하거나) 지난 10 분 동안 실패한 로그인 횟수에 설정된 한도를 초과하는 경우 (도 선택), 다시 로그인하기 전에 시간 지연 및/또는 보안 문자 요구 사항을 적용합니다.

예 :

// 스로틀 설정 배열을 구축 할 수 있습니다. (# 최근 로그인 실패 => 응답).

$ throttle_settings =

50 => 2,   //delay in seconds 
    150 => 4,   //delay in seconds 
    300 => 'captcha' //captcha 

];

$ BFBresponse = BruteForceBlocker :: getLoginStatus ($ throttle_settings);

// $ throttle_settings는 선택적 매개 변수입니다. 가 포함되어 있지 않은 경우, BruteForceBlocker.php의 기본 설정 배열은

스위치 ($ BFBresponse [ '상태']) {

case 'safe': 
    //safe to login 
    break; 
case 'error': 
    //error occured. get message 
    $error_message = $BFBresponse['message']; 
    break; 
case 'delay': 
    //time delay required before next login 
    $remaining_delay_in_seconds = $BFBresponse['message']; 
    break; 
case 'captcha': 
    //captcha required 
    break; 

}