SSH / SSHD-최대 로그인 시도는 어떻게 설정합니까?


17

LAMP 환경 (yus를 통해 설치된 sshd)에서 최대 로그인 시도를 설정하는 가장 쉬운 방법은 무엇입니까? 패키지 또는 간단한 방화벽 규칙이 있습니까?



@Hyppy 감사합니다. 검색을 시도했지만 불행히도 이름이 잘못된 질문 / 스레드가 많이 있습니다.
John Himmelman

답변:


11

나는 Fail2ban을 사용 한다 ; 나는 과거에 Denyhosts 를 사용해 왔으며 꽤 잘 작동합니다. Fail2ban은 sshd와 웹 앱의 로그인 페이지를 동시에 구성 할 수 있고보다 다양한 여러 서비스 모니터링을보다 잘 처리 할 수 ​​있기 때문에 실패를 기록했습니다.

고려해야 할 다른 방법은 LIMIT 규칙을 iptables; Shorewall 을 설치하지 않는 한 불행히도이 문제를 해결할 수 없으며 LIMIT 규칙을 구성하는 방법에 대한 훌륭한 문서를 가리키고 누군가의 무자비한 능력을 제한합니다. -서버를 강제하십시오.


Fail2ban은 많은 배포판의 리포지토리에서 사용할 수 있으므로 설치하는 것이 간단합니다. Denyhosts를 보지 못했지만 이것이 일부가 아니거나 마지막으로 확인한 이후 추가되지 않았다는 의미는 아닙니다.
Kromey

v0.8.14의 fail2ban이 iptables-multiport 명령에서 올바르게 작동하지 않는 문제에 직면했습니다. 그리고 이것은 새로운 버전에서 해결 된 fail2ban 유틸리티의 알려진 문제입니다 ... 여기에 설명이 있습니다 : github.com/fail2ban/fail2ban/issues/798 그래서 저는 서버 소프트웨어 나 타사 유틸리티로 개발 된 보안 메커니즘만을 믿습니다 ...
George Gaál

44

타사 도구를 사용하고 싶지 않습니다. 따라서 ssh 구성과 방화벽 설정의 조합을 사용했습니다. 다음 솔루션을 사용하면 공격자가 2 분 안에 정확히 3 개의 오류 로그인을 생성하거나 120 초 동안 차단됩니다.

1) 다음 줄을 추가하십시오 /etc/ssh/sshd_config

MaxAuthTries 1

연결 당 한 번의 로그인 시도 만 허용됩니다. ssh 서버를 다시 시작하십시오.

2) 다음 방화벽 규칙을 추가하십시오.

새로운 체인 만들기

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

각 IP 주소를 120 초 동안 차단하면 120 초 내에 세 개 이상의 연결이 설정됩니다. 네 번째 연결 시도의 경우 요청이 SSHATTACK체인에 위임됩니다. 체인에 가능한 ssh 공격을 기록하고 최종적으로 요청을 삭제합니다.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) 가능한 ssh 공격의 로그 항목을 참조하십시오. /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
대박! 하지만 문제가 있습니다. 프랑스의 일부 사람 / 봇이 해커 도구를 올바르게 구성하지 않았으므로 트래픽이 줄어도 로그인을 유지합니다. 결과적으로 내 로그에는이 사람의 데이터가 1 ​​초마다 채워집니다. 이 주위에 어떤 방법이 있습니까?
Smarties89

2
저와 같은 경험이 적은 사람들을 위해 : iptables 줄은 bash 프롬프트에서 입력되며 파일에 입력되지 않습니다.
앤드류 스위프트

4

이를 설정하기 위해 SSH와 관련된 특정 패키지가 없습니다. 그러나 ConfigServer & Firewall 인 CSF를 설치할 수 있습니다.

CSF

/ etc / ssh / sshd_config 파일에서 두 가지 구성 변경 사항을 제안합니다.

ssh 서버가 동시에 처리 할 인증되지 않은 최대 연결 수를 제한하십시오. 이 값이 작을수록 스크립트 키디가 여러 연결로 병렬로 조정 된 크래킹 시도를하기가 더 어렵습니다. sshd_config를 편집하고 MaxStartups를 기본값 "10"에서 "3:50:10"으로 변경하십시오. 콜론으로 구분 된 값은 ssh 서버에 "3 명의 사용자가 동시에 로그인을 시도하고 3에서 최대 10 사이의 연결 시도를 무작위로 점점 더 많이 삭제하도록"합니다. 참고 : 상당한 수의 유효한 ssh 사용자가 로그인 한 서버에서이 값을 늘려야합니다.

  • 기본값 : MaxStartups 10
  • 최대 스타트 업 3:50:10

연결을 끊기 전에 로그인에 허용되는 최대 시간을 줄이십시오. 기본값 2 분은 인증되지 않은 연결 시도를 여는 데 너무 많은 시간입니다 (위 참조). 30 초 이상은 로그인에 충분한 시간입니다.

  • 기본값 : LoginGraceTime 2m
  • LoginGraceTime 30

3

이 IPTables 규칙을 사용합니다.

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

그러면 5 분 안에 4 개의 TCP / SYN 패킷이 IP 주소에서 22 번 포트로만 허용됩니다. 더 많은 시도를하면 5 분이 끝날 때까지 문이 닫힙니다.


무엇을 편집해야합니까?
timkofu

다음과 거의 동일 -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT합니다..
Alix Axel

Debian Jessie에서이 두 iptables 명령을 만들었지 만 동일한 IP 주소에서 2 초마다 SSH 로그인 시도를 볼 수 있습니다. 어떤 아이디어?
Alexey Ozerov

1

서버의 sshd_config 파일에 넣을 수있는 옵션이 있습니다.

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

유용합니다 (특히 이미 작성된 다른 제안과 결합 된 경우). 누군가가 계속 다시 연결하는 것이 사소한 문제이므로 실제로 자체적으로 문제를 해결하지는 않습니다.
Kromey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.