외부에서 우분투 10.04 사무실 PC에 SSH로 연결할 수 있기를 원합니다. 따라서 PC에서 SSH 데몬을 시작하려고합니다. 알고 있어야 할 보안 문제, 가능한 결함, 특정 구성 설정 등은 무엇입니까?
중요한 경우 : 이것은 기본적으로 본인의 용도로만 사용되며, 다른 사람들이이를 사용한다고 생각하지 않습니다. 주로 Windows 7 / Vista / XP 환경의 Ubuntu 10.04 PC입니다.
외부에서 우분투 10.04 사무실 PC에 SSH로 연결할 수 있기를 원합니다. 따라서 PC에서 SSH 데몬을 시작하려고합니다. 알고 있어야 할 보안 문제, 가능한 결함, 특정 구성 설정 등은 무엇입니까?
중요한 경우 : 이것은 기본적으로 본인의 용도로만 사용되며, 다른 사람들이이를 사용한다고 생각하지 않습니다. 주로 Windows 7 / Vista / XP 환경의 Ubuntu 10.04 PC입니다.
답변:
가장 큰 관심사는 SSH를 통해 컴퓨터의 관리자로 로그인하는 사람들입니다. 암호를 추측하기 쉬운 경우 무차별 대입으로 수행 할 수 있습니다.
몇 가지 안전 조치를 취할 수 있습니다. 아래는 SSH 서버를 설정할 때 항상 취하는 몇 가지 조치와 추가 조치입니다.
10 자 이상의 대소 문자, 숫자 및 기타 문자로 구성된 강력한 암호를 사용하십시오.
사용자를 자신의 홈 디렉토리에 감금하십시오. 투옥 된 사용자는 홈 디렉토리 외부에있는 파일에 액세스하거나 편집 할 수 없습니다. 따라서 사용자는 주요 시스템 파일에 액세스하거나 편집 할 수 없습니다. 온라인에서 사용자를 수감하는 방법에 대한 많은 자습서를 찾을 수 있습니다. 그들 대부분은 JailKit을 사용 합니다 . 이러한 튜토리얼의 예는 여기 에서 찾을 수 있습니다 . 또는 OpenSSH 서버의 기본 ChrootDirectory
지시문 을 사용할 수도 있습니다 . 이에 대한 자습서의 예는 여기 에서 찾을 수 있습니다 .
Fail2Ban을 설치 하십시오 . Fail2Ban은 인증 로그에서 잘못된 항목을 검사하는 프로그램입니다. 특정 제한에 도달하면 사전 설정된 시간 동안 해당 특정 IP에 대한 방화벽 블록을 추가합니다. SSH를 사용하여 Fail2Ban을 설정하는 방법에 대한 온라인 자습서도 온라인에서 찾을 수 있습니다 . 예를 들면 다음과 같습니다 . Fail2Ban 홈페이지에는 훌륭하고 완전한 하우투도 있습니다.
SSH를 통한 루트 로그인을 비활성화하십시오. 이것은 시스템의 거의 모든 파일에 액세스 할 수있는 사용자이므로 쉘 로그인을 비활성화하는 것이 좋습니다. 최신 버전의 Ubuntu에서는 루트 사용자가 자동으로 비활성화되지만 SSH 액세스를 비활성화해도 아무런 문제가 없습니다. 파일을 편집하면됩니다 /etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 앞에 #가 없는지 확인하십시오.
#PermitRootLogin no
비표준 포트 사용 (예 : 22가 아님) 라우터의 포트 전달 (예 : 22-> 22 대신 16121-> 22)을 통해 수행되거나 SSH 데몬이 다른 포트에서 수신 대기하도록합니다. 이렇게하면 악의적 인 사용자가 SSH 서비스를 쉽게 탐지 할 수 없게됩니다. 파일을 편집하면됩니다 /etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 22를 원하는 포트로 변경하십시오. 나중에 라우터에 올바른 포트를 전달하는 것을 잊지 마십시오.
Port 22
비밀번호를 사용하여 로그인하지 마십시오. 비밀번호 외에도 SSH는 개인 키를 사용하여 로그인 할 수 있습니다. 이는 SSH 시스템의 SSH에 액세스하는 키가 컴퓨터에 저장되어 있음을 의미합니다. 연결을 시도하면 SSH 클라이언트는 비밀번호 인증 대신 키를 사용하여 서버에 로그인합니다. 인증 키는 암호보다 암호 적으로 훨씬 강력하므로 크랙하기가 쉽지 않습니다. 여러 온라인 자습서 온라인으로 SSH와 키 기반 인증을 설정하는 방법에 대한도 발견된다, 예 것이다 이것 . PuTTY가있는 창에서 SSH 를 사용하는 경우이 링크 에서 PuTTY 하우투를 확인하십시오 . 키 기반 인증을 설정 한 후 파일을 편집하여 비밀번호 인증을 비활성화 할 수 있습니다./etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 앞에 #이 없는지 확인하십시오.
#PasswordAuthentication no
선택적으로, @ 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
대신.
당신은 특정 호스트의와 동일한 작업을 수행 만이 허용 될 수 있습니다 /etc/hosts.allow
및 /etc/hosts.deny
6에 설명 된대로, 그러나에하는 것은 /etc/hosts.allow
다음과 같은 라인과 공백으로 구분 할 수 있도록 모든 호스트를 추가 :
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
특정 사용자 만 SSH 서버에 액세스하도록 허용하십시오. 파일을 편집하면됩니다 /etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 앞에 #가 없는지 확인하십시오. 존재하지 않는 경우 작성하십시오. 예를 들어 john, tom 및 mary 만 허용하려면 다음 행을 추가 / 편집하십시오.
AllowUsers john tom mary
예를 들어, john, tom 및 mary에 대한 액세스를 거부하려는 경우 특정 사용자를 거부 할 수도 있습니다.이 행을 추가 / 편집하십시오.
DenyUsers john tom mary
들어오는 연결에는 프로토콜 SSH2 만 허용하십시오. SSH 프로토콜에는 두 가지 버전이 있습니다. SSH1은 보안 문제가 있으므로 SSH 2를 사용하는 것이 좋습니다. 파일을 편집하여 강제로 수행 할 수 있습니다 /etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 앞에 #가 없는지 확인하십시오. 존재하지 않는 경우 작성하십시오.
Protocol 2,1
, 1을 제거하여 라인이
Protocol 2
비밀번호가 설정되지 않은 사용자의 로그인을 허용하지 마십시오. 파일을 편집하여 강제로 수행 할 수 있습니다 /etc/ssh/sshd_config
. ✝ 다음 줄을 찾아 앞에 #가 없는지 확인하십시오. 존재하지 않는 경우 작성하십시오.
PermitEmptyPasswords no
간단하고 말할 필요는 없지만 여러 경우에 결정적인 것으로 입증되었지만 소프트웨어를 최신 상태로 유지하십시오. 설치된 패키지 / 소프트웨어를 정기적으로 업데이트하십시오.
✝ = SSH 구성 파일을 편집 한 후에는 변경 사항을 적용하기 위해 데몬을 다시 시작해야합니다. 다음을 실행하여 데몬을 다시 시작하십시오.
sudo /etc/init.d/ssh restart
또는
sudo /etc/init.d/sshd restart
사용중인 Linux 배포에 따라
sudo service ssh restart
우분투에서.
sudo restart ssh
.
몇 가지 팁 :
주요 위험은 ssh 서버를 실행하고 계정에 약한 암호를 넣는 것을 잊어 버리는 것입니다. 체계적으로 일반 계정 (같은 이름 시도해 거기 공격자가 있습니다 webmaster
와 bob
)과 약한 암호는. 당신은 암호 로그인을 금지함으로써 이러한 위험 제거 (둘 수 PasswordAuthentication no
에를 sshd_config
, 또한 넣어 두 UsePAM No
ssh를위한 PAM 설정 또는 해제 암호 인증). 중간 측정은 ssh 로그인을 사용 AllowUsers
하거나 사용하지 않는 사용자의 화이트리스트로 제한하는 것 AllowGroups
입니다sshd_config
.
비밀번호 로그인 허용 자체는 보안 문제가 아닙니다. 약한 비밀번호와 스누핑 된 비밀번호는 문제이며 ssh 서버에서 비밀번호 인증을 허용하는 것이 인 에이 블러입니다. 암호 스누핑을 방지하려면 완전히 신뢰하지 않는 컴퓨터에서 암호를 입력하지 마십시오. 그러나 컴퓨터를 신뢰하는 경우 개인 키도 설치 한 다음 암호 인증이 필요하지 않습니다.
머신에서 ssh 클라이언트를 사용하기위한 최소 요구 사항은 ssh 통신을 적극적으로 하이재킹하지 않을 것이라고 확신하는 것입니다 (클라이언트 머신에서 실행중인 경우 중간자 공격 가능) 깨끗한 ssh 클라이언트에 명령을 입력하고 있지만 클라이언트는 실제로 인증 데이터를 충실하게 전송하지만 나중에 트로이 목마를 통신에 삽입합니다. 이것은 암호 스누 퍼가 없다는 것을 신뢰하는 것보다 약한 요구 사항입니다 (일반적으로 키 로거를 통해 수행되지만 어깨 서핑과 같은 덜 자동화 된 방법이 있습니다). 최소한의 신뢰를 가지고 있지만 스 누퍼를 여전히 두려워하는 경우 일회용 암호를 사용할 수 있습니다 (OpenSSH는 PAM 지원을 통해 암호를 지원합니다).
물론 네트워크 서버뿐만 아니라 클라이언트와 같은 제어 시스템 외부의 시스템과 상호 작용하는 다른 프로그램과 마찬가지로 보안 업데이트를 따라야합니다.
세 가지 생각이 떠 올랐습니다.
기본 포트 22를 열면 곧 감지되고 PC에 무차별 대입 공격이 가해집니다. 다른 포트를 수신하거나 방화벽에서 포트 매핑을 수행하도록 sshd를 구성하는 것이 좋습니다. 이것은 총알이 아니지만 적어도 동일한 CPU 사이클을 절약합니다.
포트 12345
비밀번호 인증을 명시 적으로 비활성화하고 키만 사용하십시오. 모든 키는 기억할 수있는 가장 복잡한 암호보다 낫습니다.
비밀번호 인증 번호
우분투에서 기본적으로 루트 사용자가 비활성화되어 있지만 루트 로그인을 명시 적으로 비활성화하십시오.
허가 루트 로그인