PermitRootLogin UID veya kullanıcı adına göre mi?


17

Man sayfası şunu belirtir: PermitRootLogin

Kök kullanarak oturum açıp açamayacağını belirtir ssh(1).

Ancak, bu denetimin kullanıcı adına ( "root") veya UID'ye ( 0) dayalı olup olmadığı net değildir .

Kök hesabın adı değiştirilirse ne olur "admin"? Will "admin"zaman giriş yapabilmek PermitRootLogin=no?

UID = 0 olan iki hesap varsa ne olur, yani "root"ve "admin"? İkisi de giriş yapabilecek mi?

Yanıtlar:


16

Kontrol UID'de yapıldı (test edildi OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016):

PermitRootLogin'i kapalı olarak ayarlayın:

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

adminUID 0 ile adlı bir kullanıcının oluşturulduğundan emin olun :

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

Kullanıcının sistemde oturum açmak için kullanılabileceğinden emin olun:

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

SSH kullanarak sistemde oturum açıp açamayacağımızı kontrol edin:

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

PermitRootLogin'i açarsak:

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

Ve oturum açmayı deneyin:

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:~# 

İlginçtir ki UID 0 kullanıcı adı yöneticisine sahip olsa da, hala root@pdv1kabukta olduğu gibi görünüyor
Dezza

1
@Dezza Muhtemelen / etc / passwd içinde listelenen sipariş satırlarına bağlıdır (olduğu gibi: ilk girişi UID = 0 ile bulun).
TripeHound

19

Diğer cevapta mtak'ın yaklaşımını takdir ediyorum, ancak cevap bu denemeler olmadan bile açık.

OpenSsh kaynak kodundaUID gördüğünüz gibi dayanmaktadır :

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

Ayrıca her kimlik doğrulama yöntemi gösterileri gibi bir şey

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

grep-kodda daha ileri giderseniz, sizin strcmp('root', pw->pw_name)için yeterli olacaksa, alternatifin olmadığını veya bazılarının olmadığını fark edebilirsiniz.


UID 0 kontrollerini nasıl biliyorsunuz sshd ? İfadenizi desteklemek için herhangi bir argüman kullanmıyorsunuz.
mtak

2
Unix, bir süper kullanıcıyı UID = 0 ile tanımlar. Başka bir örnek olarak, bir olabilir kaynak kodu arasında openssh.
Jakuje

Çekirdek yapar, ancak OpenSSH'nin de yaptığını varsayıyordunuz. Örneğin, Apache temel kimlik doğrulaması kök girişine de izin vermez, değil mi? Bağlantı için teşekkür ederim, cevabınızı buna dahil edecek şekilde değiştirdim.
mtak

1
Bunu başka bir şekilde yapsaydı, potansiyel bir güvenlik riski olurdu.
Jakuje

3
@Bakuriu ve neden pwbağlamı başka bir şeyden yaratacaktı ? opensshKod açık kaynak ve ilgi okuyucular bütün kod üzerinden gidebilirsiniz. Benzer yapılar , her kimlik doğrulama yöntemi için kodun her yerinde bulunur. grepKod üzerinden geçerseniz , sizin strcmp('root', pw->pw_name)için daha güvenilir hale getirip getirmeyeceğini asla göremezsiniz .
Jakuje
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.