11 Şub 2021

SFTP Server Kurulumu (CentOS/Redhat 7)

 

FTP Nedir?

FTP, File Transfer Protocol (dosya transfer protokolü) anlamına gelir. 21 portu üzerinden iki bilgisayar arasında dosya transfer etmemizi sağlar.

 





 

vSFTP Nedir ?

vsftpd (very secure FTP daemon), Linux dahil Unix benzeri sistemler için bir FTP sunucusudur. Bir çok FTP sunucusunda eksik olan birçok özelliği desteklemektedir. Aşağıda bir kaç örnek görebilirsiniz.

    • Çok yüksek güvenlik gereksinimleri
    • band genişlği sınırlandırma
    • sanal kullanıcı oluşturma olanağı
    • yüksek hız vs.

1- vsftpd Kurulumu

yum install vsftpd -y   # komutu ile gerekli vsftpd paketi kurulumu yapılır.

2- vsftpd Yapılandırma

İlk olarak mevcut default konfigürasyon dosyasını yedekleyelim.

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

echo "" > vsftpd.conf # conf dosyasının içeriğini temizleyelim.

xferlog_file=/var/log/xferlog   

anonymous_enable=NO  #Anonim erişimleri kapatmak için NO yapıyoruz.
local_enable=YES  #local kullanıcıların (root, orcale vs.) şifreleri ile bağlanmaları için YES yapıyoruz.
write_enable=YES # dosya sistemini değiştiren herhangi bir FTP komutuma izin verilip verilmediğini kontrol eder. 
local_umask=002 # Yerel kullanıcıların dosya oluşturmak için umask değerini ayarlar.
dirmessage_enable=YES #kullanıcıların yeni bir dizine girdiklerinde mesaj göstermek için kullanılır. .message dosyasının içeriğini gösterir.
xferlog_enable=YES # upload/download hakkında detaylı bilgi veren log oluşmasını sağlar.
dual_log_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES # YES olduğu için izinli kullanıcı listesi belirtilmeli  
userlist_deny=NO
tcp_wrappers=NO
pasv_enable=YES
ssl_enable=YES
allow_anon_ssl=NO # YES olarak ayarlanırsa anonim kullanıcıların SSL bağlantı yapmalarına izin verir.
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
pasv_max_port=65535
pasv_min_port=64000
reverse_lookup_enable=NO

### detaylı bilgi ve açıklamaya buradan erişebilirsiniz.

3- FTP kullanıcı tanımlarının yapılması

FTP yapmasını istediğimiz kullanıcı bilgilerini aşağıdaki dosya içerisine ekliyoruz.

vim /etc/vsftpd/userlist 

FTP yapmasını istemediğimiz kullanıcı bilgilerini de aşağıdaki dosya içerisine ekliyoruz.

vim /etc/vsftpd/ftpusers 


4- Servisin Başlatılması

Tanımlarımızı yaptıktan sonra aşağıdaki komutlar ile servisimizi çalıştırıyoruz.

systemctl start vsftpd.service # servis çalıştırılır
systemctl enable vsftpd.service # reboot sonrası servisin otomatik çalışması için

Servisi çalıştırdığımız da sertifika dosyasını bulamadığına dair hata alırsanız aşağıdaki komutla sertifikanızı oluşturabilirsiniz.

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem  # sertifika geçerlilik süresini 365 değerini değiştirerek ayarlayabilirsiniz.

5- Firewall Tanımları

Sunucuda firewall çalışıyorsa ftp servisi ve 21 portu için gereken izinleri aşağıdaki şekilde veriyoruz.

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

6- Selinux Tanımları

Dosya transferi noktasında herhangi bir sıkıntı yaşarsanız SELINUX u disable yapabilirsiniz.

vim /etc/selinux/config  # dosya içeriğindeki SELINUX parametresini “SELINUX=disabled” şeklinde değiştirip sunucuyu yeniden başlattığınızda SELINUX kaynaklı hatalardan kurtulmuş olursunuz.

7- Oluşturulan kullanıcıların sadece sizin belirttiğiniz klasör dışındaki yerlere bağlanamaması için gereken tanımların yapılması

İlk olarak grup tanımını yapıyoruz.

groupadd sftpgroup

Oluşturduğumuz gruba ftp yapmasını istediğimiz kullanıcıları ekliyoruz.

useradd -M -g sftpgroup -s /usr/sbin/nologin ftpuser1

useradd -M -g sftpgroup -s /usr/sbin/nologin ftpuser2

Oluşturduğumuz kullanıcıların şifresini belirliyoruz.

passwd ftpuser1

passwd ftpuser2

FTP ana dizinimizi oluşturalım.

mkdir /ftproot   # home dizini altını da kullanabilirsiniz.
mkdir /ftproot/user1 # ftpuser1 in bağlanacağı dizin
mkdir /ftproot/user2  # ftpuser2 nin bağlanacağı dizin
sudo chown root:root /ftproot # dizin sahipliğini root a veriyoruz.
chown root:ftpuser1 /ftproot/user1 # klasör sahiplikleri ilgili kullanıcılara verildi. 
chown root:ftpuser2 /ftproot/user2 # klasör sahiplikleri ilgili kullanıcılara verildi.
Klasörlerdeki yetkilendirmeleri de kontrol edelim ve other grubu için olan read/execute yetkilerini “ chmod o-rx * " komutu ile kaldıralım.

drwxrwx---. 2 root ftpuser1 24 Feb 11 02:29 user1

drwxrwx---. 2 root ftpuser2  6 Feb 11 02:24 user2
ftpuser2:x:1003:1000::/ftproot/user2:/usr/sbin/nologin

oluşturduğumuz ftpuser1 ve ftpuser2 kullanıcıların home dizin tanımlarını değiştirelim.

vim /etc/passwd  # dosyası açılarak aşağıdaki gibi düzenlenir.

ftpuser1:x:1002:1000::/ftproot/user1:/usr/sbin/nologin

sshd tanımlarının yapılması;

vim /etc/ssh/sshd_config   # dosyası açılarak aşağıdaki gibi düzenlenir.

ilk olarak “Subsystem       sftp    /usr/libexec/openssh/sftp-server” ifadesi “#” ile yorum satırına çevrilir ve aşağıdaki tanımlar eklenir.

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
Match Group sftpgroup
ChrootDirectory /ftproot/
PermitTunnel no
AllowAgentForwarding no
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

Tanımlar bittikten sonra sshd ve vsftpd servisleri yeniden başlatılır.

systemctl restart sshd
systemctl restart vsftpd

bağlantının testi







Hiç yorum yok: