SSH 보안 및 직접 루트 비활성화

SSH 보안 및 직접 루트 비활성화

아래 지침에서는 터미널에 나타나는 내용이 다르므로 무엇을 변경해야 할지 잘 모르겠습니다. 포트 22 다음에는 내 포트에 #AddressFamily any가 표시되고, 프로토콜로 내려가면 프로토콜 1에 대한 #activation을 표시하는 긴 줄이 있고, 주석 처리되지 않은 프로토콜 2 아래 줄이 있습니다. 또한 직접 루트 로그인을 비활성화하면 루트에 대해 생성한 것과 동일한 비밀번호 대신 sudo를 사용하게 됩니까?

다음과 같은 파일 섹션까지 아래로 스크롤합니다.

#Port 22
#Protocol 2, 1
#ListenAddress 0.0.0.0
#ListenAddress ::

주석 해제 및 변경

#Port 22 
to look like 
Port 5678 (choose your own 4 to 5 digit port number (49151 is the highest port number AND do not use 5678  lol )

Uncomment and change 
#Protocol 2, 1
to look like 
Protocol 2

Uncomment and change 
#ListenAddress 0.0.0.0
to look like 
ListenAddress 123.123.123.15 (use one of your own IP Addresses that has been assigned to your server)

참고 1: 직접 루트 로그인을 비활성화하려면 다음을 찾을 때까지 아래로 스크롤하십시오.

#PermitRootLogin yes
and uncomment it and make it look like 
PermitRootLogin no

그리고 내 것은 이렇습니다.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2

아, 이 포럼에서 일하려면 온라인 강좌를 수강해야 합니다 ;/

답변1

OpenSSH는 다음과 같습니다"기본값을 주석 처리합니다."정책. 이는 (시스템 전체) 구성 파일에 (주석 처리되지 않은 경우) 실제 실행 가능 바이너리에 내장된 애플리케이션 기본값과 동일한 값을 갖는 사용 가능한 옵션의 대부분이 포함되어 있음을 의미합니다. 얼마 전부터 기본 Protocol설정 값이 only로 변경 2, 1되었습니다 2. 따라서 이전 버전에 기반한 지침은 현재 적용되지 않습니다. 고려해야 할 또 다른 사항은 특정 배포판이 패키지의 파일을 변경하는 방법입니다.

설정은 다음과 같습니다.

  • 오래된 앱을 사용하지 않는 한, "자주" Protocol로 설정하고 2, 그것이 무엇을 의미하는지 모르는 경우에는 기본값으로 두십시오.

  • 네트워크 제한으로 인해 사용할 수 있는 포트가 몇 개밖에 되지 않는 한 포트를 변경하는 것은 의미가 없습니다. 전적으로아니요보안 강화 조치.

  • 직접적인 루트 액세스를 방지하는 것이 좋습니다. 비밀번호 로그인을 비활성화하고 개인 키 인증만 그대로 사용할 수도 있습니다.많은무차별 대입을 통해 크랙하는 것이 더 어렵습니다(읽기 불가능). 또한 루트 액세스에 대해 두 가지 수준의 인증을 효과적으로 생성합니다(먼저 개인 키를 사용하여 로그인한 다음 비밀번호 su또는 를 사용하여 로그인 sudo). 반면, 키가 없으면 로그인할 수 없습니다(경우에 따라 심각한 문제가 발생할 수 있음).

  • 특정 주소에 바인딩하는 것은 실제로 네트워크 인터페이스만 제공하려는 경우가 아니면 의미가 없습니다. 다시 한번 말씀드리지만 확실하지 않다면 변경하지 마세요. 동적 IP 주소를 사용하는 시스템에서는 서비스를 일시적으로 사용할 수 없게 될 수도 있습니다.

답변2

귀하의 질문을 실제로 이해했는지 잘 모르겠지만 제가 얻은 내용의 요지는 다음과 같습니다.

  • 구성 파일의 구성 항목 순서는 중요하지 않습니다. 그렇기 때문에 파일의 레이아웃이 지침에 있는 것과 다를 수 있습니다. 각 매개변수가 파일에서 한 번만 사용되는지 확인해야 합니다.
  • @Mark가 말했듯이 프로토콜 2를 사용할지 여부는 환경에 따라 다릅니다. 버전 1과 2를 활성화하려면 다음 줄을 사용해야 합니다.Protocol 1,2
  • 포트 변경은 습관(또는 어떤 경우에는 관례)의 문제이며 보안을 향상시키지 않습니다. 공격자는 쉽게 포트 스캔을 수행하여 SSHD가 실행 중인 포트를 알아낼 수 있습니다. (글쎄, 어떤 방법으로든 포트 스캔을 차단할 수 있지만 숙련된 공격자에게는 시간과 리소스 문제일 뿐입니다.)
  • root로그인 허용보안 문제: 모든 사람이 아는 사용자 이름을 허용할 뿐만 아니라(공격자가 해당 유효한 사용자 이름의 비밀번호를 무차별 대입 공격에 집중할 수 있음) 가장 허용적인 계정도 허용하고 있습니다. 특별한 이유가 없다면 PermitRootLogin no정책에 따라 또는 중 하나를 선택하는 것이 좋습니다.susudo
  • sudo사용자에게 비밀번호를 다시 입력하도록 요청하면 사용자도 비밀번호를 입력해야 su합니다 . root차이점은 su쉘이 실제로 사용자를 위해 열려 사용자가 쉘을 열 수 있다는 것입니다.root root. sudo사용자가 로 실행하도록 허용하는 root것은 sudo경험에 따라 달라지므로(예를 들어 사용자가 로 실행하도록 허용하면 bash기본적 으로 모든 사람에게 액세스를 root허용하는 것임 ) 이를 활성화한다고 해서 보안이 향상되는 것은 아닙니다.rootsudoersudo
  • SSHD를 특정 IP 주소에 바인딩하는 것은 ListenAddress여러 네트워크에 연결된 호스트에서만 유용합니다. 이러한 시스템에서는 SSH 액세스가 필요한 네트워크로 SSH 액세스를 제한하면 보안이 강화됩니다.

답변3

부분적인 답변과 제안만 제공됩니다.

우분투 10.04의 의견과 내 sshd 구성 파일을 기반으로 프로토콜 2를 사용하는 것이 좋습니다. 오래되거나 약간 오래된 SSH 클라이언트가 있지 않는 한.

ListenAddress는 ssh 데몬을 특정 인터페이스(ip에 해당)에 바인딩합니다. 0.0.0.0으로 두면 모든 인터페이스(외부 인터페이스뿐만 아니라 localhost/loopback도 포함)에 바인딩되고, IP ​​주소를 지정하면 해당 단일 인터페이스에 바인딩됩니다.

PermitRootLogin no는 루트를 사용하여 SSH를 통해 로그인할 수 없음을 의미합니다. 로그인한 상태에서도 여전히 루트로 전환할 수 있습니다. 하지만 가장 좋은 방법은 sudo를 사용하는 것입니다.

포트를 변경하면 SSH가 수신하는 포트가 분명히 변경됩니다. 사용 가능한 포트 범위를 어디서 얻었는지 잘 모르겠습니다. 일부 포트는 예약되어 있습니다. 참조http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers자세한 목록을 보려면. 포트 번호는 최대 65535까지 가능하며 아무 문제도 발생하지 않는다는 점을 알고 있는 한 1024 이상의 포트는 실제로 공정한 게임입니다.

도움이 되었기를 바랍니다!

표시

답변4

한 가지를 제외하면 줄의 순서 sshd_config는 중요하지 않습니다. 단어로 시작하는 모든 줄은 Match새 섹션을 시작하고 섹션의 배열이 중요합니다.

로 시작하는 줄은 #주석 처리되어 무시됩니다. 필요한 경우 작성할 수 있는 내용의 예로 기본 구성 파일에서 이를 볼 수 있습니다. 설정을 변경하기 위해 해당 줄을 주석 처리할 필요가 없으며 필요에 따라 추가 줄을 작성할 수 있습니다.

예를 들어 #Port 22기본 포트가 22이기 때문입니다. 해당 문자를 제거하면 #포트가 22로 명시적으로 설정되지만 실제로는 아무 것도 변경되지 않습니다. 번호를 제거 #하고 변경하면 SSH 서버가 다른 포트에서 수신 대기하게 됩니다. 주석 처리된 줄을 그대로 두고(존재하는 경우) Port 1234별도의 줄에 쓸 수도 있습니다.

다른 포트에서 수신 대기하는 것은 그리 유용하지 않습니다. 공격자는 모든 포트에서 수신 대기 중인 서버를 찾는 방법을 알고 있으므로 위험은 약간만 줄어듭니다. 포트 변경의 유일한 이점은 로그에서 자동화된 시도(취약한 비밀번호 찾기)가 줄어든다는 것입니다. 그럴 가치가 없습니다. 포트를 변경하면 특정 포트에서만 암호화된 트래픽만 허용하는 일부 방화벽 뒤에서 서버에 액세스할 수 없게 됩니다.

Protocol 2아주 오래된 클라이언트를 사용하고 싶다는 사실을 알고 있지 않는 한 가지고 있는 것이 좋습니다.

ListenAddressSSH 서버가 하나의 네트워크 카드에서만 수신하도록 하려는 특정 구성에만 유용합니다. 당신은 그것을 필요하지 않습니다.

PermitRootLogin no종종 좋은 생각이지만 일부 사람들이 생각하는 절대적으로 간단한 것은 아닙니다. 루트 비밀번호가 약하거나 유출된 경우(좋은 생각이 아님) 또는 루트가 약하거나 유출된 키로 로그인하도록 허용하는 경우(동일함) 직접적인 보안 이점을 제공합니다. 루트가 직접 로그인할 수 없으면 사용자가 먼저 자신의 계정으로 로그인해야 함을 의미합니다. 이를 통해 책임을 묻고 사실 이후에 무슨 일이 일어났는지 알 수 있습니다.합법적인사용자가 로그인되었습니다. 대부분의 설정에서 악의적인 사용자는 사후에 로그를 변경할 수 있으므로 그들이 수행한 추가 단계는 표시되지 않습니다.

또 다른 일반적인 강화 설정은 사용자에게 비밀번호 대신 키 쌍을 사용하여 인증하도록 요구하는 것입니다. 즉, 비밀번호 인증을 비활성화합니다.

PasswordAuthentication no

비밀번호 인증은 다음 상황에서만 허용되어야 합니다.

  • 모든 사용자는 강력한 비밀번호를 선택할 수 있습니다.
  • 모든 사용자가 신뢰할 수 있는 시스템에서 로그인하지 않도록 신뢰할 수 있습니다(그들은 키로거 등이 없다고 확신합니다).

관련 정보