ฉันได้กำหนดค่าเซิร์ฟเวอร์อูบุนตูด้วย openssh เพื่อเชื่อมต่อกับมันและรันคำสั่งจากระบบระยะไกลเช่นโทรศัพท์หรือแล็ปท็อป ปัญหาคือ ... ฉันอาจไม่ใช่คนเดียว
มีวิธีที่จะทราบความพยายามในการเข้าสู่ระบบทั้งหมดที่ทำกับเซิร์ฟเวอร์หรือไม่?
ฉันได้กำหนดค่าเซิร์ฟเวอร์อูบุนตูด้วย openssh เพื่อเชื่อมต่อกับมันและรันคำสั่งจากระบบระยะไกลเช่นโทรศัพท์หรือแล็ปท็อป ปัญหาคือ ... ฉันอาจไม่ใช่คนเดียว
มีวิธีที่จะทราบความพยายามในการเข้าสู่ระบบทั้งหมดที่ทำกับเซิร์ฟเวอร์หรือไม่?
คำตอบ:
บนเซิร์ฟเวอร์ Ubuntu คุณสามารถหาที่อยู่ในระบบต่อเมื่อ (และจากการที่) /var/log/auth.log
ในแฟ้ม ที่นั่นคุณพบรายการที่ชอบ:
May 1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May 1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May 1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
/var/log/auth.log
บน distros หมวกตามสีแดงเช่น Fedora / CentOS / RHEL /var/log/secure
คุณสามารถตรวจสอบสำหรับผู้ใช้เข้าสู่ระบบภายในแฟ้ม
หากคุณต้องการข้อมูลเพิ่มเติมอ่านคำถามและคำตอบ SuperUser นี้: ฉันจะบันทึกความพยายามในการเข้าถึง SSH และติดตามว่าผู้ใช้ SSH ทำอะไรบนเซิร์ฟเวอร์ของฉันได้อย่างไร .
/var/log/secure
ในระบบ Ubuntu ของฉัน
/var/log/auth
ในระบบของฉัน นั่นเป็นเหตุผลที่ก่อนโพสต์คำตอบที่ผมตรวจสอบถ้าผมมี/var/log/secure
ในระบบของฉันซึ่งยังเป็นเซิร์ฟเวอร์ Ubuntu :)
/var/log/secure
รูปแบบของอูบุนตูและไม่มี
/var/log/secure
คือ Fedora / CentOS / RHEL ism
บน Ubuntu คุณสามารถเข้าสู่ระบบผ่าน SSH และใช้คำสั่ง Linux tail เพื่อแสดงจำนวน x บรรทัดสุดท้ายของ/var/log/auth.log
ไฟล์ของคุณ เมื่อคุณเข้าสู่ระบบผ่าน SSH ใช้คำสั่งต่อไปนี้เพื่อดู 100 บรรทัดสุดท้ายของบันทึก SSH ของคุณ:
tail /var/log/auth.log -n 100
หรือแม้กระทั่งทำความสะอาด
tail -100 /var/log/auth.log | grep 'sshd'
โปรดทราบว่าการกำหนดค่าเริ่มต้นบน Ubuntu คือไม่บันทึกการเข้าสู่ระบบ ssh ไปยัง/var/log/auth
ไฟล์ นี่คือINFO
ระดับการบันทึก
หากคุณต้องการที่จะมีมันรวมถึงความพยายามในการเข้าสู่ระบบในแฟ้มบันทึกที่คุณจะต้องแก้ไข/etc/ssh/sshd_config
ไฟล์ (เป็น root หรือ sudo) และเปลี่ยนLogLevel
จากการINFO
VERBOSE
หลังจากนั้นให้รีสตาร์ท sshd daemon ด้วย
sudo service rsyslog restart
หลังจากนั้นความพยายามในการเข้าสู่ระบบ ssh จะถูกบันทึกไว้ใน/var/log/auth.log
ไฟล์
คำแนะนำของฉันคือการใช้auditd นี่คือการบันทึกโดยใช้ระบบย่อยการตรวจสอบของเคอร์เนลลินุกซ์และในความคิดของฉันวิธีที่เหมาะสมที่จะทำถ้าคุณจริงจัง และด้วยลักษณะของคำถาม {ความปลอดภัยที่เกี่ยวข้อง} คุณควรใช้PAMด้วย ในระดับเริ่มต้นที่เพิ่งติดตั้งauditdและPAMคุณควรได้รับ SSH ที่ประสบความสำเร็จและไม่สำเร็จทั้งหมดที่พยายามเข้าสู่ระบบในไฟล์ audit.log ของคุณ ดังนั้นคุณไม่จำเป็นต้องกำหนดค่าอะไรเลยเพียงแค่ติดตั้งauditdและPAM ฉันรู้ว่ามือแรกของ SLES และจะเดิมพัน RHEL และรุ่นอื่น ๆขององค์กรของ linux จะทำงานในทำนองเดียวกัน
http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html
ในบันทึกการตรวจสอบวัตถุดิบที่สร้างขึ้นโดยauditdคุณสามารถใช้อย่างใดอย่างหนึ่งใช้สิ่งที่ชอบaureport
ในการกรองนั้นซึ่งได้อธิบายไว้ในauditdหน้าคนเขียน parser ข้อความของคุณเองหรือเพียงแค่ใช้ VI และค้นหาคำหลัก
นี่คือยกเว้น/var/log/audit/audit.log
ไฟล์ของฉันกับฉัน ssh'ing ลงในเซิร์ฟเวอร์ linux ของฉัน
node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
date --date @1480622612.317
ที่ผลลัพธ์Thu Dec 1 15:03:32 EST 2016
และในเมื่อฉัน ssh จะลงในเซิร์ฟเวอร์ของฉันเมื่อres=failed
ใดคือเมื่อคุณต้องการตรวจสอบที่อยู่ IP และชื่อโฮสต์เหล่านั้นเพื่อดูว่าระบบพยายามเชื่อมต่อใดภายใต้ชื่อผู้ใช้ที่พยายามทำ และเห็นได้ชัดว่า ssh ที่ประสบความสำเร็จพยายามที่จะเข้าใจว่าเกิดอะไรขึ้นในระบบของคุณ - ตัวอย่างเช่นเพื่อนร่วมงานของคุณที่อยู่ที่โต๊ะเดียวกันทุกวันด้วยชื่อโฮสต์ = bobscomputer และที่อยู่ ip = 192.168.5.5; หากคุณเห็นความพยายามที่ประสบความสำเร็จในเวลา 2am เมื่อวานนี้ภายใต้ชื่อผู้ใช้ของเขาจากที่อยู่ IP 10.10.5.6 ตัวอย่างเช่นคุณอาจสนใจคุยกับบ๊อบเพื่อสอบสวน มีความพยายามแฮ็คจากบุคคลอื่นหรือไม่ และไม่นานหลังจากนั้นมีความพยายามที่จะรูทในบันทึกการตรวจสอบจากบัญชีของ bob หรือไม่
เมื่อคุณเห็นซ้ำ ๆres=failed
และauid=0
และacct=root
แล้วว่าเป็นใครบางคนพยายามที่จะ ssh ลงในช่องของคุณลงในบัญชีหลักและเป็นเมื่อคุณปรับเปลี่ยน/etc/hosts.deny
มีที่อยู่ IP ที่ SSHD
ฉันรู้ว่ามันเก่า แต่ฉันเขียนบางสิ่งบางอย่างเพื่อตรวจสอบการเชื่อมต่อ / พยายาม ssh ที่ประสบความสำเร็จและล้มเหลว รวมถึง IP ที่ถูกแบนหากคุณใช้ sshguard ซอฟต์แวร์เขียนด้วย Python มันจะส่งอีเมลถึงคุณเมื่อมีคนประสบความสำเร็จในการเชื่อมต่อผ่าน ssh เมื่อมีคนได้รับรหัสผ่าน ssh ผิดหรือเมื่อมีคนถูกแบนเนื่องจากความพยายามที่ล้มเหลวหลายครั้ง หวังว่านี่จะช่วยให้ใครบางคนในอนาคตที่ค้นหาปัญหานี้และพบรหัสของฉัน!
https://github.com/amboxer21/SSHMonitor
สำหรับสคริปต์หลามฉันเขียนสคริปต์ทุบตีเพื่อตรวจสอบกระบวนการ มันตรวจสอบว่ามันทำงานทุกนาทีผ่านงานรูท cron หรือไม่ หากไม่ได้ใช้งานจะเป็นการเริ่มกระบวนการอื่น ซึ่งถูกเรียกใช้โดยงาน cron รูททุกนาที
สิ่งที่ดีที่สุดที่ฉันเคยเจอสำหรับการบันทึกคำสั่ง SSH คือ rootsh เครื่องมือนี้อนุญาตให้ผู้ดูแลระบบได้รับคำสั่งทุกคำสั่งจากทุกเซสชันที่มีการบันทึกระดับสูง
ฉันเขียนสคริปต์เพื่อติดตั้งและกำหนดค่า ROOTSH ใน ubuntu และ CentOS / RHEL
ดาวน์โหลดจาก github นี่คือลิงค์
https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh
chmod +x setup_rootssh.sh ; sudo ./setup_rootssh.sh