แนวทางปฏิบัติที่ดีที่สุดสำหรับการอนุญาตการเข้าถึงแก่ผู้ใช้ apache tomcat


22

ฉันมีกล่อง Linux ถูกแชร์โดยนักพัฒนาหลายคน พวกเขาต้องการปรับใช้ไฟล์สงครามของพวกเขาใน apache tomcat ซึ่งอยู่ในตำแหน่งที่ใช้ร่วมกัน (/ opt / tomcat)

เนื่องจากพวกเขาไม่มีสิทธิ์เข้าถึง sudo ฉันจึงต้องเปลี่ยนการอนุญาตโฟลเดอร์สำหรับไดเรกทอรี tomcat

โครงสร้างไดเรกทอรีภายใต้/opt/tomcatเป็น -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

อะไรคือแนวทางปฏิบัติที่ดีที่สุดในสถานการณ์ข้างต้น - สิทธิ์การเข้าถึงที่เหมาะสมที่สุดสำหรับผู้ใช้? ในขณะนี้ฉันได้เปลี่ยนการอนุญาตเป็น 777 เป็น webapps และบันทึก

ขอบคุณ

คำตอบ:


32

ฉันทำอย่างนี้:

เราให้ผู้ใช้ Tomcat เป็นเจ้าของโฟลเดอร์ Tomcat:

# chown -R tomcat:tomcat /opt/tomcat

ผู้ใช้ไม่สามารถแก้ไขการกำหนดค่าของ tomcat:

# chmod -R g+r /opt/tomcat/conf

ผู้ใช้สามารถปรับเปลี่ยนโฟลเดอร์อื่น ๆ :

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

เปิดใช้งานหมุดปักหมุดสำหรับไฟล์ใหม่จะมีการกำหนดสิทธิ์ไว้:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

สุดท้ายเราเพิ่มกลุ่ม Tomcat ที่เราต้องการให้ผู้ใช้ที่สามารถใช้ Tomcat:

# usermod -a -G tomcat MIUSER

4
หากไม่มีแท็ก -a คุณจะเพิ่มผู้ใช้ในกลุ่ม Tomcat แต่ลบ MIUSER จากกลุ่มอื่น ๆ ทั้งหมดที่อยู่ในกลุ่ม (ซึ่งหมายความว่าจะไม่มีกลุ่ม sudo อีกต่อไป) ฉันต้องดำเนินการอย่างรวดเร็วเพื่อกู้คืนกลุ่มของฉันในบัญชีหลักในหนึ่งในเซิร์ฟเวอร์ของฉันดึงข้อมูลจากเซสชันเก่าที่ฉันยังคงจัดกลุ่มเหล่านั้นไว้ คำเตือนผู้ใช้รายอื่นที่อ่านคำตอบนี้
Axoren

ฉันได้เพิ่มตัวเลือกในการตอบกลับ ขอขอบคุณ
intropedro

จะให้ Tomcat เริ่มต้นในฐานะผู้ใช้ Tomcat ได้อย่างไร? ของฉันเริ่มต้นเป็น deamon และ ณ ตอนนี้มันทำงานเหมือนรูท
Stephane

1
สวัสดี Stephane ใน Ubuntu Tomcat กำลังทำงานกับผู้ใช้ Tomcat และอยู่ในไฟล์ / etc / default / tomcat8 พร้อมตัวแปร TOMCAT8_USER และ TOMCAT8_GROUP ใน linux อื่นฉันไม่รู้
intropedro

ไม่ได้+sตั้ง ID ผู้ใช้ / กลุ่ม? หน้าคนบอกว่า+tเป็นบิตเหนียว
bmaupin

13

Non-Tomcat settingsส่วนของการรักษาความปลอดภัย HOWTO Tomcat ให้ข้อมูลที่เป็นประโยชน์ในหัวข้อนี้ ดูที่นี่:

Tomcat ไม่ควรรันภายใต้ผู้ใช้รูท สร้างผู้ใช้เฉพาะสำหรับกระบวนการ Tomcat และมอบสิทธิ์ที่จำเป็นขั้นต่ำสำหรับระบบปฏิบัติการ ตัวอย่างเช่นไม่ควรเข้าสู่ระบบจากระยะไกลโดยใช้ผู้ใช้ Tomcat

ควร จำกัด สิทธิ์การใช้ไฟล์อย่างเหมาะสม การใช้อินสแตนซ์ Tomcat ที่ ASF เป็นตัวอย่าง (โดยที่การปรับใช้อัตโนมัติถูกปิดใช้งานและเว็บแอปพลิเคชันถูกปรับใช้เป็นไดเรกทอรีที่ถูกระเบิด) การกำหนดค่ามาตรฐานคือการมีไฟล์ Tomcat ทั้งหมดเป็นเจ้าของโดย root พร้อมกลุ่ม Tomcat และเจ้าของมีสิทธิ์อ่าน / เขียน กลุ่มมี แต่อ่านและโลกไม่มีสิทธิ์ ข้อยกเว้นคือล็อกไฟล์ชั่วคราวและไดเร็กทอรีการทำงานที่ผู้ใช้ Tomcat เป็นเจ้าของแทนที่จะเป็นรูท ซึ่งหมายความว่าแม้ว่าผู้โจมตีจะทำอันตรายต่อกระบวนการ Tomcat พวกเขาไม่สามารถเปลี่ยนการกำหนดค่า Tomcat ปรับใช้เว็บแอปพลิเคชันใหม่หรือปรับเปลี่ยนแอปพลิเคชันเว็บที่มีอยู่ กระบวนการ Tomcat ทำงานด้วย umask 007 เพื่อรักษาสิทธิ์เหล่านี้


ฉันสงสัยว่าวิธีการที่อธิบายไว้สามารถนำไปใช้ไม่เพียง แต่ใน Tomcat แต่ยังรวมถึงบริการอื่น ๆ ด้วย (ฐานข้อมูลพร็อกซีย้อนกลับและอื่น ๆ ) คุณคิดว่าเป็นไปได้ / ฉลาด?
เปาโล

1

คุณจะต้องเป็นไปตามหลักการของสิทธิน้อย เซิร์ฟเวอร์ (อาจwww-dataแต่คุณต้องตรวจสอบ) จำเป็นต้องอ่านไฟล์ส่วนใหญ่ (สมมติว่าทั้งหมด) และเขียนในบันทึกเท่านั้น นักพัฒนาเว็บได้รับอนุญาตให้เขียนที่พวกเขาต้องการ ตั้งค่า sticky bit ในไดเรกทอรีเพื่อให้เจ้าของไฟล์เท่านั้นที่สามารถลบได้

ในทางปฏิบัติคุณต้องสร้างกลุ่ม (ตัวอย่างwebdev) และเพิ่มนักพัฒนาและเซิร์ฟเวอร์ทั้งหมดเข้าไป ( usermod -aG webdev <user>หรือusermod -A webdev <user>ขึ้นอยู่กับรสนิยม Linux ของคุณ) chownไฟล์และไดเรกทอรีทั้งหมดไปยังผู้ใช้เว็บเซิร์ฟเวอร์ chmod ไดเรกทอรีทั้งหมดถึง 500 และไฟล์ทั้งหมดถึง 400 (ยกเว้นในbinกรณีที่ไฟล์ปฏิบัติการจำเป็นต้องมี 500 ด้วย)

ให้สิทธิ์เขียนบน/opt/tomcatกลุ่ม (นั่นคือ 570) และตั้งค่า bit bit เพื่อให้สามารถลบเฉพาะไฟล์ที่พวกเขาเป็นเจ้าของ (chmod 1570) ให้สิทธิ์การเขียนเซิร์ฟเวอร์แก่ล็อกและอ่านสิทธิ์สำหรับนักพัฒนา (0740 สำหรับโฟลเดอร์, 0640 สำหรับไฟล์, บิตเหนียวอาจไม่จำเป็นและไม่เคยให้สิทธิ์กับไฟล์เฉพาะโฟลเดอร์เนื่องจากมี ความหมายที่แตกต่างกัน (ดำเนินการด้วยสิทธิ์ของเจ้าของเมื่อไฟล์นั้นทำงานได้)

จากนั้นคุณจะต้องให้สิทธิ์เขียน (1570) webdevกับบางไดเรกทอรี คุณจะต้องมีการทดลองและข้อผิดพลาดที่นี่และอาจขึ้นอยู่กับแอปพลิเคชัน โฟลเดอร์เหล่านั้นต้องเป็น 1570 ในขณะที่บางโฟลเดอร์สามารถเป็น 0500)

นักพัฒนาจะต้องให้สิทธิ์การอ่านเพื่อเข้าถึงไฟล์แก่กลุ่มเพื่อให้เซิร์ฟเวอร์สามารถอ่านได้ (ที่ 640) และดำเนินการในไดเรกทอรี (ที่ 750)


1

ฉันคิดว่าคำตอบที่ยอมรับของ @ intropedro เป็นคำตอบที่ดี เป็นมูลค่าที่ชี้ให้เห็นว่าการใช้ตัวติดตั้งแพคเกจสามารถประหยัดอาการปวดหัวได้มาก - อย่างน้อยที่สุดสำหรับ Tomcat 7 บน Ubuntu apt-get install tomcat7จะสร้างไดเรคทอรีการติดตั้ง "มาตรฐาน" ให้มากขึ้นคือ:

  • /etc/tomcat7 สำหรับไฟล์กำหนดค่า
  • /var/lib/tomcat7 สำหรับห้องสมุดแกนกลางและ
  • /usr/share/tomcat7 สำหรับทรัพยากรที่ใช้ร่วมกัน

สิทธิ์ทั้งหมดถูกตั้งค่าอย่างถูกต้องด้วยหลักการของสิทธิ์น้อยที่สุดเช่นการเพิ่มผู้ใช้ในกลุ่มtomcat7นั้นเพียงพอที่จะอนุญาตให้ปรับใช้ นอกจากนี้เซิร์ฟเวอร์ Tomcat ได้รับการตั้งค่าให้เป็นบริการที่สามารถเริ่มต้นและหยุดการทำงานเช่นเดียวกับบริการอื่น ๆ (เช่นsudo service tomcat startหรืออีกวิธีหนึ่ง/etc/init.d/tomcat start) Tomcat เริ่มการบูทอัตโนมัติและมีคำสั่ง "restart" ฉันแน่ใจว่ามีแพ็คเกจยำเทียบเท่าสำหรับผู้ใช้ RHEL / CentOS (และใช่มีโปรแกรมติดตั้ง homebrew สำหรับการติดตั้ง OSX ในเครื่อง)

หากคุณกำลังมีปัญหามียูทิลิตี้ที่ดีที่/usr/share/binเรียกconfigtest.shว่ารายงานหากมีสิทธิ์หรือข้อผิดพลาดอื่น ๆ หมายเหตุมีการข้อผิดพลาดเปิดที่แสดงให้เห็นการเพิ่มการเชื่อมโยงสัญลักษณ์บางอย่าง

เรายังคงใช้งาน Ubuntu trusty(14.04); สำหรับผู้ที่ใช้งานเวอร์ชันที่ใหม่กว่าผมเชื่อว่ามี Tomcat 8 apt-get repo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.