SFOS kullanıcıları oluşturma ve CentOS'ta oturum açma hapishanesi - kullanıcı kimlik doğrulama hatası


18

Digital Ocean ile 6.4 sürümü olan bir CentOs sürümüm var ve başarılı bir şekilde SFTP kullanıcıları oluşturmak ve bunları kullanıcının kendi chroot home dizinine hapsetmek istiyorum, ancak bundan bir karmaşa yaptığımdan korkuyorum.

Bir çok şey denedim, burada çoğu muhtemelen yanlış ya da çok mantıklı olmayacak şekilde burada listelenecek çok fazla şey denedim ama doğru süreç olmalı ve denediğim şey: -

Şunun için grup oluştur sftp: -

groupadd sftp

Bir kullanıcı oluşturun ve giriş dizinini ayarlayın: -

useradd -d /var/www/vhosts/domain.com dummyuser

Kullanıcı için bir şifre belirleyin: -

passwd dummyuser

Kullanıcının grubunu 'sftp' olarak değiştirin: -

usermod -g sftp dummyuser

Kullanıcının kabuğunu şu şekilde ayarlayın /bin/false: -

usermod -s /bin/false dummyuser

Alt Sistemi Düzenle sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

sshd_configDosyanın altına aşağıdakileri ekleyin : -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Aşağıdaki tüm dizinlerin olduğundan emin olun root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Daha sonra sunucuya SFTP üzerinden kullanıcıyla dummyuser(WinSCP'de) oturum açmaya çalışırsam , aşağıdakileri alıyorum: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Tek istediğim bir kullanıcıyı kendi ana dizinine hapsetmektir. Ayrıca vsftpd kurulumu ve yapılandırması yaptım. Kullanıcılar iyi giriş yapabilir ancak tüm sunucuya erişebilirlerdi - sadece hapishaneyi hiç çalıştırmayı başaramadım.

Düzenle

Bahsetmeyi unuttum, sonra tekrar başlattım sshd: -

service sshd restart

Hata WinSCP'de üretildiğinde, bu konudaki yardım sayfası buradadır .

Günlük Sonuçları

/var/log/secure

Gerçek sunucu adını ile değiştirdim server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser

Yeniden başlattın sshdmı? Sunucudaki günlük dosyalarında neler var?
faker

Evet yaptım, üzgünüm bunu sorumun sonuna eklemeyi unuttum (şimdi içerecek). Şimdiye kadar bir 'oturum günlüğü' dosyası bulamadığım için hangi günlük dosyasına (ve konuma) bakmalıyım? Teşekkürler.
zigojacko

Bir göz atmak isteyeceksiniz /var/log/secure.
faker

Mükemmel, teşekkür ederim - bu yardımcı olur (soruyu günlük girişleriyle güncelleme).
zigojacko

ölümcül: kötü sahiplik veya chroot dizin bileşeni için modları "/ var / www / vhosts /" böyle bir şey şüphelendim ama vhostsöyle root:root.
zigojacko

Yanıtlar:


14

Bu yaygın bir tuzaktır:
Chroot evine kadar olan tüm klasörlerin sahibi olmalı ve sadece rootkullanıcı tarafından yazılabilir olmalıdır .
Klasörler grup yazılabilir olamaz - grup olsa bile root.


4
Ben sadece bunu rahatça kontrol etmek için bir hile öğrendim:namei -l /var/www/vhosts
clockworkgeek

5

CentOS 6.5'te sftp'yi buldum ve başarıyla yapılandırdım: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Sshd yapılandırmasını düzenle:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Çıkın ve kaydedin.

Sonra:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

"Testuser" adlı yeni bir kullanıcı için (GID 500 ile yalnızca sftp grubunun üyesi):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(boş / etc / skel2 kullanıyorum, böylece hiçbir .bashrc vb varsayılan olarak CentOS tarafından kopyalanmaz)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Bu örnekte, web sitelerini yöneten harici danışmanlık firmalarına güvenli erişim sağlamayı başardım. Tüm bunları oluşturduktan sonra şunları yapabilirsiniz:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

Bunların hepsi gerektiği gibi ince ayar yapılabilir.

Umarım bu yardımcı oldu!

Guy Boisvert IngTegration inc. http://www.ingtegration.com


Sunucu Arızasına Hoşgeldiniz! Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
masegaloeh

1
SSDD yapılandırmasını değiştirdiğiniz için, yeniden başlatmanızı öneririm:service sshd restart
Loïc
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.