ຊຸດ RHCSA: ການຕິດຕັ້ງ, ການຕັ້ງຄ່າແລະການຮັກສາຄວາມປອດໄພຂອງເວບໄຊທ໌ແລະ FTP - ພາກທີ 9


ເຄື່ອງແມ່ຂ່າຍເວັບ (ທີ່ເອີ້ນກັນວ່າ HTTP server) ແມ່ນບໍລິການທີ່ຈັດການເນື້ອຫາ (ໜ້າ ເວບໄຊທ໌ສ່ວນໃຫຍ່, ແຕ່ເອກະສານປະເພດອື່ນໆເຊັ່ນດຽວກັນ) ໃຫ້ລູກຄ້າໃນເຄືອຂ່າຍ.

ເຄື່ອງແມ່ຂ່າຍ FTP ແມ່ນຊັບພະຍາກອນ ໜຶ່ງ ທີ່ເກົ່າແກ່ແລະຖືກ ນຳ ໃຊ້ຫຼາຍທີ່ສຸດ (ເຖິງແມ່ນວ່າມື້ນີ້) ເພື່ອເຮັດໃຫ້ແຟ້ມເອກະສານຕ່າງໆໃຫ້ກັບລູກຄ້າໃນເຄືອຂ່າຍໃນກໍລະນີທີ່ບໍ່ມີການກວດສອບຄວາມ ຈຳ ເປັນເນື່ອງຈາກ FTP ໃຊ້ຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານໂດຍບໍ່ຕ້ອງເຂົ້າລະຫັດ.

ເຄື່ອງແມ່ຂ່າຍເວັບທີ່ມີຢູ່ໃນ RHEL 7 ແມ່ນຮຸ່ນ 2.4 ຂອງ Apache HTTP Server. ສຳ ລັບເຄື່ອງແມ່ຂ່າຍຂອງ FTP, ພວກເຮົາຈະ ນຳ ໃຊ້ຫຼາຍຢ່າງທີ່ປອດໄພຫຼາຍ Ft Daemon (aka vsftpd) ເພື່ອສ້າງການເຊື່ອມຕໍ່ທີ່ຮັບປະກັນໂດຍ TLS.

ໃນບົດຄວາມນີ້ພວກເຮົາຈະອະທິບາຍວິທີການຕິດຕັ້ງ, ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງເຊີຟເວີເວັບແລະ FTP server ໃນ RHEL 7.

ການຕິດຕັ້ງ Apache ແລະ FTP Server

ໃນຄູ່ມືນີ້ພວກເຮົາຈະ ນຳ ໃຊ້ server ຂອງ RHEL 7 ທີ່ມີ IP address ຄົງທີ່ 192.168.0.18/24. ການຕິດຕັ້ງ Apache ແລະ VSFTPD, ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້:

# yum update && yum install httpd vsftpd

ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດ, ທັງສອງບໍລິການຈະຖືກປິດໃຊ້ງານໃນເບື້ອງຕົ້ນ, ດັ່ງນັ້ນພວກເຮົາ ຈຳ ເປັນຕ້ອງເລີ່ມຕົ້ນດ້ວຍຕົນເອງ ສຳ ລັບເວລາແລະຊ່ວຍໃຫ້ພວກເຂົາເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດໂດຍເລີ່ມຕົ້ນໃສ່ເກີບຕໍ່ໄປ:

# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd

ນອກຈາກນັ້ນ, ພວກເຮົາຍັງຕ້ອງເປີດພອດ 80 ແລະ 21, ບ່ອນທີ່ເວັບແລະ ftp daemons ກຳ ລັງຟັງຢູ່ຕາມ ລຳ ດັບ, ເພື່ອໃຫ້ສາມາດເຂົ້າເຖິງການບໍລິການເຫຼົ່ານັ້ນຈາກພາຍນອກ:

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

ເພື່ອຢືນຢັນວ່າເຄື່ອງແມ່ຂ່າຍເວັບໄຊທ໌້ເຮັດວຽກຢ່າງຖືກຕ້ອງ, ໃຫ້ຕົວທ່ອງເວັບຂອງທ່ານລ້າໆແລະໃສ່ IP ຂອງເຄື່ອງແມ່ຂ່າຍ. ທ່ານຄວນເບິ່ງ ໜ້າ ທົດສອບ:

ສຳ ລັບເຊີຟເວີ ftp, ພວກເຮົາຈະຕ້ອງ ກຳ ຫນົດຄ່າມັນຕື່ມອີກ, ເຊິ່ງພວກເຮົາຈະເຮັດໃນນາທີ ໜຶ່ງ, ກ່ອນທີ່ຈະຢືນຢັນວ່າມັນເຮັດວຽກໄດ້ຕາມຄາດ ໝາຍ.

ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງ Apache Web Server

ເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍ ສຳ ລັບ Apache ຕັ້ງຢູ່ໃນ /etc/httpd/conf/httpd.conf ແຕ່ມັນອາດຈະອີງໃສ່ເອກະສານອື່ນໆທີ່ມີຢູ່ໃນ /etc/httpd/conf.d.

ເຖິງແມ່ນວ່າການຕັ້ງຄ່າເລີ່ມຕົ້ນຄວນຈະພຽງພໍ ສຳ ລັບກໍລະນີຫຼາຍທີ່ສຸດ, ມັນເປັນການດີທີ່ຈະຄຸ້ນເຄີຍກັບຕົວເລືອກທີ່ມີຢູ່ທັງ ໝົດ ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນເອກະສານທາງການ.

ດັ່ງທີ່ເຄີຍເຮັດ, ສຳ ເນົາເອກະສານການຕັ້ງຄ່າ ສຳ ຄັນກ່ອນທີ່ຈະດັດແກ້ມັນ:

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

ຈາກນັ້ນເປີດມັນດ້ວຍບັນນາທິການຕົວ ໜັງ ສືທີ່ທ່ານຕ້ອງການແລະຊອກຫາຕົວແປຕໍ່ໄປນີ້:

<

  • ServerRoot: ໄດເລກະທໍລີທີ່ເກັບຂໍ້ມູນການຕັ້ງຄ່າ, ຂໍ້ຜິດພາດແລະການບັນທຶກຂໍ້ມູນຂອງ server ໄວ້.
  • ຟັງ: ແນະ ນຳ ໃຫ້ Apache ຟັງກ່ຽວກັບທີ່ຢູ່ IP ແລະ/ຫຼືພອດຕ່າງໆ.
  • ລວມ: ອະນຸຍາດໃຫ້ລວມເອົາເອກະສານການຕັ້ງຄ່າອື່ນໆ, ເຊິ່ງຕ້ອງມີຢູ່. ຖ້າບໍ່ດັ່ງນັ້ນ, ເຄື່ອງແມ່ຂ່າຍຈະລົ້ມເຫລວ, ກົງກັນຂ້າມກັບ ຄຳ ສັ່ງແນະ ນຳ IncludeOptional, ເຊິ່ງຈະຖືກລະເລີຍຢ່າງງຽບໆຖ້າມີເອກະສານການຕັ້ງຄ່າທີ່ລະບຸໄວ້ບໍ່ມີ.
  • ຜູ້ໃຊ້ແລະກຸ່ມ: ຊື່ຂອງຜູ້ໃຊ້/ກຸ່ມເພື່ອ ດຳ ເນີນການບໍລິການ httpd ຄື.
  • DocumentRoot: ໄດເລກະທໍລີທີ່ Apache ຈະຮັບໃຊ້ເອກະສານຂອງທ່ານ. ໂດຍໃນຕອນຕົ້ນ, ທຸກ ຄຳ ຮ້ອງຂໍແມ່ນເອົາມາຈາກໄດເລກະທໍລີນີ້, ແຕ່ການເຊື່ອມຕໍ່ທີ່ເປັນສັນຍາລັກແລະນາມແຝງອາດຈະຖືກ ນຳ ໃຊ້ເພື່ອຊີ້ໄປທີ່ສະຖານທີ່ອື່ນ.
  • ServerName: ຄຳ ສັ່ງແນະ ນຳ ນີ້ ກຳ ນົດ hostname (ຫລືທີ່ຢູ່ IP) ແລະພອດທີ່ server ໃຊ້ເພື່ອ ກຳ ນົດຕົວຂອງມັນເອງ.
  • ມາດຕະການຄວາມປອດໄພຄັ້ງ ທຳ ອິດຈະປະກອບດ້ວຍການສ້າງຜູ້ໃຊ້ແລະກຸ່ມທີ່ອຸທິດຕົນ (i. e. tecmint/tecmint) ເພື່ອ ດຳ ເນີນການເຊີຟເວີເວັບແລະເປັນການປ່ຽນພອດເລີ່ມຕົ້ນໃຫ້ສູງຂື້ນ (9000 ໃນກໍລະນີນີ້):

    ServerRoot "/etc/httpd"
    Listen 192.168.0.18:9000
    User tecmint
    Group tecmint
    DocumentRoot "/var/www/html"
    ServerName 192.168.0.18:9000
    

    ທ່ານສາມາດທົດສອບເອກະສານການຕັ້ງຄ່າດ້ວຍ.

    # apachectl configtest
    

    ແລະຖ້າທຸກຢ່າງບໍ່ເປັນຫຍັງ, ຫຼັງຈາກນັ້ນໃຫ້ທ່ານເລີ່ມຕົ້ນເວັບ server ຄືນ ໃໝ່.

    # systemctl restart httpd
    

    ແລະຢ່າລືມເປີດໃຊ້ພອດ ໃໝ່ (ແລະປິດການໃຊ້ງານຂອງພອດເກົ່າ) ຢູ່ໃນ ກຳ ແພງໄຟ:

    # firewall-cmd --zone=public --remove-port=80/tcp --permanent
    # firewall-cmd --zone=public --add-port=9000/tcp --permanent
    # firewall-cmd --reload
    

    ໃຫ້ສັງເກດວ່າ, ຍ້ອນນະໂຍບາຍ SELinux, ທ່ານພຽງແຕ່ສາມາດໃຊ້ທ່າເຮືອທີ່ສົ່ງກັບ

    # semanage port -l | grep -w '^http_port_t'
    

    ສຳ ລັບເວັບເຊີຟເວີ.

    ຖ້າທ່ານຕ້ອງການໃຊ້ພອດອື່ນ (ເຊັ່ນ: ພອດ TCP 8100), ທ່ານຈະຕ້ອງເພີ່ມມັນໃສ່ສະພາບການພອດ SELinux ສຳ ລັບການບໍລິການ httpd:

    # semanage port -a -t http_port_t -p tcp 8100
    

    ເພື່ອຮັບປະກັນການຕິດຕັ້ງ Apache ຂອງທ່ານຕໍ່ໄປ, ໃຫ້ເຮັດຕາມຂັ້ນຕອນດັ່ງນີ້:

    1. ຜູ້ໃຊ້ Apache ກຳ ລັງເຮັດວຽກຢູ່ຄືກັບວ່າບໍ່ຄວນເຂົ້າເຖິງຫອຍ:

    # usermod -s /sbin/nologin tecmint
    

    2. ປິດການໃຊ້ລາຍຊື່ໄດເລກະທໍລີເພື່ອປ້ອງກັນບໍ່ໃຫ້ຕົວທ່ອງເວັບສະແດງເນື້ອຫາຂອງໄດເລກະທໍລີຖ້າບໍ່ມີ index.html ຢູ່ໃນໄດເລກະທໍລີນັ້ນ.

    ແກ້ໄຂ /etc/httpd/conf/httpd.conf (ແລະເອກະສານການຕັ້ງຄ່າ ສຳ ລັບເຈົ້າພາບເສມືນ, ຖ້າມີ) ແລະໃຫ້ແນ່ໃຈວ່າຕົວເລືອກ Options Directive, ທັງຢູ່ທາງເທິງແລະໃນລະດັບ block Directory, ຖືກຕັ້ງຄ່າ ເຖິງບໍ່ມີ:

    Options None
    

    3. ເຊື່ອງຂໍ້ມູນກ່ຽວກັບເວັບເຊີຟເວີແລະລະບົບປະຕິບັດການໃນການຕອບ HTTP. ແກ້ໄຂ /etc/httpd/conf/httpd.conf ດັ່ງຕໍ່ໄປນີ້:

    ServerTokens Prod 
    ServerSignature Off
    

    ຕອນນີ້ທ່ານພ້ອມແລ້ວທີ່ຈະເລີ່ມຮັບໃຊ້ເນື້ອຫາຈາກໄດເລກະທໍລີ/var/www/html ຂອງທ່ານ.

    ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງ Server FTP

    ເຊັ່ນດຽວກັບກໍລະນີຂອງ Apache, ເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍ ສຳ ລັບ Vsftpd (/etc/vsftpd/vsftpd.conf) ແມ່ນມີ ຄຳ ເຫັນເປັນຢ່າງດີແລະໃນຂະນະທີ່ການຕັ້ງຄ່າເລີ່ມຕົ້ນຄວນຈະ ເໝາະ ສົມ ສຳ ລັບ ຄຳ ຮ້ອງສະ ໝັກ ສ່ວນໃຫຍ່, ທ່ານຄວນຄຸ້ນເຄີຍກັບ ເອກະສານແລະ ໜ້າ ຜູ້ຊາຍ (man vsftpd.conf) ເພື່ອໃຫ້ສາມາດໃຊ້ງານ server server ໄດ້ຢ່າງມີປະສິດທິພາບຫຼາຍຂື້ນ (ຂ້ອຍບໍ່ສາມາດເນັ້ນ ໜັກ ວ່າພຽງພໍ!).

    ໃນກໍລະນີຂອງພວກເຮົາ, ເຫຼົ່ານີ້ແມ່ນທິດທາງທີ່ ນຳ ໃຊ້:

    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
    allow_writeable_chroot=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    

    ໂດຍການໃຊ້ chroot_local_user = YES , ຜູ້ໃຊ້ໃນທ້ອງຖິ່ນຈະຖືກຕັ້ງຢູ່ໃນຄຸກທີ່ຖືກກັກຂັງໄວ້ໃນບັນຊີຂອງພວກເຂົາທັນທີຫຼັງຈາກເຂົ້າສູ່ລະບົບ. ນີ້ຫມາຍຄວາມວ່າຜູ້ໃຊ້ໃນທ້ອງຖິ່ນຈະບໍ່ສາມາດເຂົ້າເຖິງເອກະສານໃດໆທີ່ຢູ່ນອກລາຍການເຮືອນທີ່ສອດຄ້ອງກັນ.

    ສຸດທ້າຍ, ເພື່ອອະນຸຍາດໃຫ້ ftp ອ່ານໄຟລ໌ໃນໄດເລກະທໍລີໂຮມຂອງຜູ້ໃຊ້, ຕັ້ງຄ່າ SELinux boolean ຕໍ່ໄປນີ້:

    # setsebool -P ftp_home_dir on
    

    ດຽວນີ້ທ່ານສາມາດເຊື່ອມຕໍ່ກັບ server ftp ໂດຍໃຊ້ລູກຄ້າເຊັ່ນ Filezilla:

    ໃຫ້ສັງເກດວ່າຂໍ້ມູນບັນທຶກການດາວໂຫລດແລະອັບໂຫລດບັນທຶກ /var/log/xferlog ທີ່ບັນທຶກພ້ອມກັບລາຍຊື່ໄດເລກະທໍລີຂ້າງເທິງ:

    ບົດສະຫຼຸບ

    ໃນບົດແນະ ນຳ ນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕັ້ງ web ແລະ server ftp. ເນື່ອງຈາກເນື້ອໃນທີ່ກວ້າງຂວາງ, ມັນບໍ່ສາມາດທີ່ຈະເວົ້າເຖິງທຸກແງ່ມຸມຂອງຫົວຂໍ້ເຫຼົ່ານີ້ (ຕົວຢ່າງ: ເວັບໂຮດຕິ້ງເສີຍໆ). ດັ່ງນັ້ນ, ຂ້າພະເຈົ້າຂໍແນະ ນຳ ໃຫ້ທ່ານກວດເບິ່ງບົດຄວາມດີເດັ່ນອື່ນໆໃນເວບໄຊທ໌ນີ້ກ່ຽວກັບ Apache.