เป็นไปได้หรือไม่ที่ OpenSSH จะเข้าสู่ระบบกุญแจสาธารณะที่ใช้ในการรับรองความถูกต้อง?


27

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

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

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

ระบบปฏิบัติการที่ใช้คือ CentOS 5.6 แต่ฉันก็อยากจะได้ยินว่ามันเป็นไปได้ในระบบปฏิบัติการอื่น ๆ

คำตอบ:


33

หากคุณเพิ่ม LogLevel เป็น VERBOSE ใน / etc / sshd / sshd_config มันจะบันทึกลายนิ้วมือของกุญแจสาธารณะที่ใช้ในการตรวจสอบผู้ใช้

LogLevel VERBOSE

จากนั้นคุณจะได้รับข้อความเช่นนี้

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

คุณสามารถใช้ได้

 ssh-keygen -lf /path/to/public_key_file

เพื่อรับลายนิ้วมือของกุญแจสาธารณะที่เจาะจง


2
ขอบคุณ! ผมต้องยืนยันลายนิ้วมือที่สำคัญกับauthorized_keysไฟล์เพื่อให้ฉันทำนี้สคริปต์เล็ก ๆ น้อย ๆ ที่จะพิมพ์ออกลายนิ้วมือของคีย์อนุญาต:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss

ฉันสังเกตเห็นว่าตอนนี้ SSH บันทึกรหัสสำคัญสองครั้งสำหรับการเข้าสู่ระบบแต่ละครั้ง - มีความคิดใดว่าเหตุใดและ / หรือวิธีการเข้าสู่ระบบครั้งเดียวหรือไม่
Guss

ทำไมนั่นเป็นรายละเอียดในระดับที่ฉันไม่คุ้นเคย คุณสามารถหยุดมันได้หรือไม่โดยไม่ต้องใช้รหัสแหล่งที่มา
user9517 รองรับ GoFundMonica

2
หัวข้อนี้มีความเกี่ยวข้อง พบคีย์การจับคู่สองครั้ง: หนึ่งครั้งเพื่อตรวจสอบว่าคีย์จะยอมรับได้หรือไม่จากนั้นเป็นครั้งที่สองเพื่อตรวจสอบลายเซ็นที่ไคลเอ็นต์ระบุ
mpontillo

3

หากคนของคุณใช้งาน ssh-agent คุณสามารถใส่ไว้ใน. bashrc ของคุณ:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

เป็นความคิดที่ดีน่าเสียดายที่หนึ่งในเหตุผลที่ฉันต้องการเข้าสู่ระบบนี้คือฉันใช้คำสั่ง authorized_keys สำหรับผู้ใช้ที่ฉันต้องการบันทึกและพวกเขามักจะไม่ได้รับ bash shell
Guss

0

ลองเล่นรอบกับพารามิเตอร์ในLogLevel sshd_configสำหรับรายละเอียดอ้างอิง man sshd_config


0

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