apparmor คืออะไร


93

ฉันได้ยินจำนวนมากพูดคุยเกี่ยวกับ apparmor ฉันต้องการทราบต่อไปนี้:

  • apparmor คืออะไร
  • apparmor ทำงานอย่างไร

คำตอบ:


92

มันคืออะไร

Apparmor เป็นระบบควบคุมการเข้าถึง (หรือ MAC) ที่บังคับใช้ มันใช้การปรับปรุงเคอร์เนล LSM เพื่อ จำกัด โปรแกรมให้กับทรัพยากรบางอย่าง AppArmor ทำสิ่งนี้พร้อมกับโปรไฟล์ที่โหลดลงในเคอร์เนลเมื่อระบบเริ่มทำงาน Apparmor มีโหมดโปรไฟล์สองแบบ ได้แก่ การบังคับใช้และการบ่น โปรไฟล์ในโหมดการบังคับใช้การบังคับใช้กฎระเบียบของโปรไฟล์และรายงานความพยายามละเมิดหรือsyslog auditdโปรไฟล์ในโหมดบ่นไม่ได้บังคับใช้กฎโปรไฟล์ใด ๆ เพียงบันทึกความพยายามในการละเมิด

ใน Ubuntu Apparmor จะถูกติดตั้งตามค่าเริ่มต้น มัน จำกัด แอพพลิเคชั่นให้กับโปรไฟล์เพื่อกำหนดว่าไฟล์และการอนุญาตใดที่โปรแกรมต้องการเข้าถึง แอปพลิเคชั่นบางตัวจะมาพร้อมกับคุณสมบัติของตัวเองและสามารถพบได้ในapparmor-profilesแพ็คเกจ

คุณสามารถติดตั้งโดยการเรียกใช้apparmor-profilessudo apt-get install apparmor-profiles

ฉันพบตัวอย่างที่ดีของ Apparmor ในฟอรัม Ubuntu ที่ฉันเขียนใหม่สำหรับโพสต์นี้

Apparmor เป็นกรอบความปลอดภัยที่ป้องกันไม่ให้แอปพลิเคชันเปลี่ยนความชั่วร้าย ตัวอย่างเช่น: หากฉันใช้ Firefox และเยี่ยมชมไซต์ที่ไม่ดีที่พยายามติดตั้งมัลแวร์ที่จะลบhomeโฟลเดอร์ของฉันApparmor มีข้อ จำกัด ใน Firefox แม้ว่าจะป้องกันไม่ให้ทำสิ่งที่ฉันไม่ต้องการ (เช่นการเข้าถึงเพลงเอกสาร ฯลฯ ) วิธีนี้แม้ว่าแอปพลิเคชันของคุณจะถูกบุกรุกไม่สามารถทำอันตรายได้

มันทำงานอย่างไร

apparmor-utilsแพคเกจประกอบด้วยเครื่องมือบรรทัดคำสั่งสำหรับการกำหนดค่า AppArmor ใช้มันคุณสามารถเปลี่ยนโหมดการทำงานของ Apparmor ค้นหาสถานะของโปรไฟล์สร้างโปรไฟล์ใหม่ ฯลฯ

คำสั่งเหล่านี้เป็นคำสั่งทั่วไป:

หมายเหตุ:โปรไฟล์จะถูกเก็บไว้ใน/etc/apparmor.d/

  • คุณสามารถตรวจสอบสถานะของ Apparmor sudo apparmor_statusได้ คุณจะได้รับรายการโปรไฟล์ทั้งหมด * โหลดโปรไฟล์ทั้งหมดในโหมดบังคับใช้โปรไฟล์ทั้งหมดในโหมดบ่นกระบวนการที่กำหนดไว้ในการบังคับใช้ / บ่น ฯลฯ
  • หากต้องการวางโปรไฟล์ในโหมดบ่นที่คุณใช้โฟลเดอร์ของโปรแกรมจะอยู่sudo aa-complain /path/to/binที่ไหน ตัวอย่างเช่นการทำงาน: จะทำให้ Firefox อยู่ในโหมดบ่น/path/to/binbinsudo aa-complain /usr/bin/firefox
  • คุณใช้sudo aa-enforce /path/to/binเพื่อบังคับใช้โปรไฟล์โปรแกรม
  • คุณสามารถโหลดโปรไฟล์ทั้งหมดลงในโหมดบ่น / บังคับใช้ด้วยsudo aa-complain /etc/apparmor.d/*และsudo aa-enforce.d/*ตามลำดับ

apparmor_parserเพื่อโหลดรายละเอียดลงในเคอร์เนลที่คุณจะใช้ คุณสามารถโหลดโปรไฟล์โดยใช้-rพารามิเตอร์

  • ในการโหลดการใช้โปรไฟล์: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aซึ่งพิมพ์เนื้อหาของprofile.nameลงในโปรแกรมแยกวิเคราะห์ของ Apparmor ได้อย่างมีประสิทธิภาพ
  • หากต้องการโหลดโปรไฟล์ซ้ำคุณใช้-rพารามิเตอร์ดังนี้:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • หากต้องการโหลดโปรไฟล์ทั้งหมดของ Apparmor ใหม่ให้ใช้: sudo service apparmor reload

การปิดใช้งานรายละเอียดที่คุณเชื่อมโยงไปยัง/etc/apparmor.d/disable/การใช้lnเช่นนี้ แล้วเรียกใช้: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/sudo apparmor_parser -R /etc/apparmor.d/profile.name

หมายเหตุ:อย่าสับสนapparmor_parser -rกับapparmor_parser -R พวกเขาไม่ใช่สิ่งเดียวกัน!

  • หากต้องการเปิดใช้งานโปรไฟล์อีกครั้งให้ลบลิงก์สัญลักษณ์ไปยังโปรไฟล์/etc/apparmor.d/disable/จากนั้นโหลดโดยใช้-aพารามิเตอร์sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • คุณสามารถปิดใช้งาน Apparmor ด้วยsudo service apparmor stopและลบโมดูลเคอร์เนลโดยใช้sudo update-rc.d -f apparmor defaults
  • เริ่ม Apparmor ด้วยsudo service apparmor startและโหลดโมดูลเคอร์เนลด้วยsudo update-rc.d apparmor defaults

โปรไฟล์

โปรไฟล์จะถูกเก็บไว้ใน/etc/apparmor.d/และตั้งชื่อตามเส้นทางแบบเต็มไปยังไฟล์ที่เรียกทำงานได้ซึ่งจะแทนที่ '/' ด้วย '.' ยกตัวอย่างเช่น/etc/apparmor.d/bin.pingเป็นรายละเอียดสำหรับใน ping/bin

มีรายการหลักสองประเภทที่ใช้ในโปรไฟล์:

  1. รายการเส้นทางกำหนดว่าไฟล์ใดที่แอปพลิเคชันสามารถเข้าถึงได้

  2. รายการความสามารถกำหนดสิทธิ์พิเศษที่กระบวนการสามารถใช้ได้

ให้ดูที่โปรไฟล์pingตั้งอยู่ในetc/apparmor.d/bin.pingเป็นตัวอย่าง

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>รวมไฟล์globalในไดเร็กทอรีtunablesซึ่งอนุญาตให้ใช้คำสั่งที่เกี่ยวข้องกับหลายแอ็พพลิเคชันที่ต้องอยู่ในไฟล์ทั่วไป

/bin/ping flags=(complain)ตั้งค่าพา ธ ไปยังโปรแกรมที่ทำโปรไฟล์และตั้งค่าโหมดให้บ่น

capability net_rawอนุญาตให้แอปพลิเคชันเข้าถึงCAP_NET_RAW Posix.1eความสามารถ

/bin/ping mixr อนุญาตให้แอปพลิเคชันอ่านและดำเนินการเข้าถึงไฟล์

/etc/modules.conf r,The rให้แอปพลิเคชันอ่านสิทธิ์สำหรับ/etc/modules.conf

หมายเหตุ:หลังจากที่สร้าง / แก้ไขรายละเอียดที่คุณจำเป็นต้องโหลดรายละเอียดสำหรับการเปลี่ยนแปลงที่จะมีผลบังคับใช้

นี่คือรายการสิทธิ์ที่คุณสามารถใช้ได้:

  • r - อ่าน
  • w - เขียน
  • ux - ดำเนินการไม่ จำกัด
  • Ux - ไม่ จำกัด ดำเนินการ - ขัดสิ่งแวดล้อม
  • px - ดำเนินการโปรไฟล์แบบไม่ต่อเนื่อง
  • Px - โพรไฟล์แบบแยกรัน - ขัดสภาพแวดล้อม
  • ix - สืบทอดการทำงาน
  • m - อนุญาตPROT_EXECด้วยการmmap(2)โทร
  • l - ลิงค์

แหล่งที่มา


ดังนั้นมันเหมือนกับโปรแกรมที่ทำหน้าที่เป็นผู้ใช้และไม่มีสิทธิ์ในการแก้ไขไฟล์ส่วนใหญ่ในระบบใช่หรือไม่
Izkata

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

อ่าดังนั้นโปรไฟล์จะเหมือนกับกลุ่มผู้ใช้สำหรับโปรแกรม;)
Izkata

ใช่มากเช่นนั้น;)
เซท

คุณคิดว่าผู้ใช้สามารถใช้แอปเพื่อบล็อกการเชื่อมต่ออินเทอร์เน็ตทุกครั้งและบอกว่าใครพยายามเข้าถึงบ้าง และตามบันทึกนั้นเราสร้างการอนุญาตสำหรับแต่ละแอปพลิเคชันหรือไม่ ความคิดคือการทำให้มันทำงานเหมือน Zonalarm บน window $ และเช่นเดียวกับ "firewalls ต่อแอปพลิเคชัน" แบบเก่าบน linux เช่น LeopardFlower และ ProgramGuard (ดูเหมือนว่าฉันจะไม่สามารถคอมไพล์ได้อีกต่อไป) และยังมีใหม่ที่เรียกว่า Douane โมดูลเคอร์เนลเพื่อให้สิ่งต่าง ๆ ทำงานได้
กุมภ์

6

AppArmor เป็นระบบควบคุมการเข้าถึง (MAC) ซึ่งเป็นการปรับปรุงเคอร์เนล (LSM) เพื่อ จำกัด โปรแกรมไว้ในชุดทรัพยากรที่ จำกัด รูปแบบความปลอดภัยของ AppArmor คือการผูกแอ็ตทริบิวต์การควบคุมการเข้าถึงกับโปรแกรมมากกว่าให้กับผู้ใช้ AppArmor confinement ถูกจัดเตรียมผ่านโปรไฟล์ที่โหลดลงในเคอร์เนลซึ่งโดยปกติจะเป็นการบู๊ต โปรไฟล์ AppArmor สามารถอยู่ในหนึ่งในสองโหมด: การบังคับใช้และบ่น ส่วนกำหนดค่าที่โหลดในโหมดการบังคับใช้จะส่งผลให้มีการบังคับใช้นโยบายที่กำหนดไว้ในโปรไฟล์เช่นเดียวกับความพยายามละเมิดนโยบายการรายงาน (ผ่าน syslog หรือ auditd) โปรไฟล์ในโหมดบ่นจะไม่บังคับใช้นโยบาย แต่จะรายงานความพยายามละเมิดนโยบายแทน

AppArmor นั้นแตกต่างจากระบบ MAC อื่น ๆ บน Linux ที่เป็นแบบพา ธ อนุญาตให้ผสมการบังคับใช้และโปรไฟล์โหมดบ่นใช้ไฟล์รวมถึงการพัฒนาที่ง่ายและมีอุปสรรคน้อยกว่าระบบ MAC อื่นที่เป็นที่นิยม

AppArmor เป็นเทคโนโลยีที่จัดตั้งขึ้นเป็นครั้งแรกใน Immunix และต่อมารวมเข้ากับ Ubuntu, Novell / SUSE และ Mandriva ฟังก์ชันการทำงานหลักของ AppArmor อยู่ในเคอร์เนล mainline จาก 2.6.36 เป็นต้นไป ทำงานอย่างต่อเนื่องโดย AppArmor, Ubuntu และนักพัฒนาอื่น ๆ เพื่อรวมการทำงานของ AppArmor เพิ่มเติมลงในเคอร์เนล mainline

ฉันมีลิงก์ที่เป็นประโยชน์เพิ่มเติมเล็กน้อยกับคุณ: Wiki.Ubuntu.com Ubuntuforums.org

คู่มือ Apparmor สำหรับUbuntu 12.04และUbuntu 12.10

หวังว่าจะช่วยคุณ


3

นี่คือคำพูดจากApparmor wiki :

AppArmor เป็นระบบความปลอดภัยของแอพพลิเคชั่น Linux ที่มีประสิทธิภาพและใช้งานง่าย AppArmor ปกป้องระบบปฏิบัติการและแอปพลิเคชันในเชิงรุกจากภัยคุกคามภายนอกหรือภายในแม้กระทั่งการโจมตีแบบ zero-day โดยการบังคับใช้พฤติกรรมที่ดีและป้องกันแม้แต่ข้อบกพร่องของแอปพลิเคชันที่ไม่รู้จักจากการถูกโจมตี นโยบายความปลอดภัยของ AppArmor กำหนดว่าทรัพยากรระบบใดที่แต่ละแอปพลิเคชันสามารถเข้าถึงได้และมีสิทธิ์ใดบ้าง นโยบายเริ่มต้นจำนวนมากรวมอยู่ใน AppArmor และด้วยการใช้การวิเคราะห์แบบคงที่ขั้นสูงและเครื่องมือการเรียนรู้ขั้นสูงนโยบาย AppArmor สำหรับแอพพลิเคชั่นที่ซับซ้อนมากสามารถนำไปใช้งานได้ในเวลาไม่กี่ชั่วโมง

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