Güvenlik nedeniyle kullanıcı kabuğunu devre dışı bırak


58

Sistemler arasında dosya aktarımı, izleme vb. Gibi ince taneli izinler gerektiren otomatik işler için oluşturduğumuz birkaç kullanıcı hesabımız var.

Bu kullanıcı hesaplarını nasıl kilitleriz, böylece bu "kullanıcıların" kabuğu yoktur ve giriş yapamazlar? Birinin bu kullanıcı hesaplarından biri olarak SSH yapabilme olasılığını önlemek istiyoruz.

Yanıtlar:


63

usermodBir kullanıcının giriş kabuğunu değiştirmek için komutu kullanabilirsiniz .

usermod -s /sbin/nologin myuser

veya

usermod -s /usr/sbin/nologin myuser

İşletim sisteminiz / sbin / nologin sağlamıyorsa, kabuğu / bin / false gibi bir NOOP komutuna ayarlayabilirsiniz:

usermod -s /bin/false myuser

1
/bin/falsedaha yaygın görünüyor /bin/true.
jw013

@ jw013 Cevabımı güncelliyorum, ancak her ikisi de iyi çalışmalı.
Ürdün

1
Debian'ın üzerine unutmayın, nologinaslında bulunabilir etmektir/usr/sbin/nologin
xebeche

bu benim ilk fikrimdi, ne yazık ki bazı kullanıcı hesaplarının 'geçerli' kullanımı ayar sırasında devre dışı bırakıldınologin
Javier

2
@ jw013 Aslında sahip /usr/local/bin/maybeolan /dev/urandomly bu ikisinin arasında seçer. Belki de kullanmalıyım: D
hegez

21

Giriş kabuğunu değiştirmek, kullanıcıların kimliğini doğrulamak zorunda değildir (kullanıcının kabuğunun belirtilip belirtilmediğini kontrol eden bazı servisler hariç /etc/shells).

İnsanlar, sisteminizin kullanıcılara unix vermek için sunduğu çeşitli hizmetleri doğrulayabilir ve muhtemelen doğrudan doğrudan komut çalıştırmamakla birlikte bazı işlemleri gerçekleştirme yetkisine sahip olabilirler.

Kabuğu değiştirmek /bin/falseveya /usr/sbin/nologinyalnızca komutları çalıştırmak için kullanılabilecek servislerde komut çalıştırmalarını engelleyecektir (konsol oturumu açma, ssh, telnet, rlogin, rexec ...), bu nedenle yalnızca bazı servislerin yetkilendirmesini etkiler .

Örneğin ssh, bu hala onların port yönlendirme yapmalarına izin veriyor.

passwd -lparola doğrulaması devre dışı bırakır, ancak kullanıcı yine (gibi diğer kimlik doğrulama yöntemleri kullanmak izin verilebilir authorized_keysile ssh).

İle pamen azından Linux üzerinde kullanabileceğiniz pam_shellsbir izin kabuğu (o sözü ile kullanıcılara kimlik doğrulaması veya yetkilendirme kısıtlamak için modül /etc/shells). Bunun için ssh, diğer doğrulama yöntemlerine (benzeri ) ekaccount olarak doğrulama sshdkullanımlarında olduğu gibi yetkilendirme ( ) düzeyinde yapmak istersiniz veya içindeki (gibi ve arkadaşlarınızdaki) yönergelerle yapabilirsiniz .pam authorized_keyssshd_config/etc/ssh/sshd_configAllowUsers

Küresel pam yetkilendirmesine bazı kısıtlamalar eklemenin cron, bu kullanıcılar gibi işleri yürütmeyi potansiyel olarak önleyebileceğini unutmayın .


Teşekkür ederim. Öyleyse aşağıdaki şemaya göre ne tavsiye edersiniz: sftp veya sshfs aracılığıyla ana klasörüne erişmesi gereken bir kullanıcı oluşturmam gerekiyor, ancak bir kabukla giriş yapamamalı. Bu mümkün mü? PAM modülleri goto çözümü olabilir gibi düştüm ama hepsini anlamıyorum:|
Stphane

- Eğer rssh bakmak olabilir @Stphane manpages.ubuntu.com/manpages/trusty/man1/rssh.1.html
Hart Simha

4

Düzenleyebilir /etc/passwddosya ve kullanıcıların gelen kabuk değiştirmek /bin/bashveya /bin/shhiç/sbin/nologin


8
Cevap doğru, ancak elle düzenleme / etc / passwd asla önerilmez.
Ürdün

3
Neden? Bu profesyonel bir sistem yöneticisi olduğum sürece yaptığımız bir şey. (yaklaşık 20 yıl şimdi) Aslında, linux / unix dağıtımlarının tümü / etc / passwd veya / etc / group 'u değiştirmek için araçlara sahip değildir. Onları el düzenleme hiçbir zararı yoktur.
Mark Cohen

6
Tek bir kullanıcı yerine, el ile düzenleme yaparak "herkesin girişini keser" hatası yapmak çok daha kolaydır.
Ürdün

2
@ jordanm: vipwBu tür bir hatayı önleyen bir şey var .
eudoxos

4

İlk önce, kullanarak şifreyi devre dışı bırakın passwd -l username.

Ayrıca seçenek için mansayfada not :passwd-l

   -l, --lock
       Lock the password of the named account. This option disables a password by changing it to a value which matches no
       possible encrypted value (it adds a ´!´ at the beginning of the password).

       Note that this does not disable the account. The user may still be able to login using another authentication token
       (e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
       expire date to Jan 2, 1970).

       Users with a locked password are not allowed to change their password.

1
Bu arzu edilmeyebilir. Örneğin e-postaya erişmek için sistem hesaplarında bir şifreye ihtiyaçları olabilir.
Ürdün

1
Bazı e-posta sistemleri, kendi şifre mekanizmalarının kullanılmasına izin verir. Dovecot ve Exim'i sadece e-posta şifresiyle kullanıyorum. Bu, sistem şifremi kullanmayacağım sunucularda web posta kullanımına izin veriyor. Sanal e-posta alanları, sunucular şifre sistemine bağlı olmadıkları için kendi şifrelerini gerektirir.
BillThor

2

Chsh komutunu kullanabilirsiniz:

~# chsh myuser

İstendiğinde yeni kabuk ayrıntılarını girin:

Login Shell [/bin/sh]: /bin/nologin

Veya daha kısa versiyon:

~# chsh myuser -s /bin/nologin

0

Kullanıcının giriş yapmasını ve hatta port yönlendirmeyi sağlayan ssh üzerinden kimlik doğrulamasını engellemek için ( burada Stephane'da açıklandığı gibi ), kullanıcıyı sistemin nobodykullanıcısına benzeyecek şekilde değiştiriyorum :

  • parola doğrulamasını içeride /etc/shadow( uygun alanda *veya !!alanda)
  • devre dışı bırakılmış kabuk /etc/passwd(örneğin /sbin/nologinuygun alanda)
  • salt okunur ev girişi /etc/passwd(örneğin /uygun alanda)
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.