CentOS 7-de FTP serwerini nädip gurmaly, sazlamaly we ygtybarly etmeli - [Giňişleýin gollanma]


FTP (Faýl geçirmek protokoly) serwer bilen müşderileriň arasynda faýllary tor arkaly geçirmek üçin adaty we giňden ulanylýan adaty guraldyr, esasanam tassyklamak zerurlygy ýok (näbelli ulanyjylaryň serwere birikmegine rugsat berýär). FTP-iň deslapky derejede ygtybarly däldigine düşünmelidiris, sebäbi ulanyjy şahsyýet maglumatlaryny we maglumatlary şifrlemezden geçirýär.

Bu gollanmada, CentOS/RHEL 7 we Fedora paýlamalarynda FTP serwerini gurmak, konfigurasiýa etmek we ygtybarly ädimleri beýan ederis (VSFTPD “Örän ygtybarly FTP Daemon” diýmekdir).

Bu gollanmadaky ähli buýruklaryň kök hökmünde işlejekdigine üns beriň, eger serwer kök hasaby bilen işlemeýän bolsaňyz, kök artykmaçlyklaryny almak üçin sudo buýrugyny ulanyň.

1-nji ädim: FTP serwerini gurmak

1. vsftpd serwerini gurmak göni öňe gidýär, terminalda aşakdaky buýrugy işlediň.

# yum install vsftpd

2. Gurmak tamamlanandan soň, hyzmat ilki ýapylýar, şonuň üçin ony häzirlikçe el bilen başlamaly we indiki ulgam ýüklemesinden hem awtomatiki başlamaga mümkinçilik bermeli:

# systemctl start vsftpd
# systemctl enable vsftpd

3. Ondan soň, daşarky ulgamlardan FTP hyzmatlaryna girmäge rugsat bermek üçin, FTP daemonlarynyň aşakdaky ýaly diňleýän 21-nji portuny açmalydyrys:

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

2-nji ädim: FTP serwerini sazlamak

4. Indi FTP serwerimizi gurmak we goramak üçin birnäçe konfigurasiýany ýerine ýetirmek üçin geçeris, geliň asyl konfigurasiýa faýlynyň ätiýaçlyk nusgasyny /etc/vsftpd/vsftpd.conf:

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

Ondan soň ýokardaky konfigurasiýa faýlyny açyň we şu degişli bahalar bilen aşakdaky opsiýalary düzüň:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Indi ulanyjy sanawy faýly /etc/vsftpd.userlist esasynda ulanyjylara FTP girmegine rugsat bermek/ret etmek üçin FTP sazlaň.

Düzgüne görä, userlist_file =/etc/vsftpd.userlist sanawynda görkezilen ulanyjylara, userlist_enable=YES bolsa, YES-e düzülen userlist_deny opsiýasy bilen girmek gadagan edilýär.

Şeýle-de bolsa, userlist_deny=NOOK sazlamany üýtgedýär, ýagny diňe ulanyjy sanawy_file =/etc/vsftpd.userlist sanawynda görkezilen ulanyjylara girmäge rugsat berler.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Bularyň hemmesi däl, ulanyjylar FTP serwerine girenlerinde, tussag edilen türmä salýarlar, bu diňe FTP sessiýasy üçin öý bukjasy hökmünde çykyş etjek ýerli kök katalogy.

Geljekde, aşakda düşündirilişi ýaly, FTP ulanyjylaryny FTP ulanyjylary üçin Home kataloglaryna (ýerli kök) katalogyna nädip bölüp boljakdygyny iki sany ssenariýa serederis.

6. Indi FTP ulanyjylaryny Öý kataloglaryna çäklendirmek üçin şu iki warianty goşuň.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES, ýerli ulanyjylaryň deslapky sazlamalar boýunça gireninden soň olaryň baş katalogy, türme tussaglygyna ýerleşdiriljekdigini aňladýar.

Mundan başga-da, vsftpd howpsuzlyk sebäpli türme tussaglygynyň bukjasynyň ýazylmagyna rugsat bermeýär, ýöne bu sazlamany ýok etmek üçin allow_writeable_chroot=YES opsiýasyny ulanyp bileris.

Faýly ýazdyryň we ýapyň.

SELinux bilen FTP serwerini goramak

7. Indi, FTP-iň ulanyjynyň öý bukjasyndaky faýllary okamagyna rugsat bermek üçin aşakda SELinux boolean goýalyň. Ilki bilen buýrugy ulanyp ýerine ýetirilendigine üns beriň:

# setsebool -P ftp_home_dir on

Şeýle-de bolsa, bu näsazlyk hasabatynda düşündirilişi ýaly ftp_home_dir direktiwasy öçürildi: https://bugzilla.redhat.com/show_bug.cgi?id=1097775

Indi FTP ulanyjynyň öý katalogyny okamaga/ýazmaga rugsat bermek üçin SELinux düzgünini düzmek üçin semanage buýrugyny ulanarys.

# semanage boolean -m ftpd_full_access --on

Şu wagt, ýokarda şu wagta çenli eden ähli üýtgeşmelerimizi amala aşyrmak üçin vsftpd-i täzeden açmaly:

# systemctl restart vsftpd

4-nji ädim: FTP serwerini barlamak

8. Indi useradd buýrugy bilen FTP ulanyjysyny döredip FTP serwerini synap göreris.

# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
# passwd ravi

Ondan soň, echo buýrugyny ulanyp, ulanyjy ravi /etc/vsftpd.userlist faýlyna goşmaly:

# echo "ravi" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

9. Indi ýokardaky sazlamalarymyzyň dogry işleýändigini barlamagyň wagty geldi. Anonim girişleri barlamak bilen başlalyň, aşakdaky ekrandan anonim girişlere rugsat berilmeýändigini görüp bileris:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Geliň, /etc/vsftpd.userlist faýlynda görkezilmedik bir ulanyja girmäge rugsat beriljekdigini ýa-da ýokdugyny barlap göreliň, aşakdaky ekranda görkezilişi ýaly:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Indi /etc/vsftpd.userlist faýlynda görkezilen ulanyjynyň girişden soň öz öý bukjasyna ýerleşdirilendigini ýa-da ýokdugyny barlaň:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Näme edýändigiňizi anyk bilýän bolsaňyz, bu opsiýany işjeňleşdiriň. Bu howpsuzlyk netijeleriniň vsftpd aýratyn däldigini bellemek möhümdir, olar ýerli ulanyjylary türme tussaglygyna salmagy teklip edýän ähli FTP daemonlaryna degişlidir.

Şonuň üçin indiki bölümde başga ýazylmaýan ýerli kök katalogyny düzmegiň has ygtybarly usulyna serederis.

5-nji ädim: Dürli FTP ulanyjynyň öý kataloglaryny sazlaň

12. vsftpd konfigurasiýa faýlyny täzeden açyň we aşakdaky ygtybarly opsiýany düşündirip başlaň:

#allow_writeable_chroot=YES

Soňra ulanyjy üçin alternatiw ýerli kök katalogyny dörediň ( ravi , siziňki başgaça bolmagy mümkin) we bu bukja ähli ulanyjylara ýazmak rugsatlaryny aýyryň:

# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp

13. Ondan soň, ulanyjy öz faýllaryny saklaýan ýerli köküň aşagynda bir katalog dörediň:

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

Soňra vsftpd konfigurasiýa faýlynda şu bahalar bilen aşakdaky opsiýalary goşuň/üýtgediň:

user_sub_token=$USER         # inserts the username in the local root directory 
local_root=/home/$USER/ftp   # defines any users local root directory

Faýly ýazdyryň we ýapyň. Againene bir gezek täze sazlamalar bilen hyzmaty täzeden başlalyň:

# systemctl restart vsftpd

14. Indi ýene bir gezek synagdan geçiriň we ulanyjylaryň ýerli kök katalogynyň onuň öý katalogynda döreden FTP katalogydygyny görüň.

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Bu! Bu makalada CentOS 7-de FTP serwerini nädip gurmalydygyny, sazlamalydygyny we howpsuzlygyny üpjün etmegi, aşakdaky düşündiriş bölümini bu gollanma barada bize ýazmak/bu mowzuk hakda peýdaly maglumatlary paýlaşmak üçin düşündirdik.

Indiki makalada, CentOS 7-de SSL/TLS birikmelerini ulanyp, FTP serwerini nädip goramalydygyny görkezeris, şol wagta çenli TecMint-e birikdiriň.