SSH 데몬과 관련하여 가능한 보안 문제는 무엇입니까?


14

외부에서 우분투 10.04 사무실 PC에 SSH로 연결할 수 있기를 원합니다. 따라서 PC에서 SSH 데몬을 시작하려고합니다. 알고 있어야 할 보안 문제, 가능한 결함, 특정 구성 설정 등은 무엇입니까?

중요한 경우 : 이것은 기본적으로 본인의 용도로만 사용되며, 다른 사람들이이를 사용한다고 생각하지 않습니다. 주로 Windows 7 / Vista / XP 환경의 Ubuntu 10.04 PC입니다.


1
OpenVPN 설치를 고려하고 ssh 연결을 위해 PC에 VPN 터널을 만들 수도 있습니다. 이 방법으로 ssh 포트를 월드로 열 필요가 없습니다.
링커 3000

@ Linker3000 감사합니다! VPN에 대해 꽤 불쾌한 경험이 있었지만 생각을하겠습니다.
ev-br

@Zhenya "@"과 사용자 이름을 공백으로 두지 않으면 응답한다는 알림을받습니다. ;) 당신은 코멘트를 받게됩니다 그래서 내가 @Zhenya를 사용하지만, 내가 Zhenya @ 사용하지 않을 때
BloodPhilia

@Zhenya 그리고 지금 당신은 그것을 다시하고 XD
BloodPhilia

@Linker, OpenVPN이 SSH보다 안전한 이유를 좀 더 자세히 설명해 주시겠습니까?
Arjan

답변:


20

가장 큰 관심사는 SSH를 통해 컴퓨터의 관리자로 로그인하는 사람들입니다. 암호를 추측하기 쉬운 경우 무차별 대입으로 수행 할 수 있습니다.

몇 가지 안전 조치를 취할 수 있습니다. 아래는 SSH 서버를 설정할 때 항상 취하는 몇 가지 조치와 추가 조치입니다.

  1. 10 자 이상의 대소 문자, 숫자 및 기타 문자로 구성된 강력한 암호를 사용하십시오.

  2. 사용자를 자신의 홈 디렉토리에 감금하십시오. 투옥 된 사용자는 홈 디렉토리 외부에있는 파일에 액세스하거나 편집 할 수 없습니다. 따라서 사용자는 주요 시스템 파일에 액세스하거나 편집 할 수 없습니다. 온라인에서 사용자를 수감하는 방법에 대한 많은 자습서를 찾을 수 있습니다. 그들 대부분은 JailKit을 사용 합니다 . 이러한 튜토리얼의 예는 여기 에서 찾을 수 있습니다 . 또는 OpenSSH 서버의 기본 ChrootDirectory지시문 을 사용할 수도 있습니다 . 이에 대한 자습서의 예는 여기 에서 찾을 수 있습니다 .

  3. Fail2Ban을 설치 하십시오 . Fail2Ban은 인증 로그에서 잘못된 항목을 검사하는 프로그램입니다. 특정 제한에 도달하면 사전 설정된 시간 동안 해당 특정 IP에 대한 방화벽 블록을 추가합니다. SSH를 사용하여 Fail2Ban을 설정하는 방법에 대한 온라인 자습서도 온라인에서 찾을 수 있습니다 . 예를 들면 다음과 같습니다 . Fail2Ban 홈페이지에는 훌륭하고 완전한 하우투도 있습니다.

  4. SSH를 통한 루트 로그인을 비활성화하십시오. 이것은 시스템의 거의 모든 파일에 액세스 할 수있는 사용자이므로 쉘 로그인을 비활성화하는 것이 좋습니다. 최신 버전의 Ubuntu에서는 루트 사용자가 자동으로 비활성화되지만 SSH 액세스를 비활성화해도 아무런 문제가 없습니다. 파일을 편집하면됩니다 /etc/ssh/sshd_config. 다음 줄을 찾아 앞에 #가 ​​없는지 확인하십시오.

    #PermitRootLogin no
    
  5. 비표준 포트 사용 (예 : 22가 아님) 라우터의 포트 전달 (예 : 22-> 22 대신 16121-> 22)을 통해 수행되거나 SSH 데몬이 다른 포트에서 수신 대기하도록합니다. 이렇게하면 악의적 인 사용자가 SSH 서비스를 쉽게 탐지 할 수 없게됩니다. 파일을 편집하면됩니다 /etc/ssh/sshd_config. 다음 줄을 찾아 22를 원하는 포트로 변경하십시오. 나중에 라우터에 올바른 포트를 전달하는 것을 잊지 마십시오.

    Port 22
    
  6. 비밀번호를 사용하여 로그인하지 마십시오. 비밀번호 외에도 SSH는 개인 키를 사용하여 로그인 할 수 있습니다. 이는 SSH 시스템의 SSH에 액세스하는 키가 컴퓨터에 저장되어 있음을 의미합니다. 연결을 시도하면 SSH 클라이언트는 비밀번호 인증 대신 키를 사용하여 서버에 로그인합니다. 인증 키는 암호보다 암호 적으로 훨씬 강력하므로 크랙하기가 쉽지 않습니다. 여러 온라인 자습서 온라인으로 SSH와 키 기반 인증을 설정하는 방법에 대한도 발견된다, 예 것이다 이것 . PuTTY가있는 창에서 SSH 를 사용하는 경우이 링크 에서 PuTTY 하우투를 확인하십시오 . 키 기반 인증을 설정 한 후 파일을 편집하여 비밀번호 인증을 비활성화 할 수 있습니다./etc/ssh/sshd_config . 다음 줄을 찾아 앞에 #이 없는지 확인하십시오.

    #PasswordAuthentication no
    
  7. 선택적으로, @ Linker3000이 그의 의견에서 언급했듯이 SSH를 통해 액세스하려는 PC에 VPN 터널 을 설정 한 다음 SSH 서버에서 로컬이 아닌 네트워크 액세스를 허용하지 않을 수 있습니다. 그렇게하면 VPN 연결이없는 외부 장치는 SSH 서버에 액세스 할 수 없습니다. 모든 호스트를 거부 한 다음 로컬 네트워크 IP 만 로그인하도록 허용하면됩니다. 편집 /etc/hosts.deny하고 다음을 추가하면됩니다.

    sshd: ALL
    

    /etc/hosts.allow다음 을 추가하십시오.

    sshd: 192.168.1.*
    

    여기서 IP는 로컬 네트워크 중 하나와 일치합니다. *은 와일드 카드이므로로 시작하는 모든 IP 주소 192.168.1.가 허용됩니다. 이것이 작동하지 않으면 배포판 ssh대신을 사용할 수 있습니다 sshd. 이 경우, 당신은 시도해야 ssh: 192.168.1.*하고 ssh: ALL대신.

  8. 당신은 특정 호스트의와 동일한 작업을 수행 만이 허용 될 수 있습니다 /etc/hosts.allow/etc/hosts.deny6에 설명 된대로, 그러나에하는 것은 /etc/hosts.allow다음과 같은 라인과 공백으로 구분 할 수 있도록 모든 호스트를 추가 :

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. 특정 사용자 만 SSH 서버에 액세스하도록 허용하십시오. 파일을 편집하면됩니다 /etc/ssh/sshd_config. 다음 줄을 찾아 앞에 #가 ​​없는지 확인하십시오. 존재하지 않는 경우 작성하십시오. 예를 들어 john, tom 및 mary 만 허용하려면 다음 행을 추가 / 편집하십시오.

    AllowUsers john tom mary
    

    예를 들어, john, tom 및 mary에 대한 액세스를 거부하려는 경우 특정 사용자를 거부 할 수도 있습니다.이 행을 추가 / 편집하십시오.

    DenyUsers john tom mary
    
  10. 들어오는 연결에는 프로토콜 SSH2 만 허용하십시오. SSH 프로토콜에는 두 가지 버전이 있습니다. SSH1은 보안 문제가 있으므로 SSH 2를 사용하는 것이 좋습니다. 파일을 편집하여 강제로 수행 할 수 있습니다 /etc/ssh/sshd_config. 다음 줄을 찾아 앞에 #가 ​​없는지 확인하십시오. 존재하지 않는 경우 작성하십시오.

    Protocol 2,1
    

    , 1을 제거하여 라인이

    Protocol 2
    
  11. 비밀번호가 설정되지 않은 사용자의 로그인을 허용하지 마십시오. 파일을 편집하여 강제로 수행 할 수 있습니다 /etc/ssh/sshd_config. 다음 줄을 찾아 앞에 #가 ​​없는지 확인하십시오. 존재하지 않는 경우 작성하십시오.

    PermitEmptyPasswords no
    
  12. 간단하고 말할 필요는 없지만 여러 경우에 결정적인 것으로 입증되었지만 소프트웨어를 최신 상태로 유지하십시오. 설치된 패키지 / 소프트웨어를 정기적으로 업데이트하십시오.


= SSH 구성 파일을 편집 한 후에는 변경 사항을 적용하기 위해 데몬을 다시 시작해야합니다. 다음을 실행하여 데몬을 다시 시작하십시오.

sudo /etc/init.d/ssh restart

또는

sudo /etc/init.d/sshd restart

사용중인 Linux 배포에 따라


2
sudo service ssh restart우분투에서.
ulidtko

@ulidtko이 질문은 더 일반적인 질문과 병합되었으므로 답변을 더 일반적이고 다른 배포판에 적합하게 만들었습니다. 이것은 거의 모든 배포판에서 작동하지만 옳습니다.
BloodPhilia

@BloodPhilia 상세하고 접근 가능한 답변에 대해 대단히 감사합니다! 요점에 대한 몇 가지 추가 질문 : 1. 권한을 제한하기 위해 사용자를 속이는 장점은 무엇입니까? 예를 들어 '사용자'로 로그인하면 / home 외부의 항목에 대한 읽기 권한 만 있지만 쓰기 또는 실행 액세스는 없습니다 (Ubuntu 기본값에 따라). 방랑하는 것보다 낫거나 나쁜가요? 2. 인증 로그는 일반적으로 어디에 있습니까? 한 번에 수동으로 / grep을 통해 검사 할 수 있기를 바랍니다.
ev-br

@BloodPhilia 4. sshd가 서버의 비표준 포트 (예 : 1234)를 수신하게하면 클라이언트의 Linux 명령 줄에서이 서버에 연결하는 방법은 무엇입니까? 표준 ssh 명령에는 일종의 스위치가 필요합니까?
ev-br

1
@ulidtko : Upstart로 sudo restart ssh.
Hello71

7

몇 가지 팁 :

  1. 암호보다 훨씬 안전한 키 기반 인증 사용
  2. SSH 2 만
  3. 루트 로그인 비활성화
  4. 편집증의 경우 표준 포트 22에서 포트를 변경하십시오.
  5. 편의를 위해 도구를 사용하여 IP를 Dyndns 또는 ilk와 같은 DNS 이름에 매핑하십시오. 같은 IP로 오랫동안 갈 수는 있지만 여행을 한 번에 필요하면 새로운 것을 발급받을 것입니다.
  6. 물론 방화벽을 통해 SSH에 필요한 포트 (포트 22 또는 비표준)를 허용하십시오.

1
다시 5 : 집 밖의 컴퓨터에 전자 메일 계정이있는 경우 주기적으로 집 컴퓨터에서 해당 주소로 메시지를 보내도록 크론 작업을 설정할 수 있습니다. 귀하의 홈 IP는 헤더에 있습니다. DNS만큼 편리하지는 않지만 사용할 수 있습니다.
garyjohn

ISP에 연락하여 고정 IP 주소 가격을 요청할 수도 있습니다. 이것은 지금까지 가장 간단한 솔루션이지만 일반적으로 동적 DNS보다 비쌉니다
Steen Schütt

2

주요 위험은 ssh 서버를 실행하고 계정에 약한 암호를 넣는 것을 잊어 버리는 것입니다. 체계적으로 일반 계정 (같은 이름 시도해 거기 공격자가 있습니다 webmasterbob)과 약한 암호는. 당신은 암호 로그인을 금지함으로써 이러한 위험 제거 (둘 수 PasswordAuthentication no에를 sshd_config, 또한 넣어 두 UsePAM Nossh를위한 PAM 설정 또는 해제 암호 인증). 중간 측정은 ssh 로그인을 사용 AllowUsers하거나 사용하지 않는 사용자의 화이트리스트로 제한하는 것 AllowGroups입니다sshd_config .

비밀번호 로그인 허용 자체는 보안 문제가 아닙니다. 약한 비밀번호와 스누핑 된 비밀번호는 문제이며 ssh 서버에서 비밀번호 인증을 허용하는 것이 인 에이 블러입니다. 암호 스누핑을 방지하려면 완전히 신뢰하지 않는 컴퓨터에서 암호를 입력하지 마십시오. 그러나 컴퓨터를 신뢰하는 경우 개인 키도 설치 한 다음 암호 인증이 필요하지 않습니다.

머신에서 ssh 클라이언트를 사용하기위한 최소 요구 사항은 ssh 통신을 적극적으로 하이재킹하지 않을 것이라고 확신하는 것입니다 (클라이언트 머신에서 실행중인 경우 중간자 공격 가능) 깨끗한 ssh 클라이언트에 명령을 입력하고 있지만 클라이언트는 실제로 인증 데이터를 충실하게 전송하지만 나중에 트로이 목마를 통신에 삽입합니다. 이것은 암호 스누 퍼가 없다는 것을 신뢰하는 것보다 약한 요구 사항입니다 (일반적으로 키 로거를 통해 수행되지만 어깨 서핑과 같은 덜 자동화 된 방법이 있습니다). 최소한의 신뢰를 가지고 있지만 스 누퍼를 여전히 두려워하는 경우 일회용 암호를 사용할 수 있습니다 (OpenSSH는 PAM 지원을 통해 암호를 지원합니다).

물론 네트워크 서버뿐만 아니라 클라이언트와 같은 제어 시스템 외부의 시스템과 상호 작용하는 다른 프로그램과 마찬가지로 보안 업데이트를 따라야합니다.


2

세 가지 생각이 떠 올랐습니다.

  1. 기본 포트 22를 열면 곧 감지되고 PC에 무차별 대입 공격이 가해집니다. 다른 포트를 수신하거나 방화벽에서 포트 매핑을 수행하도록 sshd를 구성하는 것이 좋습니다. 이것은 총알이 아니지만 적어도 동일한 CPU 사이클을 절약합니다.

    포트 12345

  2. 비밀번호 인증을 명시 적으로 비활성화하고 키만 사용하십시오. 모든 키는 기억할 수있는 가장 복잡한 암호보다 낫습니다.

    비밀번호 인증 번호

  3. 우분투에서 기본적으로 루트 사용자가 비활성화되어 있지만 루트 로그인을 명시 적으로 비활성화하십시오.

    허가 루트 로그인

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