방법 # 1-비밀번호 로그인 비활성화
비밀번호 로그인을 허용 할 필요가없는 경우 비밀번호를 허용하지 않으면 원하는 효과를 얻을 수 있습니다. 이 줄을 /etc/ssh/sshd_config
다음에 추가하면됩니다 .
PasswordAuthentication no
또한 다음에서 Match
연산자를 사용하여 특정 사용자에게 비밀번호 사용을 제한 할 수 있습니다 sshd_config
.
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
방법 # 2-iptables
또한 iptables
실패한 로그인 시도를 추적하고 특정 임계 값 후에 삭제를 시도 할 수도 있습니다 . 이것은 hostelfu의 예제와 비슷하지만 이해하기 쉽습니다.
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
참고 : 첫 번째 줄은 기본적으로 ssh 포트에서 새 연결 시도에 사용되는 패킷에만 적용되는 규칙을 만듭니다. 두 번째 줄은 60 초 내에 IP에서 4 번 이상의 시도가있을 경우 해당 IP의 모든 트래픽은 블랙홀되어야합니다. 이 솔루션은 다른 사용자 계정에 대한 시도 여부와 상관 없습니다.
방법 # 3-PAM 사용
PAM을 사용할 수 없다고 말했지만, 그렇게하면 로그인 시도 실패를 지연시킬 수 있습니다. ssh 로그인 실패를 단순히 지연시키는 것이 목적이라면 PAM 모듈을 사용할 수 있습니다 pam_faildelay
. 이 PAM 모듈은 일반적으로 기본 믹스에 포함되어 있습니다.
Fedora 19 시스템에서는 기본 설치의 일부입니다.
예
관련 파일을 찾으십시오 pam_faildelay
.
$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz
어떤 RPM이 제공되는지 확인하십시오.
$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686
용법
실패 지연을 작성하려면 sshd
pam 구성 파일에 이와 같은 행을 추가하면 됩니다. Fedora / CentOS / RHEL 시스템에서이 파일은 다음 위치에 있습니다 /etc/pam.d/sshd
.
10 초 지연을 만들려면
auth optional pam_faildelay.so delay=10000000
60 초 지연 :
auth optional pam_faildelay.so delay=60000000
예
위의 방법을 사용하여 20 초 지연으로 PAM sshd
구성 파일을 다음과 같이 변경했습니다 .
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_faildelay.so delay=20000000
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
이제 로그인하면 :
$ date
Tue Dec 17 09:16:30 EST 2013
$ ssh blah@localhost
blah@localhost's password:
Permission denied, please try again.
blah@localhost's password:
...Control + C....
$ date
Tue Dec 17 09:16:50 EST 2013
참고 문헌