วิธีตรวจสอบที่อยู่ IP ของผู้ที่เข้าสู่ระบบรูท?


15

มีหลายคนที่เข้าถึงรูทไปยัง VM เฉพาะที่ฉันรับผิดชอบ ฉันต้องการทราบว่าที่อยู่ IP ใดที่ใช้ในการเข้าสู่ระบบรูท


1
คุณสามารถเข้าถึงบันทึกเพื่อดูว่าคำสั่งที่ได้ทำไว้ก่อนหน้านี้: sudo less /root/.bash_historyฉันยังคงพยายามที่จะวิจัยนี้ดูเหมือนว่าเป็นคำถามที่ดีจริงๆ :)
ryekayo


6
หากใครบางคนเข้าสู่ระบบในฐานะ root พวกเขาสามารถทำอะไรก็ได้ที่ต้องการลบบันทึกที่พวกเขาต้องการเช่นกัน ...
Comintern

4
ในฐานะที่เป็นบันทึกด้านข้างคุณควรไม่อนุญาตให้เข้าสู่ระบบรูทโดยตรงนี่เป็นปัญหาด้านความปลอดภัยที่ยิ่งใหญ่
fedorqui

คำตอบ:


15

คุณสามารถใช้lastคำสั่งเพื่อรับข้อมูลนี้

# last|head
phemmer  ssh          192.168.0.24     Wed Aug 20 21:08 - 21:08  (00:00)
phemmer  pts/13       192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:07 - 23:07  (00:00)
phemmer  pts/15       192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  ssh          192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  :0                            Wed Jul 30 20:06   still logged in
reboot   system boot  3.13.2-gentoo    Wed Jul 30 20:05   still running

อย่างที่คุณไม่ต้องสงสัยเลยว่าคอลัมน์ 3 จะแสดงที่อยู่ IP ระยะไกลในกรณีที่มีการเข้าสู่ระบบ SSH

lastใช้/var/log/wtmpไฟล์ดังนั้นวิธีนี้คล้ายกับคำตอบของ G-Man (ง่ายกว่าเล็กน้อยเนื่องจากคุณไม่ต้องระบุพา ธ ไปยังไฟล์)


14

ขึ้นอยู่กับการกระจายหรือระบบปฏิบัติการของคุณ sshdจะบันทึกการเข้าสู่ระบบแต่ละที่และจะรวมที่อยู่ IP ที่เกี่ยวข้องในรูปแบบการเข้าสู่ระบบเช่นนี้:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

ส่วนนั้นสอดคล้องกัน แต่วิธีที่คุณไปที่นั่นอาจแตกต่างกันไป บนระบบที่systemdใช้ให้ใช้journalctl:

journalctl /usr/bin/sshd

เพื่อแสดงรายการข้อความบันทึกทั้งหมดจากsshdไฟล์เรียกทำงาน คุณสามารถ grep นั้นสำหรับการเข้าสู่ระบบรากหรือเกณฑ์อื่น ๆ และ จำกัด ตามวันที่ด้วย--sinceและ--until(ดูman journalctl)

หรืออีกทางหนึ่งและในอดีตข้อความจะถูกบันทึกลงใน (ปกติ) /var/logในบางส่วน sshdข้อความทั่วไปจะเข้ามา/var/log/auth.logแต่ไฟล์ที่แน่นอนอาจแตกต่างกันไปอย่างมาก ไม่ว่ามันจะเป็นอะไร:

grep sshd /var/log/auth.log

จะให้ผลลัพธ์ที่เทียบเท่ากับjournalctlเวอร์ชั่นในวงกว้าง



7

คุณไม่ควรอนุญาตให้ผู้อื่นใช้งานsshโดยลงชื่อเข้าใช้โดยตรงในฐานะรูท (ใช้รหัสผ่านรูทหรือใบรับรอง/root/.ssh/authorized_keys) หากคุณต้องการตรวจสอบว่าใครเข้าสู่ระบบในฐานะรูท ให้ใช้หนึ่งบัญชีแทนแต่ละคนและให้พวกเขาใช้sudoเพื่อรับสิทธิ์การใช้งานรูท ด้วยวิธีนี้คุณจะพบในบันทึกที่เหมาะสม (ตำแหน่งของล็อกไฟล์ขึ้นอยู่กับการกระจายที่คุณมีและคุณยังสามารถกำหนดค่าภูตเข้าสู่ระบบเพื่อส่งข้อความไปยังเครื่องอื่น) user john ran the command 'sudo rm -rf /'ข้อความ บางทีคุณอาจจะไม่พบคำสั่งเดียวในบันทึกได้อย่างง่ายดาย


2
ก่อนอื่นไม่ตอบคำถาม ประการที่สองคุณควรมีวิธีช่วยชีวิตระบบเสมอ จะเกิดอะไรขึ้นเมื่อคุณใช้การรับรองความถูกต้องของ LDAP และเซิร์ฟเวอร์ LDAP ของคุณตาย คุณจะเข้าสู่ระบบได้อย่างไร?
แพทริค

4
@ แพทริคแรกคำถามเริ่มต้นด้วย "มีหลายคนที่เข้าถึงรูทไปยัง VM ที่เจาะจง" ดังนั้นจึงเหมาะสมที่จะแนะนำว่าแนวทางที่ถูกต้องไม่ใช่การตรวจสอบ IP แต่เป็นการตรวจสอบผู้ใช้แทน ประการที่สองปัญหาที่คุณไม่เกี่ยวข้อง: หากบุคคลที่ควรเข้าถึงเครื่องในกรณีฉุกเฉินของ LDAP ไม่ทำงานเธอควรมีบัญชีท้องถิ่นของตัวเองและถ้าเธอควรจะทำงานการบริหารในกรณีฉุกเฉินบัญชีท้องถิ่นจะต้องมีsudoอำนาจ ไม่มีเหตุผลที่แท้จริงที่จะแบ่งปันบัญชีระหว่างคนสองคน แต่คน ๆ หนึ่งอาจมีสองบัญชีได้ถ้าต้องการ
pqnet

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

@ แพทริคอะไรก็ตาม คุณจัดการเซิร์ฟเวอร์ของคุณเองฉันจัดการของฉัน คุณทำประเด็นของคุณแล้วผู้คนจะอ่านความคิดเห็นของคุณและตัดสินใจ
pqnet

1
@ แพทริกปรับปรุงอะไร? การมีบัญชีผู้ใช้แยกต่างหากสำหรับคนที่แยกต่างหากนั้นเกือบจะเป็นการปรับปรุงมากกว่าที่มีหลายคนแบ่งปันrootบัญชีเดียว
jw013

0

จากคำอธิบายสั้น ๆ ที่คุณให้มาดูเหมือนว่าจะดีกว่าถ้าคุณตั้งค่าระบบตรวจสอบบันทึก มันจะช่วยให้คุณตรวจสอบการเข้าสู่ระบบสร้างการแจ้งเตือนเปรียบเทียบข้อมูลหลายวันและใช่กราฟแน่นอนสำหรับทุกสิ่ง

แต่ถ้าคุณต้องการตรวจสอบมันชั่วคราวคุณสามารถใช้lastคำสั่ง

last | grep root | grep -v tty | awk '{print $3}'

นี้จะให้รายชื่อของIPsหรือHostnamesจากการที่ผู้ใช้รากได้เข้าสู่ระบบใน

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