Takip et

Ubuntu 16.04 Üzerinde Kabuk Erişimi Olmadan SFTP Nasıl Etkinleştirilir?

Ubuntu 16.04 Üzerinde Kabuk Erişimi Olmadan SFTP Nasıl Etkinleştirilir? Güvenli Dosya Transfer Protokolü (SFTP), sunucular arasında dosya tran

Ubuntu 16.04 Üzerinde Kabuk Erişimi Olmadan SFTP Nasıl Etkinleştirilir?

Güvenli Dosya Transfer Protokolü (SFTP), sunucular arasında dosya transferi için güvenli ve güvenilir bir yöntem sunar. Geleneksel FTP’nin aksine, SFTP verileri şifreleyerek yetkisiz erişime karşı korur. Özellikle web barındırma, geliştirme ortamları veya hassas verilerin transfer edildiği senaryolarda, kullanıcıların sunucuya tam kabuk (shell) erişimi olmaksızın yalnızca dosya transferi yapabilmelerini sağlamak önemli bir güvenlik gerekliliğidir. Bu, “en az ayrıcalık” prensibini uygulayarak potansiyel güvenlik açıklarını minimize eder.

Ubuntu 16.04 gibi Linux tabanlı sistemlerde, OpenSSH sunucusu SFTP işlevselliğini dahili olarak sunar. Bu makalede, OpenSSH’nin chroot (kök dizini kısıtlaması) özelliği kullanılarak, belirli kullanıcıların yalnızca kendi atanan dizinleri içinde SFTP aracılığıyla dosya transferi yapabilmeleri, ancak sunucuya SSH üzerinden komut çalıştırarak erişememeleri için adım adım bir rehber sunulacaktır. Bu kurulum, sunucunuzun güvenliğini artırırken, yetkilendirilmiş kullanıcılar için gerekli dosya transferi yeteneklerini sağlamanıza olanak tanır.

Neden Kabuk Erişimi Olmadan SFTP?

Bir sunucuda birden fazla kullanıcının veya müşterinin dosya depolaması veya web sitelerini barındırması gerektiğinde, her kullanıcıya tam kabuk erişimi vermek ciddi güvenlik riskleri taşır. Tam kabuk erişimi olan bir kullanıcı, sunucuda komutlar çalıştırabilir, sistem yapılandırmalarını değiştirebilir ve hatta diğer kullanıcıların verilerine erişebilir. Bu durum, yanlışlıkla yapılan hatalardan kötü niyetli saldırılara kadar çeşitli güvenlik ihlallerine yol açabilir.

Kabuk erişimi olmadan SFTP’yi etkinleştirmenin temel faydaları şunlardır:

* Güvenlik: Kullanıcıları yalnızca belirli bir dizinle sınırlar ve sistemde komut çalıştırmalarını engeller. Bu, saldırı yüzeyini önemli ölçüde azaltır.
* İzolasyon: Her kullanıcı kendi izole edilmiş ortamında çalışır, bu da bir kullanıcının güvenliğinin ihlal edilmesi durumunda diğer kullanıcıları veya sunucunun genel bütünlüğünü etkileme riskini azaltır.
* Basitlik: Kullanıcılar için sadece dosya yükleme/indirme işlevselliği sağlar, bu da karmaşık komut satırı arayüzleri ile uğraşmalarına gerek kalmamasını sağlar.
* Uyumluluk: Birçok denetim ve güvenlik standardı, sunucuya doğrudan kabuk erişimini kısıtlarken güvenli dosya transferi yöntemlerini zorunlu kılar.

Bu makale, Ubuntu 16.04 üzerinde bu güvenlik odaklı SFTP kurulumunu nasıl gerçekleştireceğinizi ayrıntılı olarak açıklayacaktır.

Ön Koşullar

Bu rehbere başlamadan önce aşağıdaki ön koşulların karşılandığından emin olun:

* Ubuntu 16.04 Sunucusu: Çalışır durumda bir Ubuntu 16.04 sunucusuna sahip olmalısınız.
* OpenSSH Sunucusu: Sunucunuzda OpenSSH kurulu ve çalışıyor olmalıdır. Genellikle Ubuntu kurulumlarında varsayılan olarak gelir. Kurulu değilse sudo apt-get install openssh-server komutu ile kurabilirsiniz.
* Sudo Yetkileri: İşlemleri gerçekleştirmek için sudo ayrıcalıklarına sahip bir kullanıcı hesabınız olmalıdır.
* Temel Linux Bilgisi: Temel Linux komutları, dosya izinleri ve sahiplikleri hakkında bilgi sahibi olmak faydalı olacaktır.
* SSH İstemcisi: SFTP bağlantısını test etmek için yerel makinenizde bir SSH/SFTP istemcisi (örneğin, FileZilla, WinSCP veya komut satırı SFTP istemcisi) bulunmalıdır.

SFTP İçin Özel Bir Kullanıcı Grubu Oluşturma

İlk adım olarak, SFTP erişimi kısıtlanacak kullanıcıları yönetmek için özel bir Linux grubu oluşturacağız. Bu, SSH yapılandırmasında bu gruba ait tüm kullanıcılara belirli kuralları uygulamamızı kolaylaştıracaktır.

Grup Oluşturma

sftpusers adında yeni bir grup oluşturalım:

sudo groupadd sftpusers

Bu komut, sistemde sftpusers adında yeni bir grup tanımlar.

SFTP Kullanıcısı Oluşturma ve Yapılandırma

Şimdi, kabuk erişimi olmayan ve yalnızca SFTP için kullanılacak bir kullanıcı hesabı oluşturacağız. Bu kullanıcıyı az önce oluşturduğumuz sftpusers grubuna atayacağız ve oturum açma kabuğunu /sbin/nologin olarak ayarlayarak SSH üzerinden etkileşimli kabuk erişimini engelleyeceğiz.

Kullanıcı Oluşturma ve Ev Dizini Hazırlığı

SFTP chroot ortamı için en güvenli ve yönetilebilir yöntemlerden biri, kullanıcıların chroot dizinlerini /var/sftp gibi merkezi bir konumda tutmaktır. Bu yaklaşım, chroot dizininin ve üst dizinlerinin root kullanıcısına ait olma zorunluluğunu daha kolay yönetmemizi sağlar.

Öncelikle, tüm SFTP kullanıcılarının chroot edileceği ana dizini oluşturalım:

sudo mkdir -p /var/sftp
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp

* sudo mkdir -p /var/sftp: /var/sftp dizinini oluşturur. -p parametresi, üst dizinler yoksa onları da oluşturur.
* sudo chown root:root /var/sftp: /var/sftp dizininin sahipliğini root kullanıcısına ve root grubuna atar.
* sudo chmod 755 /var/sftp: /var/sftp dizinine root için tam izinler (okuma, yazma, çalıştırma), diğerleri için okuma ve çalıştırma izinleri verir. Bu izinler, chroot dizinlerinin güvenliği için kritik öneme sahiptir.

Şimdi, sftpuser1 adında yeni bir kullanıcı oluşturalım. Bu kullanıcı için bir ev dizini oluşturmayacağız, çünkü chroot dizini farklı bir yapıya sahip olacak.

sudo useradd -g sftpusers -s /sbin/nologin sftpuser1

* sudo useradd: Yeni bir kullanıcı oluşturma komutu.
* -g sftpusers: Kullanıcıyı sftpusers grubuna atar.
* -s /sbin/nologin: Kullanıcının oturum açma kabuğunu /sbin/nologin olarak ayarlar. Bu, kullanıcının SSH üzerinden etkileşimli bir kabuk oturumu başlatmasını engeller.
* sftpuser1: Oluşturulacak kullanıcının adı.

Ardından, yeni oluşturduğumuz kullanıcı için bir parola belirleyelim:

sudo passwd sftpuser1

Sistem sizden sftpuser1 için yeni bir parola girmenizi ve onaylamanızı isteyecektir. Güçlü bir parola seçtiğinizden emin olun.

Kullanıcının Chroot Dizini ve Yazılabilir Alanı

Şimdi, sftpuser1 için chroot dizinini ve kullanıcının dosya yükleyip indirebileceği yazılabilir bir alt dizini oluşturalım.

sudo mkdir -p /var/sftp/sftpuser1
sudo chown root:root /var/sftp/sftpuser1
sudo chmod 755 /var/sftp/sftpuser1

* sudo mkdir -p /var/sftp/sftpuser1: Bu, sftpuser1 kullanıcısının chroot edileceği dizin olacaktır.
* sudo chown root:root /var/sftp/sftpuser1: Çok önemli! SSH’nin chroot özelliği için, ChrootDirectory olarak belirtilen dizin (ve bu dizine giden tüm üst dizinler) root kullanıcısına ait olmalı ve başkaları tarafından yazılabilir olmamalıdır. Bu bir güvenlik gerekliliğidir.
* sudo chmod 755 /var/sftp/sftpuser1: Dizine root için tam izinler, diğerleri için okuma ve çalıştırma izinleri verir.

Şimdi, sftpuser1‘in dosya yükleyip indirebileceği bir alt dizin oluşturalım. Bu dizin, sftpuser1 kullanıcısına ait olacak ve yazılabilir olacaktır.

sudo mkdir /var/sftp/sftpuser1/data
sudo chown sftpuser1:sftpusers /var/sftp/sftpuser1/data
sudo chmod 775 /var/sftp/sftpuser1/data

* sudo mkdir /var/sftp/sftpuser1/data: sftpuser1 kullanıcısının dosyalarını depolayacağı data adında bir alt dizin oluşturur.
* sudo chown sftpuser1:sftpusers /var/sftp/sftpuser1/data: data dizininin sahipliğini sftpuser1 kullanıcısına ve sftpusers grubuna atar. Bu, sftpuser1‘in bu dizine yazma iznine sahip olmasını sağlar.
* sudo chmod 775 /var/sftp/sftpuser1/data: data dizinine sftpuser1 için tam izinler (okuma, yazma, çalıştırma), sftpusers grubu için okuma, yazma ve çalıştırma izinleri, diğerleri için ise sadece okuma ve çalıştırma izinleri verir. Bu izinleri kendi güvenlik gereksinimlerinize göre ayarlayabilirsiniz (örneğin, sadece kullanıcının yazma izni olması için 755 veya 700).

Bu yapılandırma ile, sftpuser1 SFTP ile bağlandığında, /var/sftp/sftpuser1 dizini onun kök dizini gibi görünecek ve yalnızca data dizinine erişebilecektir.

OpenSSH Sunucusunu SFTP Chroot İçin Yapılandırma

Bu, kurulumun en kritik adımıdır. OpenSSH sunucusunun yapılandırma dosyasını (sshd_config) düzenleyerek, sftpusers grubuna ait kullanıcıların chroot edilmesini ve yalnızca SFTP erişimine izin verilmesini sağlayacağız.

sshd_config Dosyasını Düzenleme

Yapılandırma dosyasını açmak için bir metin düzenleyici kullanın:

sudo nano /etc/ssh/sshd_config

Dosyada aşağıdaki değişiklikleri yapmanız gerekmektedir:

1. SFTP Alt Sistemini Değiştirme:
Subsystem sftp ile başlayan satırı bulun. Varsayılan olarak şöyle görünebilir:

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

Bu satırı aşağıdaki şekilde değiştirin veya eğer yoksa ekleyin:

Subsystem       sftp    internal-sftp

Bu değişiklik, SSH sunucusuna harici bir sftp-server ikilisi yerine kendi dahili SFTP sunucusunu kullanmasını söyler. Bu, chroot ortamının daha güvenli bir şekilde çalışmasını sağlar.

2. Match Bloğunu Ekleme:
Dosyanın en altına veya uygun bir yere aşağıdaki Match bloğunu ekleyin. Bu blok, sftpusers grubuna ait kullanıcılara özel kurallar uygular.

Match Group sftpusers
        ChrootDirectory /var/sftp/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
        PermitTunnel no
        AgentForwarding no

Bu satırları ayrıntılı olarak inceleyelim:
* Match Group sftpusers: Bu blok içindeki kuralların yalnızca sftpusers grubuna ait kullanıcılara uygulanacağını belirtir.
* ChrootDirectory /var/sftp/%u: Bu, SFTP kullanıcısının bağlanacağı kök dizinini belirler. %u değişkeni, bağlanan kullanıcının kullanıcı adıyla otomatik olarak değiştirilir. Yani sftpuser1 bağlandığında, /var/sftp/sftpuser1 onun için kök dizini olacaktır. Unutmayın: Bu dizinin ve tüm üst dizinlerinin (/var/sftp) root kullanıcısına ait olması ve başkaları tarafından yazılabilir olmaması kritik bir güvenlik gerekliliğidir.
* ForceCommand internal-sftp: Bu komut, kullanıcının SSH üzerinden herhangi bir komut çalıştırmasını engeller ve yalnızca dahili SFTP sunucusunu başlatmaya zorlar. Bu, kabuk erişimini tamamen devre dışı bırakır.
* AllowTcpForwarding no, X11Forwarding no, PermitTunnel no, AgentForwarding no: Bu satırlar, SSH’nin sunduğu diğer potansiyel tünelleme veya iletme özelliklerini devre dışı bırakarak ek güvenlik sağlar. SFTP için bu özelliklere genellikle ihtiyaç duyulmaz.

Yapılandırma dosyasını kaydetmek için Ctrl+O, ardından Enter ve Ctrl+X tuşlarına basın.

SSH Hizmetini Yeniden Başlatma

Yapılandırma değişikliklerinin etkili olması için SSH hizmetini yeniden başlatmanız gerekir:

sudo systemctl restart ssh

veya Ubuntu 16.04’te bazen hala kullanılan yöntem:

sudo service ssh restart

SSH hizmetinin başarılı bir şekilde yeniden başlatıldığından emin olmak için durumunu kontrol edebilirsiniz:

sudo systemctl status ssh

Çıktıda active (running) ibaresini görmelisiniz. Herhangi bir hata durumunda, journalctl -u ssh.service komutuyla veya /var/log/auth.log dosyasını kontrol ederek sorun giderebilirsiniz.

SFTP Bağlantısını Test Etme

Şimdi yapılandırmamızın doğru çalıştığından emin olmak için SFTP bağlantısını test edelim.

Kabuk Erişimi Testi

Öncelikle, sftpuser1 kullanıcısının kabuk erişimi olmadığından emin olalım:

ssh sftpuser1@your_server_ip

your_server_ip yerine sunucunuzun IP adresini veya alan adını yazın. Parolayı girdikten sonra, aşağıdaki gibi bir mesaj almanız gerekir:

This account is currently not available.
Connection to your_server_ip closed.

Bu mesaj, kullanıcının kabuk erişiminin başarıyla engellendiğini gösterir.

SFTP Bağlantı Testi

Şimdi SFTP istemcinizden (örneğin FileZilla, WinSCP veya komut satırı sftp aracı) bağlantı kurmayı deneyin.

Komut satırı SFTP istemcisi kullanıyorsanız:

sftp sftpuser1@your_server_ip

Parolayı girdikten sonra, SFTP oturumuna başarılı bir şekilde bağlanmanız gerekir. Bağlandıktan sonra, mevcut dizinin / olarak görünmesi ve içinde data dizinini görmeniz gerekir:

sftp> pwd
Remote working directory: /
sftp> ls
data

Şimdi data dizinine girin ve bir dosya yüklemeyi veya indirmeyi deneyin:

sftp> cd data
sftp> put local_file.txt
Uploading local_file.txt to /data/local_file.txt
local_file.txt                                100% 0     0.0KB/s   00:00
sftp> get remote_file.txt

Başarılı bir şekilde dosya yükleyip indirebiliyorsanız ve data dizini dışına çıkamıyorsanız, SFTP kurulumunuz başarıyla tamamlanmış demektir.

Gelişmiş Konular ve En İyi Uygulamalar

SFTP kurulumunuzu daha da güçlendirmek ve yönetilebilirliğini artırmak için bazı gelişmiş konuları ve en iyi uygulamaları göz önünde bulundurabilirsiniz.

1. Birden Fazla SFTP Kullanıcısı Ekleme

Yeni bir SFTP kullanıcısı eklemek için yukarıdaki adımları tekrarlamanız yeterlidir:

1. Kullanıcı Oluşturma:

sudo useradd -g sftpusers -s /sbin/nologin sftpuser2
    sudo passwd sftpuser2

2. Chroot Dizini ve Yazılabilir Alan Oluşturma:

sudo mkdir -p /var/sftp/sftpuser2
    sudo chown root:root /var/sftp/sftpuser2
    sudo chmod 755 /var/sftp/sftpuser2
    sudo mkdir /var/sftp/sftpuser2/data
    sudo chown sftpuser2:sftpusers /var/sftp/sftpuser2/data
    sudo chmod 775 /var/sftp/sftpuser2/data

SSH yapılandırmasını zaten Match Group sftpusers bloğu ile ayarladığımız için, yeni bir kullanıcı ekledikten sonra SSH hizmetini yeniden başlatmanıza gerek yoktur, ancak emin olmak için yeniden başlatmakta fayda var.

2. SSH Anahtar Kimlik Doğrulaması

Parola tabanlı kimlik doğrulama yerine SSH anahtar çiftleri kullanmak, güvenliği önemli ölçüde artırır.

1. İstemci Tarafında Anahtar Çifti Oluşturma:
Yerel makinenizde (SFTP istemcisi) ssh-keygen komutunu kullanarak bir SSH anahtar çifti oluşturun:

ssh-keygen -t rsa -b 4096

Parola istemediğinizden emin olmak için bir parola belirtmeyin (veya güvenli bir parola seçin). Bu, ~/.ssh/id_rsa (özel anahtar) ve ~/.ssh/id_rsa.pub (genel anahtar) dosyalarını oluşturacaktır.

2. Genel Anahtarı Sunucuya Kopyalama:
Genel anahtarı (id_rsa.pub) sunucudaki SFTP kullanıcısının chroot dizininin içinde, ancak özel bir konumda saklamanız gerekir. Chroot ortamında bu biraz karmaşık olabilir. En yaygın ve güvenli yöntem, genel anahtarı kullanıcının ChrootDirectory içinde bir .ssh dizinine yerleştirmektir.

Öncelikle, kullanıcının chroot dizini içinde .ssh dizinini ve authorized_keys dosyasını oluşturalım:

sudo mkdir /var/sftp/sftpuser1/.ssh
    sudo chown root:root /var/sftp/sftpuser1/.ssh
    sudo chmod 700 /var/sftp/sftpuser1/.ssh
    sudo touch /var/sftp/sftpuser1/.ssh/authorized_keys
    sudo chown root:root /var/sftp/sftpuser1/.ssh/authorized_keys
    sudo chmod 600 /var/sftp/sftpuser1/.ssh/authorized_keys

Dikkat: .ssh dizini ve authorized_keys dosyası root kullanıcısına ait olmalı ve başkaları tarafından yazılabilir olmamalıdır. Bu, chroot ortamında anahtar kimlik doğrulamasının güvenli bir şekilde çalışması için zorunludur. Kullanıcı bu dosyaları kendisi yönetemez.

Şimdi, yerel makinenizdeki id_rsa.pub dosyasının içeriğini kopyalayın ve sunucudaki /var/sftp/sftpuser1/.ssh/authorized_keys dosyasına yapıştırın. Bunu scp ile yapabilirsiniz:

scp ~/.ssh/id_rsa.pub sftpuser1@your_server_ip:/tmp/id_rsa.pub

Ardından sunucuya SSH ile bağlanın (eğer başka bir kullanıcıyla kabuk erişiminiz varsa) ve anahtarı kopyalayın:

sudo cat /tmp/id_rsa.pub >> /var/sftp/sftpuser1/.ssh/authorized_keys
    sudo rm /tmp/id_rsa.pub

Eğer sunucuya kabuk erişiminiz yoksa, genel anahtarınızı elle kopyalayıp authorized_keys dosyasına yapıştırmanız gerekecektir.

3. SSH Hizmetini Yeniden Başlatma:
Anahtar değişikliklerinin etkili olması için SSH hizmetini yeniden başlatın:

sudo systemctl restart ssh

4. Anahtar ile Test Etme:
Şimdi SFTP istemcinizde özel anahtar dosyasını (id_rsa) kullanarak bağlantı kurmayı deneyin. Parola istemeden bağlanmanız gerekir.

3. SSH Parola Kimlik Doğrulamayı Devre Dışı Bırakma (Yalnızca Anahtar Kullanımı)

Eğer tüm SFTP kullanıcılarınız SSH anahtar kimlik doğrulaması kullanacaksa, sunucunuzun güvenliğini artırmak için parola kimlik doğrulamasını tamamen devre dışı bırakabilirsiniz.

sshd_config dosyasını tekrar açın:

sudo nano /etc/ssh/sshd_config

Aşağıdaki satırları bulun ve değerlerini no olarak ayarlayın:

PasswordAuthentication no
ChallengeResponseAuthentication no

Ardından SSH hizmetini yeniden başlatın:

sudo systemctl restart ssh

Uyarı: Bu değişikliği yapmadan önce, en az bir kullanıcının SSH anahtar kimlik doğrulaması ile sorunsuz bir şekilde bağlanabildiğinden emin olun. Aksi takdirde sunucuya erişiminizi kaybedebilirsiniz.

4. Güvenlik Duvarı Yapılandırması (UFW)

Sunucunuzda güvenlik duvarını (UFW) etkinleştirdiyseniz, SSH (ve dolayısıyla SFTP) bağlantıları için 22 numaralı bağlantı noktasının açık olduğundan emin olun.

sudo ufw allow OpenSSH
sudo ufw enable

Eğer SSH için farklı bir port kullanıyorsanız, o portu açmanız gerekir:

sudo ufw allow your_ssh_port/tcp

5. SSH Portunu Değiştirme

Varsayılan SSH portu (22) sıkça saldırıya uğradığı için, bunu farklı, standart olmayan bir porta değiştirmek ek bir güvenlik katmanı sağlar.

sshd_config dosyasını açın:

sudo nano /etc/ssh/sshd_config

Port 22 satırını bulun ve istediğiniz başka bir porta (örneğin, 2222) değiştirin:

Port 2222

Ardından SSH hizmetini yeniden başlatın:

sudo systemctl restart ssh

Yeni portu güvenlik duvarınızda açtığınızdan ve eski portu kapattığınızdan emin olun.

sudo ufw allow 2222/tcp
sudo ufw delete allow OpenSSH # veya ufw delete allow 22/tcp

Uyarı: SSH portunu değiştirdikten sonra, yeni portu kullanarak bağlanabildiğinizden emin olmadan mevcut SSH oturumunuzu kapatmayın.

6. Günlük Kayıtlarını Kontrol Etme

SFTP kullanıcılarının etkinliklerini izlemek ve sorunları gidermek için SSH günlük kayıtlarını düzenli olarak kontrol etmek önemlidir.

sudo tail -f /var/log/auth.log

Bu komut, /var/log/auth.log dosyasındaki son kayıtları gösterir ve yeni kayıtlar eklendikçe güncellenir. SFTP bağlantı girişimleri, chroot hataları ve diğer güvenlik olayları bu dosyada kaydedilir.

Sorun Giderme

SFTP kurulumunda karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

* “This account is currently not available.” hatası alıyorum, ancak SFTP’ye de bağlanamıyorum.
* Çözüm: sshd_config dosyasındaki Subsystem sftp internal-sftp satırını ve Match Group sftpusers bloğunu doğru yazdığınızdan emin olun. Özellikle ForceCommand internal-sftp satırı kritik öneme sahiptir. SSH hizmetini yeniden başlattığınızdan emin olun.
* Kullanıcının kabuğunun /sbin/nologin olarak ayarlandığından emin olun (cat /etc/passwd | grep sftpuser1).

* SFTP ile bağlanmaya çalışırken “Permission denied” hatası alıyorum.
* Çözüm: Bu genellikle chroot dizini izinlerinden kaynaklanır.
* /var/sftp dizininin root:root tarafından sahiplendiğinden ve izinlerinin 755 olduğundan emin olun.
* /var/sftp/sftpuser1 (chroot dizininin kendisi) dizininin root:root tarafından sahiplendiğinden ve izinlerinin 755 olduğundan emin olun.
* /var/sftp/sftpuser1/data (kullanıcının yazılabilir dizini) dizininin sftpuser1:sftpusers tarafından sahiplendiğinden ve izinlerinin 775 (veya uygun diğer yazma izinleri) olduğundan emin olun.
* sshd_config dosyasındaki ChrootDirectory yolunun doğru olduğundan emin olun.
* SSH hizmetini yeniden başlattığınızdan emin olun.
* SSH anahtar kimlik doğrulaması kullanıyorsanız, /var/sftp/sftpuser1/.ssh dizininin root:root tarafından sahiplendiğinden ve 700 iznine sahip olduğundan, ayrıca /var/sftp/sftpuser1/.ssh/authorized_keys dosyasının root:root tarafından sahiplendiğinden ve 600 iznine sahip olduğundan emin olun.

* SSH hizmeti yeniden başlamıyor veya hata veriyor.
* Çözüm: sudo systemctl status ssh veya journalctl -u ssh.service komutlarını kullanarak hata mesajlarını kontrol edin. Genellikle sshd_config dosyasında bir yazım hatası veya yanlış yapılandırma vardır. sudo sshd -t komutu, yapılandırma dosyasındaki sözdizimi hatalarını kontrol etmenize yardımcı olabilir.

* SFTP ile bağlanabiliyorum ama data dizinini göremiyorum veya içine yazamıyorum.
* Çözüm: /var/sftp/sftpuser1/data dizininin var olduğundan ve sftpuser1 kullanıcısına ait olduğundan (chown sftpuser1:sftpusers /var/sftp/sftpuser1/data) ve uygun yazma izinlerine sahip olduğundan (chmod 775 /var/sftp/sftpuser1/data) emin olun.

* SFTP istemcim “Connection refused” diyor.
* Çözüm: SSH hizmetinin çalışır durumda olduğundan emin olun. Güvenlik duvarınızın (UFW) SSH portunuza izin verdiğinden emin olun. Sunucu IP adresini veya alan adını doğru yazdığınızdan emin olun.

Bu sorun giderme adımları, çoğu SFTP chroot kurulumu sorununu çözmenize yardımcı olacaktır. Her zaman SSH günlüklerini kontrol etmek, sorunun kaynağını anlamanın en iyi yoludur.

Sonuç

Bu makalede, Ubuntu 16.04 üzerinde OpenSSH’nin chroot özelliğini kullanarak kabuk erişimi olmayan, yalnızca SFTP erişimli kullanıcıları nasıl yapılandıracağınızı ayrıntılı olarak ele aldık. Bu yöntem, sunucunuzun güvenliğini artırırken, belirli kullanıcıların dosya transferi ihtiyaçlarını güvenli bir şekilde karşılamalarını sağlar.

Kurulumun temel adımları şunları içerir:
1. SFTP kullanıcıları için özel bir grup oluşturmak.
2. /sbin/nologin kabuğuyla yeni kullanıcılar oluşturmak.
3. SFTP chroot ortamı için dizin yapısını (/var/sftp/%u ve altındaki yazılabilir data dizini) hazırlamak ve doğru dosya izinlerini ve sahipliklerini ayarlamak. Bu adımın, özellikle chroot dizininin root‘a ait olması ve başkaları tarafından yazılabilir olmaması kuralının titizlikle uygulanması, güvenli bir chroot ortamı için hayati öneme sahiptir.
4. OpenSSH yapılandırma dosyasını (sshd_config) Subsystem sftp internal-sftp ve Match Group sftpusers bloğu ile düzenlemek.
5. SSH hizmetini yeniden başlatmak ve bağlantıyı test etmek.

Ek güvenlik önlemleri olarak SSH anahtar kimlik doğrulaması kullanmak, parola kimlik doğrulamasını devre dışı bırakmak, SSH portunu değiştirmek ve güvenlik duvarını yapılandırmak gibi en iyi uygulamaları da gözden geçirdik. Bu adımları uygulayarak, sunucunuzdaki dosya transferi işlemlerini çok daha güvenli ve kontrollü bir hale getirebilirsiniz. Unutmayın, güvenlik sürekli bir süreçtir ve sistemlerinizi düzenli olarak güncellemek ve izlemek önemlidir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.