Android

วิธีการตั้งค่าเซิร์ฟเวอร์ ftp ด้วย vsftpd บน centos 7

Садага болоюн, чырагым, лампочкам деген апа маегинде лампа заводунда иштегенин айтты

Садага болоюн, чырагым, лампочкам деген апа маегинде лампа заводунда иштегенин айтты

สารบัญ:

Anonim

FTP (File Transfer Protocol) เป็นโปรโตคอลเครือข่ายไคลเอนต์ - เซิร์ฟเวอร์ที่อนุญาตให้ผู้ใช้ถ่ายโอนไฟล์ไปยังและจากเครือข่ายระยะไกล

มีเซิร์ฟเวอร์ FTP โอเพ่นซอร์สหลายตัวสำหรับ Linux ที่นิยมมากที่สุดและใช้กันอย่างแพร่หลายคือ PureFTPd, ProFTPD และ vsftpd

ในบทช่วยสอนนี้เราจะทำการติดตั้ง vsftpd (Very Secure Ftp Daemon) บน CentOS 7 มันเป็นเซิร์ฟเวอร์ FTP ที่เสถียรปลอดภัยและรวดเร็ว นอกจากนี้เราจะแสดงวิธีกำหนดค่า vsftpd เพื่อ จำกัด ผู้ใช้ในไดเรกทอรีหลักและเข้ารหัสการส่งทั้งหมดด้วย SSL / TLS

เพื่อการถ่ายโอนข้อมูลที่ปลอดภัยและรวดเร็วยิ่งขึ้นให้ใช้ SCP หรือ SFTP

ข้อกำหนดเบื้องต้น

ก่อนดำเนินการกับบทช่วยสอนนี้ต่อให้แน่ใจว่าคุณได้เข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ sudo

การติดตั้ง vsftpd บน CentOS 7

แพ็คเกจ vsftpd พร้อมใช้งานในที่เก็บ CentOS เริ่มต้น หากต้องการติดตั้งให้ใช้คำสั่งต่อไปนี้:

sudo yum install vsftpd

เมื่อติดตั้งแพ็กเกจแล้วให้เริ่ม vsftpd daemon และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

คุณสามารถตรวจสอบว่าบริการ vsftpd กำลังทำงานอยู่โดยการพิมพ์สถานะ:

sudo systemctl status vsftpd

ผลลัพธ์จะมีลักษณะดังนี้ด้านล่างแสดงว่าบริการ vsftpd เปิดใช้งานและทำงานอยู่:

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

การกำหนดค่า vsftpd

การกำหนดค่าเซอร์วิส vsftpd เกี่ยวข้องกับการแก้ไขไฟล์คอนฟิกูเรชัน /etc/vsftpd/vsftpd.conf การตั้งค่าส่วนใหญ่มีการบันทึกไว้อย่างดีภายในไฟล์กำหนดค่า สำหรับตัวเลือกทั้งหมดที่มีให้เยี่ยมชมหน้า vsftpd อย่างเป็นทางการ

ในส่วนต่อไปนี้เราจะทำการตั้งค่าที่สำคัญบางอย่างเพื่อกำหนดค่าการติดตั้ง vsftpd ที่ปลอดภัย

เริ่มต้นด้วยการเปิดไฟล์คอนฟิกูเรชัน vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. การเข้าถึง FTP

เราจะอนุญาตให้เข้าถึงเซิร์ฟเวอร์ FTP เฉพาะผู้ใช้ในพื้นที่ค้นหาคำสั่ง anonymous_enable และ local_enable และยืนยันการกำหนดค่าของคุณตรงกับบรรทัดด้านล่าง:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. เปิดใช้งานการอัปโหลด

write_enable การตั้งค่า write_enable เพื่ออนุญาตการเปลี่ยนแปลงระบบไฟล์เช่นการอัพโหลดและการลบไฟล์

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. คุก Chroot

ป้องกันไม่ให้ผู้ใช้ FTP เข้าถึงไฟล์ใด ๆ นอกไดเรกทอรีบ้านโดยไม่แสดงข้อคิดเห็น chroot directive

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

โดยค่าเริ่มต้นเมื่อ chroot ถูกเปิดใช้งาน vsftpd จะปฏิเสธที่จะอัปโหลดไฟล์หากไดเรกทอรีที่ผู้ใช้ล็อคนั้นเขียนได้ นี่คือเพื่อป้องกันช่องโหว่ความปลอดภัย

ใช้วิธีใดวิธีหนึ่งด้านล่างเพื่ออนุญาตให้อัปโหลดเมื่อเปิดใช้งาน chroot

  • วิธีที่ 1 - วิธีที่แนะนำให้อนุญาตให้อัพโหลดคือการเปิดใช้งาน chroot และกำหนดค่าไดเรกทอรี FTP ในบทช่วยสอนนี้เราจะสร้างไดเรกทอรี ftp ภายในหน้าแรกของผู้ใช้ซึ่งจะทำหน้าที่เป็น chroot และไดเรกทอรี uploads เขียนได้สำหรับการอัพโหลดไฟล์

    /etc/vsftpd/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    วิธีที่ 2 - ตัวเลือกอื่นคือการเพิ่มคำสั่งต่อไปนี้ในไฟล์การกำหนดค่า vsftpd ใช้ตัวเลือกนี้หากคุณต้องให้สิทธิ์การเข้าถึงแก่ผู้ใช้ของคุณในโฮมไดเรกทอรี

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

4. การเชื่อมต่อ FTP แบบพาสซีฟ

vsftpd สามารถใช้พอร์ตใดก็ได้สำหรับการเชื่อมต่อ FTP แบบพาสซีฟ เราจะระบุช่วงต่ำสุดและสูงสุดของพอร์ตแล้วเปิดช่วงในไฟร์วอลล์ของเรา

เพิ่มบรรทัดต่อไปนี้ในไฟล์คอนฟิกูเรชัน:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. การ จำกัด การเข้าสู่ระบบของผู้ใช้

ในการอนุญาตให้ผู้ใช้บางคนเท่านั้นที่ล็อกอินเข้าสู่เซิร์ฟเวอร์ FTP เพิ่มบรรทัดต่อไปนี้หลังจากบรรทัด userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

เมื่อเปิดใช้งานตัวเลือกนี้คุณจะต้องระบุผู้ใช้ที่สามารถเข้าสู่ระบบได้โดยการเพิ่มชื่อผู้ใช้ลงในไฟล์ /etc/vsftpd/user_list (ผู้ใช้หนึ่งคนต่อบรรทัด)

6. การรักษาความปลอดภัยการส่งด้วย SSL / TLS

ในการเข้ารหัสการส่งสัญญาณ FTP ด้วย SSL / TLS คุณจะต้องมีใบรับรอง SSL และกำหนดค่าเซิร์ฟเวอร์ FTP เพื่อใช้งาน

คุณสามารถใช้ใบรับรอง SSL ที่มีอยู่ซึ่งลงนามโดยผู้ออกใบรับรองที่เชื่อถือได้หรือสร้างใบรับรองที่ลงนามด้วยตนเอง

ในบทช่วยสอนนี้เราจะสร้างใบรับรอง SSL ที่ลงชื่อด้วยตนเองโดยใช้คำสั่ง openssl

คำสั่งต่อไปนี้จะสร้างคีย์ส่วนตัว 2048 บิตและใบรับรองที่ลงชื่อด้วยตนเองมีอายุ 10 ปี ทั้งรหัสส่วนตัวและใบรับรองจะถูกบันทึกในไฟล์เดียวกัน:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

เมื่อสร้างใบรับรอง SSL แล้วให้เปิดไฟล์คอนฟิกูเรชัน vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

ค้นหาคำสั่ง rsa_private_key_file และ rsa_private_key_file เปลี่ยนค่าเป็นพา ธ ไฟล์ pam และตั้งค่าคำสั่ง ssl_enable เป็น YES :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

หากไม่ได้ระบุเป็นอย่างอื่นเซิร์ฟเวอร์ FTP จะใช้ TLS เท่านั้นเพื่อทำการเชื่อมต่อที่ปลอดภัย

เริ่มบริการ vsftpd ใหม่

เมื่อคุณแก้ไขเสร็จแล้วไฟล์การกำหนดค่า vsftpd (ยกเว้นความคิดเห็น) ควรมีลักษณะดังนี้:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

บันทึกไฟล์และรีสตาร์ทเซอร์วิส vsftpd เพื่อให้การเปลี่ยนแปลงมีผล:

sudo systemctl restart vsftpd

เปิดไฟร์วอลล์

หากต้องการเปิดพอร์ต 21 (พอร์ตคำสั่ง FTP), พอร์ต 20 (พอร์ตข้อมูล FTP) และ 30000-31000 (ช่วงพอร์ตแบบพาสซีฟ) ให้ใช้คำสั่งต่อไปนี้:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

โหลดกฎไฟร์วอลล์ซ้ำโดยพิมพ์:

firewall-cmd --reload

สร้างผู้ใช้ FTP

เพื่อทดสอบเซิร์ฟเวอร์ FTP ของเราเราจะสร้างผู้ใช้ใหม่

  • หากคุณมีผู้ใช้ที่คุณต้องการให้สิทธิ์การเข้าถึง FTP ข้ามขั้นตอนที่ 1 หากคุณตั้ง allow_writeable_chroot=YES ในไฟล์กำหนดค่าของคุณให้ข้ามขั้นตอนที่ 3
  1. สร้างผู้ใช้ใหม่ชื่อ newftpuser :

    sudo adduser newftpuser

    ถัดไปคุณจะต้องตั้งรหัสผ่านผู้ใช้:

    sudo passwd newftpuser

    เพิ่มผู้ใช้ไปยังรายการผู้ใช้ FTP ที่อนุญาต:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

    สร้างแผนผังไดเร็กทอรี FTP และตั้งค่าการอนุญาตที่ถูกต้อง:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    ตามที่กล่าวไว้ในส่วนก่อนหน้านี้ผู้ใช้จะสามารถอัปโหลดไฟล์ไปยังไดเรกทอรี ftp/upload

ณ จุดนี้เซิร์ฟเวอร์ FTP ของคุณทำงานได้อย่างสมบูรณ์และคุณควรจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ของคุณด้วยไคลเอนต์ FTP ที่สามารถกำหนดค่าให้ใช้การเข้ารหัส TLS เช่น FileZilla

ปิดการใช้งาน Shell Access

โดยค่าเริ่มต้นเมื่อสร้างผู้ใช้หากไม่ได้ระบุไว้อย่างชัดเจนผู้ใช้จะมีการเข้าถึง SSH ไปยังเซิร์ฟเวอร์

หากต้องการปิดใช้งานการเข้าถึงเชลล์เราจะสร้างเชลล์ใหม่ซึ่งจะพิมพ์ข้อความแจ้งให้ผู้ใช้ทราบว่าบัญชีของพวกเขาถูก จำกัด การเข้าถึง FTP เท่านั้น

รันคำสั่งต่อไปนี้เพื่อสร้างเชลล์ /bin/ftponly และทำให้สามารถเรียกใช้งานได้:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

ผนวกเชลล์ใหม่เข้ากับรายการของเชลล์ที่ถูกต้องในไฟล์ /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

เปลี่ยนเชลล์ผู้ใช้เป็น /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

ใช้คำสั่งเดียวกันเพื่อเปลี่ยนเชลล์สำหรับผู้ใช้รายอื่นที่คุณต้องการให้สิทธิ์การเข้าถึง FTP เท่านั้น

ข้อสรุป

ในบทช่วยสอนนี้คุณเรียนรู้วิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ FTP ที่ปลอดภัยและรวดเร็วบนระบบ CentOS 7 ของคุณ

ftp centos