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

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



답변

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

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


답변

타사 도구를 사용하고 싶지 않습니다. 따라서 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


답변

이를 설정하기 위해 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

답변

이 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 분이 끝날 때까지 문이 닫힙니다.


답변

서버의 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.


답변