เหตุใด syslog จึงเป็นผู้ใช้


15

เมื่อฉันตรวจสอบ/var/logฉันพบสิ่งที่แปลกมาก

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

syslogขอให้สังเกตว่าเจ้าของแฟ้มบันทึกครั้งแรกที่สี่คือ มันแปลกเพราะมีผู้ใช้เพียงคนเดียวในระบบของฉัน:

me@me~$ users
me

ทำไมชื่อไฟล์syslogถึงเป็นผู้ใช้


6
ฉันขอยืนยันกับคุณว่ามีผู้ใช้มากกว่าหนึ่งรายในระบบของคุณ ฉันรู้ว่าคุณหมายถึง "ผู้ใช้มนุษย์ที่เชื่อมโยงกับบัญชีและโฮมไดเรกทอรี" แต่แนวคิดของ "ผู้ใช้" สำหรับทุกระบบนั้นกว้างกว่านั้น

ลองดูใน/etc/passwdบางครั้ง ฉันนับผู้ใช้ที่มีบทบาท 36 คนไม่รวมรูท นอกจากนี้ลอง - คุณman usersกำลังสมมติ (ไม่ถูกต้อง) สิ่งที่คำสั่งทำ
chrylis -on

คำตอบ:


26

เกี่ยวกับความปลอดภัยและการอนุญาตในการเข้าถึงระบบของคุณ

และไม่คุณมีมากขึ้นผู้ใช้มากกว่าเพียงแค่ผู้ใช้ของคุณเอง มี "root", "daemon", "bin", "games", "none" และ "list"

ทำ more /etc/passwdรายชื่อผู้ใช้ในระบบของคุณ คุณจะเห็นบรรทัดจำนวนมากด้วย "/ usr / sbin / nologin" นั่นหมายความว่าสิ่งเหล่านั้นไม่สามารถใช้เป็นผู้ใช้ปกติที่มีการเข้าสู่ระบบเช่นผู้ใช้ของคุณเองสามารถ คอลัมน์ที่สามคือ ID ผู้ใช้ ID ผู้ใช้ทั้งหมดที่ต่ำกว่า 1,000 เป็นผู้ใช้หลอก ผู้ใช้ sudo คนแรกของคุณ (ผู้ที่ติดตั้งระบบ) มี 1,000 ตามค่าเริ่มต้น

โดยทั่วไปผู้ใช้syslogได้รับอนุญาตให้ใช้/var/log/ไดเรกทอรีที่ตั้งค่าเป็นไดเรกทอรีที่เป็นเจ้าของโดยรากรากหากไม่ต้องการลดการอนุญาตในไดเรกทอรี (เช่นลดสิทธิ์เพื่อให้ผู้ใช้รายอื่นสามารถใช้งานได้) ผู้ใช้รายนี้ถูกสร้างขึ้น

เช่นเดียวกับผู้ใช้ Apache และ MySQL (คุณจะเห็นผู้ใช้ www-data และกลุ่มและผู้ใช้ MySQL และกลุ่มเมื่อคุณติดตั้งเหล่านี้) แต่มันจะใช้สำหรับการโหลดสิ่งต่าง ๆ มีกลุ่ม "การโทรออก" ที่ใช้ในการเข้าถึงอุปกรณ์ไปยังภายนอก ผู้ใช้จะถูกเพิ่มในกลุ่มนี้เพื่ออนุญาตให้ผู้ใช้ใช้อุปกรณ์เหล่านี้ มิฉะนั้นคุณจะได้รับสิทธิ์ปฏิเสธข้อผิดพลาด มันทำงานได้สองวิธี: การปฏิเสธการเข้าถึงของผู้ใช้หมายถึงการลบกลุ่ม


แม้ว่าจำนวนนั้นจะไม่ได้ 1,000 เสมอ ฉันได้ทำงานกับระบบที่มีประวัติยาวนานพอที่ ID ของผู้ใช้จริงเริ่มต้นจาก 20
kasperd

1
ฉันรู้ แต่ Ubuntu เริ่มต้นที่ 1,000 เสมอตัวอย่างเช่นเริ่มที่ 500
Rinzwind

ใช่ แต่ผู้ใช้ไม่จำเป็นต้องสร้างขึ้นในเครื่อง ในกรณีของฉันพวกเขาได้รับผ่าน NIS วันนี้อาจเป็น LDAP
kasperd

ผู้ใช้จริงเริ่มต้นที่ 20 จะทำลาย distro ตาม Debian อย่างจริงจัง UIDs 0-99 บนระบบที่ใช้เดเบียนได้รับการจัดสรรโดยโครงการ Debian สำหรับการใช้งานเฉพาะ
ปีเตอร์กรี

1
@PaddyLandau / bin / false จะออกจากการเข้าสู่ระบบโดยไม่ต้องแจ้งให้ทราบ nologin ควรแสดงข้อความ "บัญชีนี้ไม่สามารถใช้งานได้ในขณะนี้" (/etc/nologin.txt ระงับประกาศนี้)
Rinzwind

8

บริการ syslog ซึ่งเขียนข้อความบันทึกที่สร้างขึ้นโดยเคอร์เนลและบริการอื่น ๆ ไปยังไฟล์บันทึกต่างๆคอนโซลและ / หรือปลายทางอื่น ๆ จะทำงานภายใต้บัญชีผู้ใช้พิเศษของตนเอง บริการอื่น ๆ มากมาย นี่คือการใช้หลักการของสิทธิ์น้อยที่สุด :

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

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

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

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


usersคำสั่งที่คุณใช้ตามหน้าคนมันแสดงให้เห็นเฉพาะผู้ใช้ที่ล็อกอินในปัจจุบัน เนื่องจากผู้ใช้ syslog เป็นผู้ใช้ระบบมันจะไม่เข้าสู่ระบบดังนั้นจึงจะไม่ปรากฏในรายการนี้ คุณสามารถมองเข้าไปในไฟล์/etc/passwdหรือใช้วิธีการใด ๆ อื่น ๆ ที่อธิบายไว้ที่นี่ได้รับรายชื่อของทุกคน (มนุษย์และระบบ) ผู้ใช้ในระบบของคุณ


7

เนื่องจาก syslog ไม่ใช่ไฟล์ เป็น daemon ที่ระบบใช้เพื่อเก็บ daemon ระบบและข้อความแอ็พพลิเคชัน (ดีบักข้อผิดพลาดคำเตือนและข้อมูล) ไปยังไฟล์

อ่านที่นี่สำหรับประวัติโดยย่อของ syslog

ในการแจกแจงอื่น ๆ เช่นผู้ที่อยู่บนพื้นฐานของ Red Hat Linux, เอาท์พุท syslog /var/log/messagesระบบจะถูกเก็บไว้ในไฟล์ที่เรียกว่า มันขึ้นอยู่กับการกำหนดค่า

ดังที่ Rinzwind กล่าวด้วยเหตุผลด้านความปลอดภัยส่วนประกอบที่แตกต่างกันในระบบปฏิบัติการทำงานกับผู้ใช้เฉพาะและผู้ใช้แต่ละคนมีสิทธิ์ของตนเอง ตัวอย่างเช่น syslog อย่างน้อยมีสิทธิ์เขียนใน/var/logโฟลเดอร์

ระบบมีบริการมากมายและโดยปกติจะมีผู้ใช้สำหรับแต่ละบริการหรือสำหรับกลุ่มเล็ก ๆ ตัวอย่างเช่นapache get www-data|httpd|apache. โดยปกติผู้ใช้ daemon เหล่านี้จะไม่ได้รับการเข้าถึง Bash เพื่อหลีกเลี่ยงการรั่วไหลของความปลอดภัย

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