it-swarm-korea.com

SSH 보안을 위해 어떤 방법을 사용할 수 있습니까?

SSH 보안을 위해 어떤 방법을 사용할 수 있습니까?

44
Olivier Lalonde
  • 루트 로그인 비활성화 -대부분의 자동화 된 공격은 루트 계정에 집중되므로 해당 계정의 로그인을 허용하지 않는 것이 좋습니다.

  • 특정 그룹/사용자 만 허용 -시스템에 SSH로 연결할 수있는 사용자 및 그룹을 제한합니다.

  • IP 또는 IP 범위 제한 -SSH 공격으로부터 시스템을 보호하는 가장 효과적인 방법 중 하나입니다.

  • 키 기반 인증 사용 -Olivier에서 설명한대로

  • 사용 fail2ban - fail2ban 시도 된 SSH 로그인을 모니터링하고 실패한 횟수를 확인한 후 공격자의 IP 주소를 차단합니다. 정해진 기간. 이는 공격 속도를 늦출 수있는 매우 효과적인 방법입니다.

34
Mark Davidson

다른 답변은 서버 보안에 중점을 두지 만 중요한 것은 클라이언트 측에서도 일부 보호가 필요합니다.

  • / etc/ssh/ssh_config (또는 ~/.ssh/config)에서 StrictHostKeyCheckingyes 또는 ask로 설정하십시오. 연결하려는 서버가 예상 한 서버인지 확인하여 MITM (Man-in-the-Middle) 공격에 대한 보호 기능을 제공합니다.
  • DNS 영역에 레코드를 추가 할 수 있으면 SSHFP 레코드를 게시하고 VerifyHostKeyDNSyes 또는 ask로 설정하십시오. 클라이언트는 DNS에서 SSHFP를 가져 와서 지문을 확인합니다. (공격자가 DNS를 제어 할 경우 여전히 취약합니다.)
  • 강제 프로토콜 버전 2입니다./etc/ssh/ssh_config에서 Protocol 2를 설정하십시오. 기본값은 2,1이며 v2를 사용할 수없는 경우 v1로 되돌아 갈 수 있습니다.
  • 로그인시 암호보다 키를 선호하십시오. ssh 키에는 강력한 암호를 사용하십시오. 적절한 길이의 키 (비트 수)를 사용하십시오.
    • Ssh 키를 제공하는 사용자가있는 경우 키에서 john 을 실행하여 비밀번호 강도를 감사하십시오.
  • 키로거 및 숄더 서퍼를 피하기 위해 비밀번호를 입력하는 대신 하드웨어 토큰을 사용하여 키 잠금을 해제하십시오.
  • UseBlacklistedKeysno인지 확인하십시오 (기본값). 이것은 약한 데비안 openssl 패키지에서 생성 된 '블랙리스트'키를 사용하지 못하게합니다. ssh-vulnkeys로 호스트 및 사용자 키를 확인하십시오. 데비안 파생 시스템 (예 : 우분투)에서는 openssh-blacklist 및 openssh-blacklist-extra 패키지를 설치할 수 있습니다.
  • CheckHostIPyes (기본값)인지 확인하십시오. 이렇게하면 클라이언트가 known_hosts에 대해 호스트의 IP를 확인하여 DNS 스푸핑에 대한 보호 기능을 추가합니다.
  • HashKnownHostsyes로 설정하십시오. 이렇게하면 known_hosts 파일에서 정보가 유출되지 않습니다.
18
bstpierre

비밀번호 기반 로그인 비활성화

키 기반 인증 로 비밀번호 기반 인증을 바꾸면 다음을 방지 할 수 있습니다.

  • 무차별 암호 크래킹 시도.
  • 어깨 공격 : 암호를 입력하는 동안 사람들이 몰래 숨어 있습니다.
  • 주요 로거.
11
Olivier Lalonde

또 다른 것은 SSH에서 허용되는 사람이 거의없는 경우 누군가 SSH에 로그인 할 때마다 bashrc 메일로 통지합니다.

7
Aviah Laor

시작하려면 암호를 허용하지 않으며 RSA 키를 사용한 인증 만 허용해야합니다. 이것은 무차별 대입 공격을 불가능하게 만듭니다. 사람들 will 여전히 시도하지만 로그인 시도를 제한하고 대역폭을 절약하기 위해 포트를 변경하고 싶을 것입니다. 이 방법은 개인 키를 암호화하고 보호하기 위해 사용자를 신뢰하는 데 의존합니다.

원격으로 루트 로그인을 허용해서는 안됩니다. 로그온 한 후 su 또는 Sudo를 사용하십시오.

사람들이 게이트웨이 서버를 통해 ssh를 내부 서버로 터널링하지 못하게하는 것이 좋습니다. 내부 서버가 인터넷에 노출되는 것을 막을 수 있습니다.

SSH 버전 2를 사용해야합니다.

6
Magnus

SSH의 보안을 유지하기 위해 매우 중요한 요점에 대해 다른 답변을 말하는 사람은 없습니다. 사용자 교육. 당신이 무엇을하든간에 비린내가 생길 때 사용자가 현명하게 반응하는 법을 배우지 않으면 운명에 처하게됩니다. 최소한 사용자는 서버 키 처리 사업에 대해 알고 있어야합니다 (주어진 서버에 처음 연결할 때 해야합니다 . 신뢰할 수있는 소스이며 SSH가 변경된 키에 대해 경고하면 경고를 우회해서는 안됩니다 ).

기술은 지금까지만 가능합니다. 프로세스에 사람이 참여하는 한 해당 사용자에 대한 보안 인식 수준은 달성하려는 보안 수준에 대한 제한입니다.

6
Thomas Pornin

서버에는 클라이언트 키에 암호를 요구하는 새로운 옵션이 있습니다. 나는 이것이 매우 좋은 생각이라고 생각합니다. 그러나 여전히 암호 문구의 복잡성을 알지 못하므로 사용자가 클라이언트를 재 컴파일하여 잠재적으로 위조 할 수 있습니다.

3
nowen

모든 사람들이 말한 것처럼 : 항상 루트 로그인을 비활성화하고 기본 포트 번호를 변경하십시오 (그러나 일부 sftp 클라이언트를 사용하는 것이 어려울 수는 있지만) 키 기반 인증 만 허용합니다.

또한 sshd_config에서 키 크기를 변경하거나 ssh-keygen을 실행할 때 키 비트 크기를 지정하는 경우 때때로 지정한 키 크기를 검토해야합니다.

Ssh-keygen이 기본적으로 1024 비트 RSA 키를 생성하도록 설정했을 때 -b 옵션을 사용하여 1536 비트 키를 생성했습니다. 시간이 지남에 기본값은 2048 비트 키를 생성하도록 변경되었으며 여전히 1536 비트 키를 생성했습니다.

2
ewalshe