SSH : 약한 암호를 비활성화하는 방법?


47

우리 조직의 보안 팀은 약한 키를 발급하여 약한 암호를 비활성화하라고 말했습니다.

  arcfour
  arcfour128
  arcfour256

그러나 ssh_config 및 sshd_config 파일에서 이러한 암호를 찾으려고했지만 주석이 달린 것을 발견했습니다.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

SSH에서 이러한 암호를 비활성화하려면 다른 곳을 확인해야합니까?


SSH 서버의 경우 /etc/ssh/sshd_configSSH 클라이언트의 경우 /etc/ssh/ssh_config. 당신 Cipher은 각각에 줄 을 찾고 , 예를 들어 방금 Cipher aes256-ctr지정했습니다. 그런 다음 /etc/init.d/sshd restart동등한 systemd 명령을 통해 또는 SSH를 통해 SSH를 다시 ​​시작하십시오 .
ron

1
sshd_configSSH 보안에 정말로 관심이 있다면 모든 매개 변수에 대해 알고 싶어합니다 . 그렇지 않으면 모든 보안 극장이 될 수 있습니다.
ron

@ron 두 번째 코멘트는 흥미로운 것입니다. 예를 들어 당신이 의도 한 것을 설명 할 수 있습니까?
Jerome

ciphers목록은 SSH를 올바르게 구현 한 많은 설정 중 하나입니다. 프로토콜, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel 등. 리눅스 배포판에 구현 된대로 기본 설정을 사용할 수 있지만Ignornance is bliss only up until you have a problem
ron

답변:


40

키워드 를 ssh_config사용하여 명시적인 암호 목록을 설정하지 않은 경우 (client-side) 및 (server-side) Ciphers에 따른 기본값 은 다음과 같습니다.man 5 ssh_configman 5 sshd_config

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            aes128-gcm@openssh.com,aes256-gcm@openssh.com,
            chacha20-poly1305@openssh.com,
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

arcfour 암호가 있는지 확인하십시오. 따라서보다 제한적인 값을 명시 적으로 설정해야 할 수도 있습니다 Ciphers.

ssh -Q cipher클라이언트에서 클라이언트가 지원할 수있는 체계를 알려줍니다. 이 목록은에 지정된 암호 목록의 영향을받지 않습니다 ssh_config. 암호를 ssh_config제거해도의 출력에서 ​​제거되지 않습니다 ssh -Q cipher. 또한, 명시 적으로 암호를 지정하는 옵션 ssh과 함께 사용 -c하면 설정 한 제한된 암호 목록이 무시되고 ssh_config약한 암호를 사용할 수 있습니다. 이것은 ssh더 강력한 암호를 지원하지 않는 오래된 SSH 서버와 통신 하기 위해 클라이언트 를 사용할 수있는 기능입니다 .

nmap --script ssh2-enum-algos -sV -p <port> <host> 서버가 지원하는 구성표를 알려줍니다.


안녕하세요, ssh_config에서 특정 암호를 언급하고 ssh 서비스를 다시 시작했지만 ssh -Q cipher <hostname>을 수행했을 때 구성에 관계없이 이전에 얻는 모든 암호를 계속 얻습니다.
rɑːdʒɑ

1
죄송합니다 ssh_config. 클라이언트 측 구성이고 서버 측 구성은 sshd_config입니다. (또한라고 Ciphers있습니다.)
울리히 슈바르츠

예, 알고 있지만 암호를 grep하면 ssh_config에서 찾았으므로 변경했습니다. 프로덕션 서버와 나는 확실하지 않다 아무것도 아니에요
rɑːdʒɑ

기본값은 배포판마다 다를 수 있습니다.
Jonas Schäfer

ssh -Q이전 버전 에는없는 것 같습니다 . (예에 CentOS 6의 오픈 SSH v5.3p1)
Tomofumi

30

RC4를 비활성화하고 SSH 서버에서 보안 암호를 사용하려면 다음을 하드 코딩하십시오. /etc/ssh/sshd_config

ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

또는 암호를 지시하지 않고 안전하지 않은 암호를 제거하려는 경우 명령 행에서 대신 sudo 모드로 실행하십시오.

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config

다음과 같은 방법으로 서버에서 현재 사용중인 암호를 확인할 수 있습니다.

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

ssh 클라이언트가 이러한 암호를 사용할 수 있는지 확인하십시오.

ssh -Q cipher | sort -u

목록을 볼 수 있습니다.

SSH 클라이언트가 원격 서버와 보안 암호 만 협상하도록 지시 할 수도 있습니다. 에서 /etc/ssh/ssh_config설정 :

Host *
    ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

위의 스 니펫은 여기 에서 제공 됩니다
서버 설정을 테스트하려면 ssh-audit를 사용할 수 있습니다


20

암호 목록을 명시 적으로 지정하는 문제는 새 암호가 나오면 수동으로 추가해야한다는 것입니다. 대신 제거하려는 암호를 나열하고 각 개별 암호가 아닌 목록 앞에 '-'문자를 추가하십시오. 따라서이 경우 암호 행은 다음과 같아야합니다.

Ciphers -arcfour*

또는 원하는 경우 :

Ciphers -arcfour,arcfour128,arcfour256

Ciphers 옵션 의 sshd_config 매뉴얼 페이지에서 (2017-03-20에 릴리스 된 OpenSSH 7.5 이후) :

지정된 값이 '+'문자로 시작하면 지정된 암호가이를 바꾸지 않고 기본 세트에 추가됩니다. 지정된 값이 '-'문자로 시작하면 지정된 암호 (와일드 카드 포함)가 기본 세트에서 바뀌지 않고 제거됩니다.

이는 KexAlgorithmsMAC 옵션 에도 적용됩니다 .


2

/ etc / ssh / sshd_config 파일에서 암호를 활성화 / 비활성화해야합니다.이 파일을 편집 한 후 서비스를 다시로드해야합니다

systemctl reload sshd
/etc/init.d/sshd reload

그런 다음 클라이언트에서이 명령을 실행하면 어떤 스키마를 지원하는지 알 수 있습니다

ssh -Q cipher

서버에서 arcfour 암호가 활성화되어 있는지 확인하려면이 명령을 실행하십시오.

ssh localhost -c arcfour

서버에서 arcfour128 암호가 사용 가능한지 여부를 확인하려면이 명령을 실행하십시오.

ssh localhost -c arcfour128

이 단계는 위의 답변에서 누락되었습니다
Saras Arya

1

약한 ssh 암호를 비활성화하는 방법, Fedora 29에서 100 % 작동 테스트. 문제 : Nessus에서 내 samba4 서버가 강력한 암호 aes256-cbc 및 aes128-cbc를 사용하지 않는다고보고했습니다. 그래서 나는 그 라인을 넣어/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,curve25519-sha256@libssh.org

voilà! ...이 명령이 작동하기 때문에 여전히 cbc 암호를 사용합니다.

ssh -c aes256-cbc samba4

그래서 유용한 systemd를 확인하고 sshd 서비스가 암호를 위해 다른 파일을 사용하고 있음을 발견했습니다.

/etc/crypto-policies/back-ends/opensshserver.config

안전을 위해 파일 백업

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

이를 편집하고 cbc 암호를 제거하십시오. 서비스를 다시 시작하십시오

systemctl restart sshd

그리고 마지막으로 테스트하고 잘 작동합니다.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.