พวกเราทุกคนคุ้นเคยกันดี Apache เว็บเซิร์ฟเวอร์เป็นเว็บเซิร์ฟเวอร์ยอดนิยมในการโฮสต์ไฟล์เว็บหรือเว็บไซต์ของคุณบนเว็บ นี่คือลิงค์บางส่วนที่สามารถช่วยคุณกำหนดค่าเว็บเซิร์ฟเวอร์ Apache บนกล่อง Linux ของคุณ
ในบทช่วยสอนนี้ ฉันจะพูดถึงเคล็ดลับหลักบางประการในการรักษาความปลอดภัยเว็บเซิร์ฟเวอร์ของคุณ ก่อนที่คุณจะใช้การเปลี่ยนแปลงเหล่านี้ในเว็บเซิร์ฟเวอร์ของคุณ คุณควรมีพื้นฐานบางอย่างของเซิร์ฟเวอร์ Apache
เมื่อคุณติดตั้ง Apache ด้วยซอร์สหรือโปรแกรมติดตั้งแพ็คเกจอื่น ๆ เช่น
ยำจะแสดง เวอร์ชันของ Apache. ของคุณ เว็บเซิร์ฟเวอร์ที่ติดตั้งบนเซิร์ฟเวอร์ของคุณด้วย ชื่อระบบปฏิบัติการ ของเซิร์ฟเวอร์ของคุณใน ข้อผิดพลาด. นอกจากนี้ยังแสดงข้อมูลเกี่ยวกับ ติดตั้งโมดูล Apache แล้ว ในเซิร์ฟเวอร์ของคุณในรูปด้านบนจะเห็นได้ว่า Apache กำลังแสดงให้เห็นว่า รุ่น กับ ระบบปฏิบัติการที่ติดตั้ง ในเซิร์ฟเวอร์ของคุณ นี่อาจเป็นภัยคุกคามด้านความปลอดภัยที่สำคัญต่อเว็บเซิร์ฟเวอร์ของคุณและกล่อง Linux ของคุณด้วย เพื่อหลีกเลี่ยง Apache เพื่อไม่ให้ข้อมูลเหล่านี้แสดงให้โลกเห็น เราจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างในไฟล์กำหนดค่าหลักของ Apache
เปิดไฟล์การกำหนดค่าด้วยโปรแกรมแก้ไข vim และค้นหา "ลายเซ็นเซิร์ฟเวอร์“ โดยค่าเริ่มต้นจะเป็นเปิด เราจำเป็นต้อง ปิด ลายเซ็นเซิร์ฟเวอร์เหล่านี้และบรรทัดที่สอง “ผลิตภัณฑ์ ServerTokens” บอก Apache ให้ส่งคืนเฉพาะ Apache เป็นผลิตภัณฑ์ในส่วนหัวการตอบกลับของเซิร์ฟเวอร์ในทุกคำขอของหน้า ซึ่งจะระงับระบบปฏิบัติการ ข้อมูลเวอร์ชันหลักและรอง
# กลุ่ม /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) # กลุ่ม /etc/apache2/apache2.conf (เดเบียน/อูบุนตู)
ปิดลายเซ็นเซิร์ฟเวอร์ ผลิตภัณฑ์ ServerTokens
# บริการ httpd รีสตาร์ท (RHEL/CentOS/Fedora) # บริการ apache2 รีสตาร์ท (Debian / Ubuntu)
โดยค่าเริ่มต้น Apache แสดงรายการทั้งหมด เนื้อหา ของไดเร็กทอรีรากของเอกสารในกรณีที่ไม่มี ไฟล์ดัชนี. โปรดดูภาพด้านล่าง
เราทำได้ ปิด รายชื่อไดเรกทอรีโดยใช้ คำสั่งตัวเลือก ในไฟล์คอนฟิกูเรชันสำหรับไดเร็กทอรีเฉพาะ เพื่อที่เราจะต้องทำรายการใน httpd.conf หรือ apache2.conf ไฟล์.
ตัวเลือก -ดัชนี
ชุมชนนักพัฒนา Apache กำลังทำงานอย่างต่อเนื่อง ปัญหาด้านความปลอดภัย และปล่อยมัน เวอร์ชั่นอัพเดท กับใหม่ ตัวเลือกความปลอดภัย. ดังนั้นจึงแนะนำให้ใช้ รุ่นล่าสุด ของ Apache เป็นเว็บเซิร์ฟเวอร์ของคุณ
เพื่อตรวจสอบ เวอร์ชัน Apache: คุณสามารถตรวจสอบเวอร์ชันปัจจุบันของคุณด้วย httpd -v สั่งการ.
# httpd -v. เวอร์ชันเซิร์ฟเวอร์: Apache/2.2.15 (Unix) สร้างเซิร์ฟเวอร์: 13 ส.ค. 2556 17:29:28 น.
คุณสามารถอัปเดตเวอร์ชันของคุณด้วยคำสั่งต่อไปนี้
# ยำอัพเดต httpd. # apt-get ติดตั้ง apache2
ขอแนะนำให้เก็บ เคอร์เนล และ OS อัปเดตเป็นเวอร์ชันเสถียรล่าสุด หากคุณไม่ได้ใช้งานแอปพลิเคชันเฉพาะใดๆ ที่ทำงานบนระบบปฏิบัติการหรือเคอร์เนลเฉพาะ
เป็นเรื่องดีเสมอที่จะมีโอกาสเล็กน้อยที่จะตกเป็นเหยื่อของใด ๆ โจมตีเว็บ. ดังนั้นจึงแนะนำให้ปิดการใช้งานทั้งหมด โมดูล ที่ไม่ได้ใช้งานอยู่ในปัจจุบัน คุณสามารถแสดงรายการโมดูลที่คอมไพล์ทั้งหมดของเว็บเซิร์ฟเวอร์โดยใช้คำสั่งต่อไปนี้
# grep LoadModule /etc/httpd/conf/httpd.conf # ต้องวางบรรทัด 'LoadModule' ที่สอดคล้องกันที่ตำแหน่งนี้ดังนั้น # LoadModule โมดูล foo_module/mod_foo.so LoadModule auth_basic_module โมดูล/mod_auth_basic.so LoadModule auth_digest_module โมดูล/mod_auth_digest.so LoadModule authn_file_module โมดูล/mod_authn_file.so LoadModule authn_alias_module โมดูล/mod_authn_alias.so LoadModule authn_anon_module โมดูล/mod_authn_anon.so LoadModule authn_dbm_module โมดูล/mod_authn_dbm.so LoadModule authn_default_module โมดูล/mod_authn_default.so LoadModule authz_host_module โมดูล/mod_authz_host.so LoadModule authz_user_module โมดูล/mod_authz_user.so LoadModule authz_owner_module โมดูล/mod_authz_owner.so LoadModule authz_groupfile_module โมดูล/mod_authz_groupfile.so LoadModule authz_dbm_module โมดูล/mod_authz_dbm.so LoadModule authz_default_module โมดูล/mod_authz_default.so LoadModule ldap_module modules/mod_ldap.so. LoadModule authnz_ldap_module โมดูล/mod_authnz_ldap.so LoadModule include_module modules/mod_include.so LoadModule log_config_module โมดูล/mod_log_config.so LoadModule logio_module โมดูล/mod_logio.so LoadModule env_module โมดูล/mod_env.so LoadModule ext_filter_module โมดูล/mod_ext_filter.so ...
ด้านบนคือรายการของโมดูลที่เปิดใช้งานโดยค่าเริ่มต้นแต่มักไม่จำเป็น: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. หากต้องการปิดใช้งานโมดูลเฉพาะ คุณสามารถแทรก "#” ที่จุดเริ่มต้นของบรรทัดนั้นและเริ่มบริการใหม่
ด้วยการติดตั้งเริ่มต้น Apache รันกระบวนการด้วย user ไม่มีใคร หรือ ภูต. ด้วยเหตุผลด้านความปลอดภัย ขอแนะนำให้รัน Apache ในตัวของมันเอง ไม่มีสิทธิพิเศษ บัญชีผู้ใช้. ตัวอย่างเช่น: http-web.
# groupadd http-เว็บ. # useradd -d /var/www/ -g http-web -s /bin/nologin http-web
ตอนนี้คุณต้องบอก Apache เพื่อทำงานกับผู้ใช้ใหม่นี้ เราต้องสร้างรายการใน /etc/httpd/conf/httpd.conf และเริ่มบริการใหม่
เปิด /etc/httpd/conf/httpd.conf ด้วยโปรแกรมแก้ไข vim และค้นหาคำสำคัญ “ผู้ใช้" และ "กลุ่ม” และที่นั่นคุณจะต้องระบุ ชื่อผู้ใช้ และ ชื่อกลุ่ม ใช้.
ผู้ใช้ http-เว็บ กลุ่ม http-web
เราสามารถจำกัดการเข้าถึงไดเร็กทอรีด้วย “อนุญาต" และ "ปฏิเสธ” ตัวเลือกใน httpd.conf ไฟล์. ในตัวอย่างนี้ เราจะรักษาความปลอดภัย ไดเรกทอรีรากสำหรับสิ่งนั้นโดยการตั้งค่าต่อไปนี้ใน httpd.conf ไฟล์.
ตัวเลือก ไม่มี คำสั่งปฏิเสธ อนุญาต ปฏิเสธ จากทั้งหมด
ทั้งสองโมดูลนี้ “mod_security" และ "mod_evasive” เป็นโมดูลยอดนิยมของ Apache ในแง่ของความปลอดภัย
ที่ไหน mod_security ทำงานเป็น ไฟร์วอลล์ สำหรับเว็บแอปพลิเคชันของเราและช่วยให้เราสามารถ ตรวจสอบการจราจร ตามเวลาจริง นอกจากนี้ยังช่วยให้เราปกป้องเว็บไซต์หรือเว็บเซิร์ฟเวอร์ของเราจาก การโจมตีด้วยกำลังเดรัจฉาน. คุณเพียงแค่ติดตั้ง mod_security บนเซิร์ฟเวอร์ของคุณด้วยความช่วยเหลือของตัวติดตั้งแพ็คเกจเริ่มต้นของคุณ
$ sudo apt-get ติดตั้ง libapache2-modsecurity $ sudo a2enmod mod- ความปลอดภัย $ sudo /etc/init.d/apache2 force-reload
# yum ติดตั้ง mod_security # /etc/init.d/httpd เริ่มใหม่
mod_evasive ทำงานได้อย่างมีประสิทธิภาพมาก ต้องใช้คำขอเดียวในการประมวลผลและประมวลผลได้เป็นอย่างดี มันป้องกัน การโจมตี DDOS จากการทำความเสียหายเท่า คุณลักษณะนี้ของ mod_evasive ช่วยให้สามารถจัดการกับ HTTP กำลังดุร้าย และ ดอส หรือ DDos จู่โจม. โมดูลนี้ตรวจจับการโจมตีด้วยสามวิธี
mod_evasive สามารถติดตั้งได้โดยตรงจากแหล่งที่มา ที่นี่ เรามีคู่มือการติดตั้งและตั้งค่าโมดูลเหล่านี้ ซึ่งจะช่วยให้คุณตั้งค่าโมดูล Apache เหล่านี้ในกล่อง Linux ของคุณ
โดยค่าเริ่มต้น Apache ตามมา symlinks, เราทำได้ ปิด คุณลักษณะนี้ด้วย ติดตาม SymLinks กับ คำสั่งตัวเลือก. และในการทำเช่นนั้น เราจำเป็นต้องสร้างรายการต่อไปนี้ในไฟล์กำหนดค่าหลัก
ตัวเลือก -FollowSymLinks
และหากมีสิ่งใดเป็นพิเศษ ผู้ใช้ หรือ เว็บไซต์ ความต้องการ ติดตาม SymLinks เปิดใช้งานเราสามารถเขียนกฎใน“.htaccess” จากเว็บไซต์นั้น
# เปิดใช้งานลิงก์สัญลักษณ์ ตัวเลือก +FollowSymLinks
บันทึก: เพื่อเปิดใช้งานกฎการเขียนใหม่ภายใน “.htaccess" ไฟล์ "AllowOverride All” ควรมีอยู่ในการกำหนดค่าหลักทั่วโลก
เราทำได้ ปิด ฝั่งเซิร์ฟเวอร์รวมถึง (mod_include) และ CGI การดำเนินการถ้าไม่จำเป็น และในการดำเนินการดังกล่าว เราจำเป็นต้องแก้ไขไฟล์การกำหนดค่าหลัก
ตัวเลือก - รวม ตัวเลือก -ExecCGI
เราสามารถทำได้สำหรับไดเร็กทอรีเฉพาะด้วยแท็กไดเร็กทอรี ในตัวอย่างนี้ เราคือ ปิด รวมถึงและการดำเนินการไฟล์ Cgi สำหรับ “/var/www/html/web1” ไดเรกทอรี
ตัวเลือก -รวม -ExecCGI
ต่อไปนี้เป็นค่าอื่นๆ ที่มี can be เปิด หรือ ปิด ด้วยคำสั่งตัวเลือก
โดยค่าเริ่มต้น Apache ไม่มีการจำกัดขนาดรวมของคำขอ HTTP เช่น ไม่จำกัด และเมื่อคุณอนุญาตคำขอขนาดใหญ่บนเว็บเซิร์ฟเวอร์ เป็นไปได้ว่าคุณอาจตกเป็นเหยื่อของ การปฏิเสธการโจมตีบริการ. เราสามารถจำกัดขนาดคำขอของคำสั่ง Apache “LimitRequestBody” ด้วยแท็กไดเร็กทอรี
คุณสามารถตั้งค่าเป็นไบต์จาก 0 (ไม่ จำกัด) ถึง 2147483647 (2GB) ที่ได้รับอนุญาตในเนื้อหาคำขอ คุณสามารถตั้งค่าขีดจำกัดนี้ได้ตามความต้องการของไซต์ของคุณ สมมติว่าคุณมีไซต์ที่คุณอนุญาตให้อัปโหลด และคุณต้องการจำกัดขนาดการอัปโหลดสำหรับไดเร็กทอรีเฉพาะ
ในตัวอย่างนี้ user_uploads เป็นไดเร็กทอรีที่มีไฟล์ที่อัพโหลดโดยผู้ใช้ เรากำลังกำหนดขีดจำกัดของ 500K สำหรับสิ่งนี้.
LimitRequestBody 512000
เป็นความจริงที่คุณไม่สามารถปกป้องเว็บไซต์ของคุณได้อย่างสมบูรณ์จาก การโจมตี DDos. ต่อไปนี้คือคำสั่งบางอย่างที่สามารถช่วยให้คุณควบคุมได้
Apache อนุญาตให้คุณเข้าสู่ระบบโดยไม่ขึ้นกับของคุณ การบันทึกระบบปฏิบัติการ. เป็นการดีที่จะเปิดใช้งานการบันทึก Apache เนื่องจากจะให้ข้อมูลเพิ่มเติม เช่น คำสั่งที่ป้อนโดยผู้ใช้ที่โต้ตอบกับเว็บเซิร์ฟเวอร์ของคุณ
ในการดำเนินการดังกล่าว คุณต้องรวม mod_log_config โมดูล. มีสามคำสั่งที่เกี่ยวข้องกับการบันทึกหลักที่มีอยู่ใน Apache
คุณสามารถใช้มันสำหรับเว็บไซต์เฉพาะที่คุณกำลังทำอยู่ได้ โฮสติ้งเสมือนจริง และคุณต้องระบุในส่วนโฮสต์เสมือน ตัวอย่างเช่น นี่คือการกำหนดค่าโฮสต์เสมือนของเว็บไซต์ของฉันที่เปิดใช้งานการบันทึก
DocumentRoot /var/www/html/example.com/ ชื่อเซิร์ฟเวอร์ www.example.com DirectoryIndex index.htm index.html ดัชนี.php ServerAlias example.com ErrorDocument 404 /story.php. บันทึกข้อผิดพลาด/var/log/httpd/example.com_error_log บันทึกที่กำหนดเอง /var/log/httpd/example.com_access_log รวมกัน
สุดท้ายแต่ไม่ท้ายสุด ใบรับรอง SSLคุณสามารถรักษาความปลอดภัยการสื่อสารทั้งหมดของคุณในลักษณะที่เข้ารหัสทางอินเทอร์เน็ตด้วยใบรับรอง SSL สมมติว่าคุณมีเว็บไซต์ที่ผู้คนเข้าสู่ระบบโดยพิสูจน์ข้อมูลรับรองการเข้าสู่ระบบหรือคุณมีเว็บไซต์อีคอมเมิร์ซที่ผู้คนให้ข้อมูล รายละเอียดธนาคาร หรือ เดบิต/เครดิต รายละเอียดบัตรเพื่อซื้อสินค้า โดยค่าเริ่มต้น เว็บเซิร์ฟเวอร์ของคุณจะส่งรายละเอียดเหล่านี้ในรูปแบบข้อความธรรมดา แต่เมื่อคุณใช้ ใบรับรอง SSL ไปยังเว็บไซต์ของคุณ Apache ส่งข้อมูลทั้งหมดนี้ในรูปแบบข้อความที่เข้ารหัส
คุณสามารถ ซื้อใบรับรอง SSL จากผู้ให้บริการ SSL ต่างๆ มากมาย เช่น namecheap.com. หากคุณกำลังทำธุรกิจเว็บขนาดเล็กมากและไม่เต็มใจที่จะ ซื้อใบรับรอง SSL คุณยังสามารถมอบหมาย a ใบรับรองที่ลงนามเอง ไปยังเว็บไซต์ของคุณ Apache ใช้ mod_ssl โมดูลที่รองรับ ใบรับรอง SSL.
# openssl genrsa -des3 -out example.com.key 1024 # openssl req -new -key example.com.key -out exmaple.csr # openssl x509 -req -days 365 -in example.com.com.csr -signkey example.com.com.key -out example.com.com.crt
เมื่อใบรับรองของคุณได้รับการสร้างและลงนามแล้ว ตอนนี้คุณต้องเพิ่มสิ่งนี้ในการกำหนดค่า Apache เปิดไฟล์การกำหนดค่าหลักด้วยโปรแกรมแก้ไข vim และเพิ่มบรรทัดต่อไปนี้และเริ่มบริการใหม่
SSLEngine บน SSLCertificateFile /etc/pki/tls/certs/example.com.crt SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt ServerAdmin [ป้องกันอีเมล] ชื่อเซิร์ฟเวอร์ example.com DocumentRoot /var/www/html/example/ ErrorLog /var/log/httpd/example.com-error_log CustomLog /var/log/httpd/example.com-access_log ทั่วไป
เปิดเบราว์เซอร์ของคุณ พิมพ์ https://example.com, และคุณจะสามารถเห็นสิ่งใหม่ๆ ใบรับรองที่ลงนามเอง.
นี่คือเคล็ดลับความปลอดภัยบางประการที่คุณสามารถใช้เพื่อ รักษาความปลอดภัยเว็บเซิร์ฟเวอร์ Apache ของคุณ การติดตั้ง. สำหรับเคล็ดลับและแนวคิดด้านความปลอดภัยที่เป็นประโยชน์เพิ่มเติม โปรดดูเอกสารออนไลน์อย่างเป็นทางการของ Apache HTTP Server.