Jaminto, soruyu cevaplamak için harika bir iş çıkardı, ancak son zamanlarda süreci kendim geçirdim ve Jaminto'nun cevabını genişletmek istedim.
Zaten bir EC2 örneği oluşturduğunuzu ve bir Elastik IP Adresini ilişkilendirdiğinizi varsayıyorum.
Adım # 1: vsftpd'yi yükleyin
EC2 sunucunuza SSH. Tür:
> sudo yum install vsftpd
Bu vsftpd'yi yüklemelidir.
Adım # 2: EC2 yönetim ortamınızdaki FTP bağlantı noktalarını açın
Ardından, EC2 sunucunuzdaki FTP bağlantı noktalarını açmanız gerekir. AWS EC2 Yönetim Konsolu'nda oturum açın ve soldaki gezinti ağacından Güvenlik Grupları'nı seçin. EC2 yönetim ortamınıza atanan güvenlik grubunu seçin. Ardından Gelen sekmesini seçin, ardından Düzenle'yi tıklayın:
Bağlantı noktası aralıkları 20-21 ve 1024-1048 olan iki Özel TCP Kuralı ekleyin. Kaynak için, 'Her Yerde' seçeneğini belirleyebilirsiniz. Kaynağı kendi IP adresinize ayarlamaya karar verirseniz, IP adresinizin DHCP üzerinden atanmışsa değişebileceğini unutmayın.
Adım # 3: vsftpd.conf dosyasında güncellemeler yapın
Vsftpd conf dosyanızı yazarak düzenleyin:
> sudo vi /etc/vsftpd/vsftpd.conf
Bu satırı değiştirerek anonim FTP'yi devre dışı bırakın:
anonymous_enable=YES
için
anonymous_enable=NO
Sonra vsftpd.conf dosyasının altına aşağıdaki satırları ekleyin:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Vsftpd.conf dosyanız aşağıdaki gibi görünmelidir - pasv_address yerine herkese açık IP adresinizi koyun:
Değişiklikleri kaydetmek için escape tuşuna basın, sonra yazın :wq
ve enter tuşuna basın .
Adım # 4: VSFTPD'yi Yeniden Başlatın
Vsftpd yazarak yeniden başlatın:
> sudo /etc/init.d/vsftpd restart
Şuna benzeyen bir mesaj görmelisiniz:
Bu işe yaramazsa şunu deneyin:
> sudo /sbin/service vsftpd restart
5. Adım: Bir FTP kullanıcısı oluşturun
/ Etc / vsftpd / user_list'e göz atarsanız aşağıdakileri görürsünüz:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
Bu temelde "Bu kullanıcıların FTP erişimine izin verme" diyor. vsftpd, bu listede olmayan herhangi bir kullanıcıya FTP erişimine izin verir.
Bu nedenle, yeni bir FTP hesabı oluşturmak için sunucunuzda yeni bir kullanıcı oluşturmanız gerekebilir. (Veya, / etc / vsftpd / user_list'te listelenmemiş bir kullanıcı hesabınız varsa, bir sonraki adıma atlayabilirsiniz.)
Bir EC2 örneğinde yeni bir kullanıcı oluşturmak oldukça basittir. Örneğin, 'bret' kullanıcısını oluşturmak için şunu yazın:
> sudo adduser bret
> sudo passwd bret
İşte böyle görünecek:
6. Adım: Kullanıcıları ana dizinleriyle sınırlama
Bu noktada, FTP kullanıcılarınız ana dizinleri ile sınırlı değildir. Bu çok güvenli değil, ancak kolayca düzeltebiliriz.
Vsftpd conf dosyanızı tekrar yazarak düzenleyin:
> sudo vi /etc/vsftpd/vsftpd.conf
Çizginin yorumunu kaldırın:
chroot_local_user=YES
İşiniz bittiğinde şöyle görünmelidir:
Vsftpd sunucusunu şu şekilde yeniden başlatın:
> sudo /etc/init.d/vsftpd restart
Hepsi tamam!
Ek A: Yeniden başlatmayı atlatmak
vsftpd sunucunuz önyüklendiğinde otomatik olarak başlamaz. Benim gibiyseniz, bu, EC2 örneğinizi yeniden başlattıktan sonra, FTP bozuk gibi göründüğünde bir terör anı hissedeceğiniz anlamına gelir - ancak gerçekte, sadece çalışmıyor !. İşte bunu düzeltmenin kullanışlı bir yolu:
> sudo chkconfig --level 345 vsftpd on
Alternatif olarak, redhat kullanıyorsanız, hizmetlerinizi yönetmenin başka bir yolu, hangi hizmetlerin otomatik olarak başlaması gerektiğini kontrol etmek için bu şık grafik kullanıcı arayüzünü kullanmaktır:
> sudo ntsysv
Artık sunucunuz açıldığında vsftpd otomatik olarak başlayacaktır.
Ek B: Kullanıcının FTP giriş dizinini değiştirme
* NOT: Iman Sedighi, kullanıcıların belirli bir dizine erişimini kısıtlamak için daha zarif bir çözüm yayınlamıştır. Lütfen cevap olarak gönderilen mükemmel çözümüne bakın *
Bir kullanıcı oluşturmak ve FTP erişimini / var / www gibi belirli bir klasöre kısıtlamak isteyebilirsiniz. Bunu yapmak için kullanıcının varsayılan giriş dizinini değiştirmeniz gerekir:
> sudo usermod -d /var/www/ username
Bu özel örnekte, kullanıcıya genellikle / var / www klasörüyle ilişkili olan 'www' grubuna izin vermek tipiktir:
> sudo usermod -a -G www username