Score:2

ฉันสามารถป้องกันผู้ใช้ที่ไม่ใช่รูทโดยใช้ตัวบันทึกเพื่อสร้างรายการปลอม (เช่น sshd) ใน syslog ได้หรือไม่

ธง eg

ฉันเพิ่งเล่นกับคนตัดไม้ซึ่งเป็นผู้ใช้ที่ไม่ใช่รูท แต่ดูเหมือนว่าทุกคนสามารถสร้างรายการปลอมใน syslog โดยใช้พารามิเตอร์ "-t"

สิ่งนี้คาดว่าจะทำงานด้วยวิธีนี้หรือไม่? ฉันสามารถทำให้บันทึกท่วมท้นหรือซ่อนการกระทำบางอย่างภายใต้รายการปลอมต่างๆ ที่ท่วมท้น ซึ่งไม่ดีต่อการรักษาความปลอดภัยของระบบ

ฉันสามารถป้องกันได้หรือไม่? => คนตัดไม้เป็นส่วนหนึ่งของแพ็คเกจ util-linux-systemd (util-linux เดิม) และไม่สามารถถอนการติดตั้งได้ง่ายๆ ประการที่สอง สามารถเรียกใช้งานได้สำหรับทุกคนในเครื่องตามค่าเริ่มต้น

ระบบที่ใช้: SuSE Linux ที่แตกต่างกัน (SLE 10, 11, 15)

บรรทัดคำสั่ง:

justin@garfield:~ > logger -t sshd[986]: ยอมรับคีย์สาธารณะจากพอร์ต 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (เพียง ของปลอม)"
justin@garfield:~ > su -l
รหัสผ่าน:
root@garfield:~ > หาง -n 2 /var/log/messages
27 ต.ค. 13:35:45 น. garfield sshd[986]: ยอมรับคีย์สาธารณะจากพอร์ต 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (เพียงแค่ ปลอม)
27 ต.ค. 13:36:21 น. การ์ฟิลด์ su: (ไปที่รูท) จัสตินบน /dev/pts/0

หมายเหตุ: ฉันเพิ่งใช้ค่าที่เป็นไปไม่ได้ (IP, publickey) เพื่อทำให้ชัดเจนว่าเป็นรายการปลอม

Score:0
ธง in

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

ฉันใช้ rsyslogdฉันจึงใช้มันเป็นตัวอย่าง

ก่อนอื่นคุณต้องกำหนดค่า rsyslogd ในการจัดเก็บตัวแปรบางอย่างจากซ็อกเก็ตจะเปิดขึ้น:

โมดูล (โหลด = "imuxsock"
    SysSock.Annotate="เปิด"
    SysSock.ParseTrusted="เปิด"
)

ด้วยสิ่งนี้ คุณจะสามารถเข้าถึงตัวแปรต่อไปนี้:

  • ปิด: PID ของกระบวนการเข้าสู่ระบบ
  • uid และ กิด: UID และ GID ที่กระบวนการบันทึกทำงานเป็น
  • ชื่อแอป: ชื่อของกระบวนการเข้าสู่ระบบ
  • ซม: บรรทัดคำสั่งแบบเต็มของกระบวนการบันทึก

ในกรณีของ คนตัดไม้, ปิด จะเป็น PID ของ systemd-วารสาร, และ ชื่อแอป จะเป็นเสมอ systemd-วารสาร. ด้วยสิ่งเหล่านี้ คุณสามารถทำบางสิ่งได้:

เพียงเข้าสู่ระบบเหล่านี้

คุณสามารถใช้เทมเพลตที่มีตัวแปรเหล่านี้ เพื่อให้ดูว่ามีความคลาดเคลื่อนระหว่างข้อความและพารามิเตอร์ที่ได้รับหรือไม่ ในเทมเพลต คุณสามารถเข้าถึงตัวแปรเหล่านี้ได้ เช่น %$!pid%. ตัวอย่างเช่น คุณใช้เทมเพลตแบบนี้:

$ template SomeLogFormat,"%TIMESTAMP:::date-rfc3339% <%pri-text%> %syslogtag%%msg% (บันทึกโดย pid=%$!pid% ทำงานเป็น %$!uid%)\n"

daemon.* /var/log/daemon.log;SomeLogFormat

จะให้รายการต่อไปนี้:

2021-10-27T18:27:54.638759+02:00 <daemon.info> sshd[986]: ยอมรับคีย์สาธารณะจากพอร์ต 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a: z3:55:07:04 (แค่ของปลอม) (บันทึกโดย pid=540 ทำงานเป็น 1,000)

จากข้อความนี้ คุณสามารถดูได้ว่าข้อความนั้นถูกต้องหรือไม่ และถ้าไม่ใช่ คุณจะได้รับ UID ของผู้ใช้ที่อยู่ในอารมณ์ตลก โปรดทราบว่าแทนที่จะระบุพารามิเตอร์ทีละรายการ คุณสามารถใช้ %$!% template ซึ่งจะบันทึกค่าข้างต้นในรูปแบบ JSON

เปลี่ยนเส้นทางผู้ใช้บันทึก

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

ถ้า $!uid > 999 แล้ว /opt/log/user.log;SomeLogFormat
& หยุด

การใช้งานเทมเพลต (the ;SomeLogFormat ส่วน) เป็นตัวเลือก ด้วยวิธีนี้ ทุกสิ่งที่มาจากสิ่งใดก็ตามที่มี UID มากกว่า 1,000+ จะถูกเขียนถึง /opt/log/user.log. คุณยังสามารถแยกบันทึกผู้ใช้ตาม UID ได้ดังนี้:

$เทมเพลต userLogFile,"/opt/log/userlog_%$!uid%.log"

ถ้า $!uid > 999 แล้ว ?userLogFile;SomeLogFormat
& หยุด

ด้วยวิธีนี้ผู้ใช้ทุกคนจะมีเป็นของตัวเอง userlog_xxxx.log ไฟล์.

โพสต์คำตอบ

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