denyhosts 또는 fail2ban을 사용하여 모든 루트 로그인 시도를 차단하는 방법은 무엇입니까?


8

나는 현재 루트를 사용하여 모든 ssh 로그인을 차단합니다. 그러나 여분의 마일을 가고 루트로 로그인하려고 시도한 클라이언트의 IP 주소를 차단하고 싶었습니다. 현재 denyhosts 및 fail2ban 설정 및 작동이 있으며 denyhosts 및 / 또는 fail2ban을 사용하여 루트로 로그인하려는 사용자의 IP 주소를 차단할 수 있습니까?

답변:


2

배포판에 따라 편집 섹션을 /etc/fail2ban/jail.conf 업데이트하여 [ssh]다음과 같이 표시하십시오.

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

필요에 따라 파라미터를 변경하십시오. 특별히 루트를 차단하지는 않지만 모든 시도가 실패합니다. 와에주의 maxretry하십시오 bantime. 암호 maxtretry를 낮게 설정 한 상태에서 암호 를 낮게 설정하면 bantime. fail2ban을 다시 시작하십시오.

동적 IP에서 많은 시도가 발생하여 나중에 합법적 인 사용자를 차단할 수 있기 때문에 IP를 영원히 차단하려고하지는 않습니다.

(일부 배포판은 수정을위한 jail.options 파일을 제공합니다. 이것은 conf를 덮어 쓰는 업데이트의 영향을받지 않기 때문에 변경 사항을 적용하기에 선호되는 곳입니다.)


4
좋은 정보이지만 사용자 루트를 사용하여 모든 로그인을 차단하는 방법을 알고 싶었다고 생각합니다. 아마 당신은 그것을 잊었을 것입니다.
Mose

17

이 코드를 새 파일 /etc/fail2ban/filter.d/sshd-root.conf에 복사하십시오.

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

실패한 루트 로그인 시도를 정확하게 식별하기 위해 failregex를 편집해야 할 수도 있습니다. 다음을 사용하십시오.

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

올바른 로그 항목을 식별하는지 테스트하십시오.

그런 다음 새 필터를 사용하려면 jail.local을 편집해야합니다.

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

분명히 필요에 따라이 값을 조정해야합니다. 위의 설정은 루트로 3 번 로그온을 시도한 후 문제가있는 IP 주소에서 들어오는 모든 패킷을 삭제하고 일주일 후에 다시 IP를 해제합니다.


1
이것은 실제로 질문에 대답하기 때문에 실제로 받아 들여질만한 대답이 될 가치가 있습니다.
peelman

이것은 정답입니다. sshd 구성에서 루트 로그인을 비활성화 한 다음 jail.conf에서 maxretry를 1로 설정하는 것이 가장 좋습니다.
anteatersa

1

기본값 /etc/fail2ban/filter.d/sshd.conf에는 이미 AllowUsers 및 DenyUsers에 대한 정규식이 있으므로 ...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

다음은 :

  • exampleusername외부 IP에서 연결 허용
  • 그리고 root또는 로컬 네트워크에있는 모든 연결 (192.168.0. *)

`/ etc / ssh / sshd_config '줄 :

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

그리고 /etc/fail2ban/jail.conf:

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999

0

SSH 로그인을 어떻게 차단 했습니까? / bin / false 또는 sshd_config DenyUsers 옵션?

나는 머리에서 대답을 생각할 수 없지만 IIRC denyhosts는 로그 파일을 구문 분석하므로 로그 파일을 비활성화 한 상태에서 루트에 로그인하려고 시도한 후 로그 파일에 실패한 항목이 있는지 확인하십시오.


2
ssh 구성 파일을 편집하고 yes에서 no로 /etc/ssh/sshd_config변경 PermitRootLogin했습니다. 이것이 관련이 있는지는 모르겠지만 특정 사용자가 sftp를 사용하여 로그인하고 ssh는 허용하지 않도록 rssh를 설치했습니다.
samwell

실패한 사용자 로그인 시도가있는 경우 ssh 로그 파일을 점검 했습니까?
MitziMeow

예, 인식 할 수없는 많은 다른 IP 주소에 의한 많은 사용자 로그인 시도가 실패했음을 알 수 있습니다.
samwell

그러면
거부 호스트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.