Ssh kullanıcısının sadece yerel ağdan root olmasına nasıl izin verilir?


38

Google-Authenticator'ı bir CentOS 6.5 makinesine kurdum ve bazı kullanıcıları OTP sağlayacak şekilde yapılandırdım.

Düzenlerken , varsayılan olarak yorumlanan /etc/ssh/sshd_config" PermitRootLogin" direktifini gördüm .

" PermitRootLogin no" Olarak ayarlamak istiyorum ancak makineye yalnızca yerel ağdan root olarak erişebilmeyi istiyorum.

Mümkün mü?


5
Bunu asla yapma. Kullanıcılarınız olarak SSH kullanın, ardından izinleri yükseltmek için sudo kullanın. Bunu bir kağıt izi bırakması için yapın, böylece hangi hesabın tehlikeye girdiğini anlarsınız.
SnakeDoc

3
@ SnakeDoc: Bu bir düşünce okulu, ama kesin değil ve tam tersini savunuyorum. sudo, çok büyük ve karmaşık bir saldırı yüzeyidir ve kurmak istediğim bir şey değildir. SSH pubkey auth, çok daha küçük bir saldırı yüzeyidir. Her ikisi de günlüğe kaydedilebilir, ancak kullanıcı (kök) günlükleri düzenleyebildiği veya silebildiği zaman günlüğe kaydetme işlemi pek kullanışlı değildir, bu yalnızca harici ek ekleme deposunda oturum açmadığınız sürece her zaman böyledir.
R. ..

1
@R .. Eğer sudoer'ları doğru kurarsanız, en az ayrıcalık ilkesini kullanarak, tarif ettiğiniz bu sorunlar büyük ölçüde problem değildir. Hiçbir kullanıcı ssh ile sudo - sukök içine giremez veya kullanıcılarının ihtiyaç duymadığı bir şey yapamaz (sudo'larda, komutlar için beyaz listeyi kullanırsınız). Kök ihtiyacınız varsa, fiziksel olarak konsolda olmalısınız - yani. SSH üzerinden yapılan kök, asla anahtarlara izin verilmemeli ... anahtarlara bırakılmamalı.
SnakeDoc

1
@ SnakeDoc: Yanılıyorsunuz. Sudo kendi karmaşık saldırı yüzeyler, hem de sahiptir ve execve boyunca kalıtımsal her durumda şeklinde, bir suid ikili olarak doğasında var temel kompleks saldırı yüzeyi. Bazı durumlarda, intihar programında bir hata (intihar) bile gerekli değildir; Dinamik linker (örneğin CVE-2010-3856) gibi altta yatan altyapıdaki hatalar yeterli olabilir.
R. ..

1
@R .. Bir anahtarın sızdırılmış olup olmadığını her zaman bileceğinizi varsayıyorsunuz. Bu bir varsayımın bir halt. Ayrıca, içeri girdiğinde, saldırganın kök ayrıcalıkları vardır. Onları imtiyazsız bir hesapla göndermek ve kökünden yükseltmek zorunda kalmaları daha iyidir. Bu şekilde sızdırılmış olması gereken bir anahtarınız, kırılacak bir anahtar şifresi ve daha sonra kırılacak normal bir kullanıcı hesabı şifreniz vardır. Ve eğer saldırgan tüm bunları hallederse ... hiçbir şey yapamazlar çünkü bu kullanıcı çok sınırlı kapasiteye sahip sudo'lar altında kurulur ... Şimdi fayda görüyor musunuz? Ssh ... süresi boyunca doğrudan kök girişine izin verme. İyi hijyen
SnakeDoc 18:16

Yanıtlar:


54

MatchConfig parametresini şurada kullanın /etc/ssh/sshd_config:

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

Görmek man sshd_config


Bunu neden düşünmedim? Teşekkürler dostum
Itai Ganot

8
Ayrıca, kaynağını içinde kimlik doğrulama anahtarları için kısıtlayabilirsiniz ~root/.ssh/authorized_keys. Tuşu ile önek from="192.168.0.0/24 ".
BillThor

9
IPv6 yerel bağlantı adreslerine de izin vereceğim. Yerel bağlantı adreslerinin IPv6'da çalışması, yanlış yapılandırılmış ağlara çok güçlü olmalarını sağlar. Bu, bir ağ yanlış yapılandırmasını düzeltmek için ssh uygulamanız gerektiğinde, IPv6 yerel bağlantı adresi kullanmanın geriye kalan tek seçenek olabileceği anlamına gelir.
kasperd

Bilginize Ek olarak AllowUser direktifini kullanırsanız, ayrıca (ve karşı sezgisel olarak) da yapmanız gerekirAllowUser root
Robert Riedl

14

Bu Match addressyöntem daha önce de belirtilmiştir, ancak bir sistemde oturum açmasına izin verilen kullanıcıları (veya grupları) da kısıtlayabilirsiniz. Örneğin, girişleri kullanıcıya itai(herhangi bir yerden) ve root(belirli bir ağdan) sınırlandırmak için şunları kullanın:

AllowUsers itai root@192.168.0.*

Bu, diğer tüm kullanıcıların (gibi apache) SSH üzerinden oturum açmasını önler .

AllowUsersAnahtar kelimeye ayrıca sshd_config (5) kılavuzunda bakınız.


4
AllowGroupsBelirli bir gruba SSH kullanarak giriş yapması gereken tüm kullanıcıları ekleyip tercih ediyorum . Sanırım bu bir zevk meselesi, ancak sshd_config'in daha az düzenlenmesi gibi görünüyor (ki bu, daha az karmaşa ve herkesi kilitleme riskiyle sonuçlanıyor).
bir CVn

1
@ MichaelKjörling Ayrıca AllowGroups, ekibiniz genişler veya küçülürse, sshd_config için düzenleme izinlerine ihtiyacınız olmadığı anlamına gelir. Bu, daha fazla yönetim türünün veya stajyerin yapmasına bile izin verebilir.
Nzall

İyi puan, sen seçenekleri birleştirmek sahip olabileceği not AllowUsers itai root@192.168.0.*ve AllowGroups ssh-usersve yanlışlıkla stajyer yanlışlıkla grubu :) temizler durumda bir lokavt neden olmaz
Lekensteyn
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.