SSH에서 로그인 지연을 제공하는 방법


11

ssh 통해 로그인하는 동안 로그인 지연을 제공하고 싶었지만 동일한 방법으로 몇 가지 방법을 시도했지만 원하는 결과를 찾을 수 없었습니다.

주어진 링크에서 제공하는 단계를 시도했습니다.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

내 컴퓨터에 pam 모듈이 설치되어 있지 않으므로 pam 파일과 관련된 수정을 할 수 없습니다

그래서 어떤 몸도 다른 방법으로 제안 할 수 있습니까?

임베디드 플랫폼에서 실행중인 리눅스 커널이 있습니다.


왜 지연을 도입하고 싶습니까? 궁극적 인 목표는 무엇입니까?
CVn

나는 무차별 대입 공격의 가능성을 막고 싶었다.
Ram

3
새로운 연결을 지연시키는 것만으로도 무차별 대입 공격을 막을 수는 없습니다. 실제 문제를 해결하도록 설계된 도구를 살펴 봐야합니다. 주어진 명령을 실행하여 반복되는 로그 항목에 반응하도록 특별히 설계된 fail2ban 을 살펴 보는 것이 좋습니다. 종종 무단 액세스를 얻는 무차별 대입 시도를 방지하기 위해 사용됩니다.
CVn

Michael은 훌륭하지만 e와 함께 기존 인프라를 사용하여이를 수행해야합니다 .ssh를 통해 연결할 때마다 지연을 어떻게 도입 할 수 있습니까?
Ram

2
야, fail2banssh 로그 및 iptables 규칙과 같은 기존 인프라를 사용합니다.
Shadur

답변:


11

방법 # 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

용법

실패 지연을 작성하려면 sshdpam 구성 파일에 이와 같은 행을 추가하면 됩니다. 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

참고 문헌


@slm에게 감사하지만 다시 한 번 pam 모듈을 설치할 수 없으며 sshd 인증은 pam이 아닙니다. 다른 방법을 제안 하시겠습니까?
Ram

@AmitSinghTomar-죄송합니다. 답변을 확장했습니다. 귀하의 질문뿐만 아니라 모든 방법을 다루는 정식 답변을 작성하려고했습니다.
slm

당신의 detailes 대답을 위해 다시 @slm에게 감사합니다, 나는 당신이 제안한 두 번째 방법을 따르는 것에 관심이 있습니다.
Ram

@AmitSinghTomar-아니요 4 회 시도 후에 만 ​​지연되어야합니다. 를 --hitcount 4초과하면 규칙에 따라 잘못된 IP 주소가 60 초 동안 블랙홀됩니다.
slm

내가 당신에게서 알고 싶었던 한 가지 방법, 당신의 세 번째 방법 (PAM)에 대해 pam을 통해 ssh 인증이 발생해야합니까?
Ram

3

비밀번호를 비활성화합니다. 암호도없고 무차별 공격도 없습니다.

ssh 키를 사용하여 로그인 할 수 있습니다. 더 안전하고 해킹하기가 더 어려워 야합니다.


0

를 사용하여 Ubuntu 16.04 openssh-server 새로 설치하면 이미 0보다 큰 잘못된 비밀번호 시도가 지연됩니다. 지연 시간이 1 초 이상인 것 같습니다 .

문자를 0으로 잘못 입력하면 지연이 없으므로 공격자는 암호가 실제로 빈 문자열이 아닌 경우 빈 문자열이 아니라고 즉시 판단합니다. 빈 문자열은 아마도 암호로 허용되지 않기 때문에 빈 문자열을 시도하지 않을 것이라는 것을 이미 알고 있습니다.

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