PermitRootLogin은 UID 또는 사용자 이름을 기반으로합니까?


17

매뉴얼 페이지는 PermitRootLogin

를 사용하여 root가 로그인 할 수 있는지 여부를 지정합니다 ssh(1).

그러나이 확인이 사용자 이름 ( "root") 또는 UID ( 0)를 기반으로하는지 여부는 명확하지 않습니다 .

루트 계정의 이름이로 변경되면 어떻게됩니까 "admin"? 윌 "admin"때 로그인 할 수 PermitRootLogin=no?

UID = 0, 즉 두 개의 계정이있는 경우 어떤 일이 발생 "root"하고 "admin"? 둘 중 하나가 로그인 할 수 있습니까?

답변:


16

확인은 UID에서 수행 된 것 같습니다 (에서 테스트 됨 OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016).

PermitRootLogin을 해제하십시오.

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no

adminUID 0으로 이름 이 지정된 사용자 가 작성 되었는지 확인하십시오 .

mtak@pdv1:~$ sudo grep admin /etc/passwd
admin:x:0:0:Root User:/root:/bin/bash

사용자가 시스템에 로그온 할 수 있는지 확인하십시오.

mtak@pdv1:~$ su - admin
Password: 
root@pdv1:~# 

SSH를 사용하여 시스템에 로그온 할 수 있는지 확인하십시오.

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Permission denied, please try again.

PermitRootLogin을 켜면 :

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes

그리고 로그온을 시도하십시오 :

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Linux pdv1 4.4.8-1-pve #1 SMP Tue May 17 16:14:08 CEST 2016 x86_64
Last login: Wed Aug 24 12:05:28 2016 from xxx
root@pdv1:~# 

UID 0에 사용자 이름 관리자가 있더라도 root@pdv1쉘 과 같이 표시됩니다.
Dezza

1
@Dezza는 / etc / passwd에 나열된 주문 행에 따라 달라질 수 있습니다 (UID = 0 인 첫 번째 항목 찾기).
TripeHound

19

다른 답변에서 @mtak의 접근 방식에 감사하지만이 시도가 없어도 대답은 분명합니다.

openssh UID소스 코드 에서 볼 수 있듯이을 기반으로합니다 .

if (authctxt->pw->pw_uid == 0 &&
            !auth_root_allowed(auth_method))
authenticated = 0;

또한 모든 인증 방법 다음과 같습니다.

if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
    ok = 0;

grep-코드에서 더 나아가 strcmp('root', pw->pw_name)면 충분하다면 대안 이 없거나 전혀 없다는 것을 알 수 있습니다.


UID 0 검사를 어떻게 알 수 sshd 있습니까? 당신은 당신의 진술을지지하기 위해 어떤 논증도 사용하지 않습니다.
mtak

2
유닉스는 UID = 0으로 수퍼 유저를 정의합니다. 다른 예로는의 소스 코드 가 될 수 있습니다 openssh.
Jakuje

커널은 그렇게하지만 OpenSSH가했다고 가정했습니다. 예를 들어, Apache 기본 인증은 루트 로그인도 허용하지 않습니까? 링크 주셔서 감사합니다. 포함하도록 귀하의 답변을 수정했습니다.
mtak

1
다른 방법으로 수행하면 잠재적 인 보안 위험이 될 수 있습니다.
Jakuje

3
@ Bakuriu와 왜 pw다른 곳 에서 컨텍스트를 만드는지 . openssh코드는 오픈 소스이며, 관심있는 독자는 전체 코드를 통해 갈 수 있습니다. 모든 인증 방법에 대해 유사한 구성 이 코드 전체에 적용됩니다. 당신이 경우 grep코드를 통해, 당신은 찾을 수 없을 것입니다 strcmp('root', pw->pw_name)당신을 위해 더 신뢰성을한다면.
Jakuje
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.