Apache Tomcat Hardening และคู่มือความปลอดภัย

คำแนะนำการปฏิบัติในการทำให้ Apache Tomcat Server แข็งแกร่งและปลอดภัยด้วยแนวทางปฏิบัติที่ดีที่สุด.


Tomcat เป็นหนึ่งในเซิร์ฟเวอร์ Servlet และ JSP Container ยอดนิยม มันถูกใช้โดยบางเว็บไซต์ที่มีอัตราการเข้าชมสูง:

  • LinkedIn.com
  • Dailymail.co.uk
  • Comcast.net
  • Wallmart.com
  • Reuters.com
  • Meetup.com
  • Webs.com

แผนภูมิด้านล่างแสดงตำแหน่งทางการตลาดของ Tomcat ในเซิร์ฟเวอร์แอปพลิเคชัน Java.

ที่มา: Plumbr

ในทางเทคนิคคุณสามารถใช้ Tomcat เป็นเซิร์ฟเวอร์หน้าเพื่อให้บริการคำขอเว็บไซต์ได้โดยตรง อย่างไรก็ตามในสภาพแวดล้อมการใช้งานจริงคุณอาจต้องการใช้เว็บเซิร์ฟเวอร์บางตัวเช่น Apache, Nginx เป็น front-end เพื่อกำหนดเส้นทางการร้องขอไปยัง Tomcat.

การใช้เว็บเซิร์ฟเวอร์เพื่อจัดการการร้องขอให้ ประสิทธิภาพ และ ความปลอดภัย ผลประโยชน์ หากคุณใช้ Apache HTTP เป็นเว็บเซิร์ฟเวอร์ส่วนหน้าคุณจะต้องพิจารณาการรักษาความปลอดภัยด้วย.

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

ต่อไปนี้มีการทดสอบบน Tomcat 7.x, สภาพแวดล้อม UNIX.

ผู้ชม

สิ่งนี้ถูกออกแบบมาสำหรับผู้ดูแลระบบมิดเดิลแวร์, การสนับสนุนแอปพลิเคชัน, นักวิเคราะห์ระบบหรือใครก็ตามที่ทำงานหรือกระตือรือร้นที่จะเรียนรู้ Tomcat การชุบแข็งและความปลอดภัย.

ความรู้ที่ดีของ Tomcat & คำสั่ง UNIX จำเป็นต้องมี.

หมายเหตุ

เราต้องการเครื่องมือบางอย่างเพื่อตรวจสอบส่วนหัว HTTP เพื่อตรวจสอบ มีสองวิธีที่คุณสามารถทำได้.

ถ้าทดสอบ หันหน้าไปทางอินเทอร์เน็ต แอปพลิเคชันจากนั้นคุณสามารถใช้เครื่องมือ HTTP Header ต่อไปนี้เพื่อตรวจสอบการใช้งาน.

และสำหรับ แอปพลิเคชันอินทราเน็ต, คุณสามารถใช้ Google Chrome เครื่องมือพัฒนา Firefox.

ตามแนวทางปฏิบัติที่ดีที่สุดคุณจะต้องทำ การสำรองข้อมูล ของไฟล์ใด ๆ ที่คุณกำลังจะแก้ไข.

เราจะเรียกโฟลเดอร์การติดตั้ง Tomcat เป็น $ คราว ตลอดแนวทางนี้.

มาผ่านการแข็งตัวกันเถอะ & ขั้นตอนการรักษาความปลอดภัย.

ลบแบนเนอร์เซิร์ฟเวอร์

การลบแบนเนอร์เซิร์ฟเวอร์ออกจากส่วนหัว HTTP เป็นหนึ่งในสิ่งแรกที่ต้องทำในการชุบแข็ง.

การมีแบนเนอร์เซิร์ฟเวอร์เปิดเผยผลิตภัณฑ์และเวอร์ชั่นที่คุณใช้งานอยู่และนำไปสู่ช่องโหว่การรั่วไหลของข้อมูล.

ตามค่าเริ่มต้นหน้าที่ให้บริการโดย Tomcat จะแสดงเช่นนี้.

มาซ่อนรายละเอียดผลิตภัณฑ์และรุ่นจากส่วนหัวของเซิร์ฟเวอร์.

  • ไปที่โฟลเดอร์ $ tomcat / conf
  • แก้ไข server.xml โดยใช้ vi
  • เพิ่มตามไปที่พอร์ตตัวเชื่อมต่อ

เซิร์ฟเวอร์ =”“

เช่น: –

  • บันทึกไฟล์และรีสตาร์ท Tomcat ตอนนี้เมื่อคุณเข้าถึงแอปพลิเคชันคุณควรเห็นค่าว่างสำหรับส่วนหัวของเซิร์ฟเวอร์.

การเริ่มต้น Tomcat ด้วย Security Manager

Security Manager ปกป้องคุณจากแอปเพล็ตที่ไม่น่าเชื่อถือซึ่งทำงานอยู่ในเบราว์เซอร์ของคุณ.

การใช้ Tomcat กับผู้จัดการความปลอดภัยนั้นดีกว่าการทำงานโดยไม่มี Tomcat มีเอกสารที่ยอดเยี่ยมเกี่ยวกับ Tomcat Security Manager.

สิ่งที่ดีเกี่ยวกับสิ่งนี้คือคุณไม่จำเป็นต้องเปลี่ยนไฟล์กำหนดค่าใด ๆ เป็นวิธีที่คุณเรียกใช้งานไฟล์ startup.sh.

สิ่งที่คุณต้องทำคือการเริ่มต้น Tomcat ด้วย – อาร์กิวเมนต์ความปลอดภัย.

[[email protected] bin] # ./startup.sh -security
ใช้ CATALINA_BASE: / opt / tomcat
ใช้ CATALINA_HOME: / opt / tomcat
ใช้ CATALINA_TMPDIR: / opt / tomcat / temp
ใช้ JRE_HOME: / usr
ใช้ CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
ใช้ตัวจัดการความปลอดภัย
โพงเริ่มต้น.
[[email protected] bin] #

เปิดใช้งาน SSL / TLS

การให้บริการคำขอทางเว็บผ่าน HTTPS เป็นสิ่งสำคัญในการปกป้องข้อมูลระหว่างไคลเอ็นต์และ Tomcat เพื่อให้เว็บแอปพลิเคชันของคุณสามารถเข้าถึงได้ผ่าน HTTPS คุณต้องใช้ใบรับรอง SSL.

สมมติว่าคุณมีที่เก็บคีย์พร้อมกับใบรับรองอยู่แล้วคุณสามารถเพิ่มบรรทัดด้านล่างในไฟล์ server.xml ในส่วนตัวเชื่อมต่อพอร์ต.

SSLEnabled ="จริง" โครงการ ="https" keystoreFile ="SSL / bloggerflare.jks" keystorePass ="Chandan" clientAuth ="เท็จ" sslProtocol ="TLS"

เปลี่ยนชื่อไฟล์ Keystore และรหัสผ่านด้วยตัวคุณเอง.

หากคุณต้องการความช่วยเหลือเกี่ยวกับที่เก็บคีย์ & กระบวนการ CSR จากนั้นอ้างถึงคู่มือนี้.

บังคับใช้ HTTPS

สิ่งนี้ใช้ได้เฉพาะเมื่อคุณเปิดใช้งาน SSL ถ้าไม่มันจะทำลายแอปพลิเคชัน.

เมื่อคุณเปิดใช้งาน SSL จะเป็นการบังคับให้เปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยัง HTTPS เพื่อการสื่อสารที่ปลอดภัยระหว่างผู้ใช้ไปยังเซิร์ฟเวอร์แอปพลิเคชัน Tomcat.

  • ไปที่โฟลเดอร์ $ tomcat / conf
  • แก้ไข web.xml โดยใช้ vi
  • เพิ่มต่อไปนี้ก่อนไวยากรณ์

บริบทที่ได้รับการคุ้มครอง
/ *

ความลับ

  • บันทึกไฟล์และรีสตาร์ท Tomcat

เพิ่มความปลอดภัย & HttpOnly ตั้งค่าสถานะเป็น Cookie

เป็นไปได้ที่จะขโมยหรือจัดการเซสชันแอปพลิเคชันบนเว็บและคุกกี้โดยไม่ต้องมีคุกกี้ที่ปลอดภัย มันเป็นธงที่ฉีดเข้าไปในส่วนหัวการตอบสนอง.

สิ่งนี้ทำได้โดยการเพิ่มด้านล่างบรรทัดในส่วน session-config ของไฟล์ web.xml

จริง
จริง

ภาพหน้าจอการกำหนดค่า:

บันทึกไฟล์และรีสตาร์ท Tomcat เพื่อตรวจสอบส่วนหัวการตอบสนอง HTTP.

เรียกใช้ Tomcat จากบัญชีที่ไม่มีสิทธิพิเศษ

เป็นการดีที่จะใช้ผู้ใช้ที่ไม่มีสิทธิพิเศษแยกต่างหากสำหรับ Tomcat แนวคิดนี้คือการปกป้องบริการอื่น ๆ ที่ทำงานอยู่ในกรณีที่บัญชีใด ๆ ถูกบุกรุก.

  • สร้างผู้ใช้ UNIX สมมติว่าแมวตัวผู้

useradd tomcat

  • หยุด Tomcat ถ้าทำงาน
  • เปลี่ยนความเป็นเจ้าของ $ tomcat เป็นผู้ใช้ tomcat

chown -R tomcat: tomcat tomcat /

เริ่มต้น Tomcat และตรวจสอบว่ามันทำงานกับผู้ใช้ Tomcat

ลบแอปพลิเคชันเริ่มต้น / ไม่ต้องการ

โดยค่าเริ่มต้น Tomcat มาพร้อมกับเว็บแอปพลิเคชันต่อไปนี้ซึ่งอาจจำเป็นหรือไม่จำเป็นในสภาพแวดล้อมการใช้งานจริง.

คุณสามารถลบมันเพื่อรักษาความสะอาดและหลีกเลี่ยงความเสี่ยงด้านความปลอดภัยที่รู้จักด้วย Tomcat แอปพลิเคชันเริ่มต้น.

  • ROOT – หน้าต้อนรับเริ่มต้น
  • เอกสาร – เอกสาร Tomcat
  • ตัวอย่าง – JSP และ servlets สำหรับการสาธิต
  • Manager, host-manager – การจัดการ Tomcat

พวกเขามีอยู่ภายใต้โฟลเดอร์ $ tomcat / webapps

[[email protected] webapps] # ls -lt
drwxr-xr-x 14 tomcat tomcat 4096 29 ก.ย. 15:26 เอกสาร
drwxr-xr-x 7 tomcat tomcat 4096 ก.ย. 29 15:26 ตัวอย่าง
drwxr-xr-x 5 tomcat tomcat 4096 29 กันยายน 15:26 host-manager
drwxr-xr-x 5 tomcat tomcat 4096 29 ก.ย. 15:26 ผู้จัดการ
drwxr-xr-x 3 tomcat tomcat 4096 29 กันยายน 15:26 ROOT
[[email protected] webapps] #

เปลี่ยนพอร์ต SHUTDOWN และ Command

โดยค่าเริ่มต้น tomcat ถูกกำหนดค่าให้ปิดในพอร์ต 8005.

คุณรู้หรือไม่ว่าคุณสามารถปิดอินสแตนซ์ tomcat โดยทำ telnet ไปยัง IP: พอร์ตและออกคำสั่ง SHUTDOWN?

Chandans # telnet localhost 8005
ลอง :: 1 … telnet:
เชื่อมต่อไปยังที่อยู่ :: 1:
การเชื่อมต่อถูกปฏิเสธพยายามเป็น 127.0.0.1…
เชื่อมต่อกับ localhost.
ตัวละคร Escape คือ ‘^]’.
ปิดการเชื่อมต่อโดยโฮสต์ต่างประเทศ.
Chandans #

เป็นอันตราย!

คุณจะเห็นว่าการกำหนดค่าเริ่มต้นทำให้มีความเสี่ยงสูง.

ขอแนะนำให้เปลี่ยนพอร์ตการปิดเครื่อง Tomcat และคำสั่งเริ่มต้นเป็นสิ่งที่ไม่สามารถคาดการณ์ได้.

  • แก้ไขสิ่งต่อไปนี้ใน server.xml

8005 – เปลี่ยนเป็นพอร์ตอื่นที่ไม่ได้ใช้

SHUTDOWN – เปลี่ยนเป็นบางสิ่งที่ซับซ้อน

อดีต-

แทนที่หน้า 404, 403, 500 ที่เป็นค่าเริ่มต้น

มีหน้าเริ่มต้นสำหรับไม่พบ, ห้าม, ข้อผิดพลาดของเซิร์ฟเวอร์เปิดเผยรายละเอียดรุ่น.

ลองดูที่หน้า 404 เริ่มต้น.

หากต้องการลดอันดับแรกคุณสามารถสร้างหน้าข้อผิดพลาดทั่วไปและกำหนดค่า web.xml เพื่อเปลี่ยนเส้นทางไปยังหน้าข้อผิดพลาดทั่วไป.

  • ไปที่แอปพลิเคชัน $ tomcat / webapps / $
  • สร้างไฟล์ error.jsp โดยใช้เครื่องมือแก้ไข vi

หน้าข้อผิดพลาด

นั่นเป็นข้อผิดพลาด!

  • ไปที่โฟลเดอร์ $ tomcat / conf
  • เพิ่มสิ่งต่อไปนี้ในไฟล์ web.xml ให้แน่ใจว่าคุณเพิ่มก่อนไวยากรณ์

404
/error.jsp

403
/error.jsp

500
/error.jsp

  • รีสตาร์ทเซิร์ฟเวอร์ Tomcat เพื่อทดสอบ

ดีกว่ามาก!

คุณสามารถทำสิ่งนี้เพื่อ java.lang.Exception เช่นกัน สิ่งนี้จะช่วยในการไม่เปิดเผยข้อมูลรุ่น Tomcat หากมีข้อยกเว้น Java lang.

เพียงเพิ่มสิ่งต่อไปนี้ใน web.xml และรีสตาร์ทเซิร์ฟเวอร์ Tomcat.

java.lang.Exception
/error.jsp

ฉันหวังว่าคำแนะนำข้างต้นจะช่วยให้คุณมีความคิดในการรักษา Tomcat หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการดูแลระบบ Tomcat ให้ลองตรวจสอบดู หลักสูตรออนไลน์.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map