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.