खुले बंदरगाहों को "बंद" कैसे करें?


22

कुछ दिनों पहले मैंने अपने डेटा सुरक्षा के बारे में बहुत ध्यान रखना शुरू किया, मैं nmapअपने आप को अपने साथ रखता हूं:nmap 127.0.0.1

आश्चर्य, आश्चर्य, मेरे पास बहुत सारी सक्रिय सेवाएं हैं जो लोकलहोस्ट को सुनती हैं:

$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
53/tcp  open  domain
111/tcp open  rpcbind
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

केवल एक जिसे मैं उपयोग कर सकता हूं ssh(हालांकि यह शायद अच्छी तरह से कॉन्फ़िगर नहीं किया गया है, मैं इस मामले को दूसरे प्रश्न पर रखूंगा)।

जहां तक ​​मुझे पता है कि ippप्रोटोकॉल का उपयोग सीयूपीएस द्वारा मेरे प्रिंटरों को साझा करने के लिए किया जाता है, तो मुझे उन्हें साझा करने की आवश्यकता नहीं है, बस एक सर्वर से प्रिंटर का उपयोग करें।

यह netstat -lntupस्थानीय उपयोगकर्ता द्वारा लोकलहोस्ट एड्रेस को हटाकर आउटपुट है :

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      497/sshd        
tcp        0      0 0.0.0.0:17500           0.0.0.0:*               LISTEN      2217/dropbox    
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:50022           0.0.0.0:*               LISTEN      1021/rpc.statd  
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      906/rpcbind     
tcp6       0      0 :::22                   :::*                    LISTEN      497/sshd        
tcp6       0      0 :::42712                :::*                    LISTEN      1021/rpc.statd  
tcp6       0      0 :::445                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::139                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      906/rpcbind     
udp        0      0 0.0.0.0:51566           0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7362/dhclient   
udp        0      0 0.0.0.0:111             0.0.0.0:*                           906/rpcbind     
udp        0      0 192.168.1.255:137       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:137        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.255:138       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:138        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:655             0.0.0.0:*                           906/rpcbind     
udp        0      0 0.0.0.0:17500           0.0.0.0:*                           2217/dropbox    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:34805           0.0.0.0:*                           1021/rpc.statd  
udp6       0      0 :::40192                :::*                                1021/rpc.statd  
udp6       0      0 :::111                  :::*                                906/rpcbind     
udp6       0      0 :::655                  :::*                                906/rpcbind     
udp6       0      0 :::5353                 :::*                                615/avahi-daemon: r
udp6       0      0 :::42629                :::*                                615/avahi-daemon: r

मैं उन सेवाओं को कैसे कॉन्फ़िगर करता हूं ताकि वे केवल बाहरी दुनिया को सुनें जब मैं वास्तव में उनका उपयोग कर रहा हूं?


आप यह कैसे बताना चाहते हैं कि आप उनका उपयोग कर रहे हैं?
रिएक्टोर्मोंक

स्वयं सेवाओं को शुरू करना (उपयोगकर्ता विशेषाधिकारों और एक अभिभावक खोल के साथ)
RSFalcon7

2
सही है, भले ही आप लोकल सिस्टम से सिर्फ CUPS का उपयोग कर रहे हों, आप इसे केवल लोकलहोस्ट (127.0.0.1) पर 631 पोर्ट के लिए सुन सकते हैं। मशीन के पास वास्तविक आईपी का उपयोग करके मैंने नैम्प को फिर से चलाया है और न केवल 127.0.0.1।
SLM

1
चलाने के लिए एक बेहतर कमांड होगा netstat -lntup-l = सुनो -n = संख्या -t = tcp -u = udp -p = pid। दिखाता है कि आपके पास कौन-सी प्रक्रियाएँ चल रही हैं और वे किस पोर्ट को उजागर कर रहे हैं। 127.0.0.1 के लिए खुला कुछ भी इंटरनेट के लिए दुर्गम है।
मेंढकपृ fro

1
यदि आपको सांबा की आवश्यकता नहीं है, तो बस इसे अनइंस्टॉल करें। यदि आप करते हैं यह की जरूरत है, तो आप स्थानीय इंटरफेस (जैसे लिए सीमित कर सकते eth0में जोड़कर?) smb.confदो निर्देशों bind interfaces only = yesऔर interfaces = eth0
एलसर्नी

जवाबों:


26

अपना एक्सपोजर निर्धारित करें

अपने आउटपुट को netstatकमांड से लेना , जो बहुत सारी सेवाओं की तरह दिखता है, वास्तव में एक बहुत छोटी सूची है:

$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd

जमीन पर कब्जा हो रहा है

इस सूची को देखते हुए कई सेवाएं हैं जिन्हें मैं अकेला छोड़ दूंगा।

  • dhclient
    • डीएचसीपी सर्वर डेमन आपके आईपी पते को प्राप्त करने के लिए जिम्मेदार है, यह एक होना चाहिए।
  • ड्रॉपबॉक्स
    • जाहिर है ड्रॉपबॉक्स, होना चाहिए

इसे कम करना शुरू करें - सांबा को अक्षम करें

आप शायद सांबा के बल्ले को निष्क्रिय कर सकते हैं, यह उपरोक्त सेवाओं में से 2 के लिए है, nmbdऔर smbd। यह संदेहास्पद है कि आपको वास्तव में लैपटॉप पर चलने की आवश्यकता होगी, चाहे वह लोकलहोस्ट पर हो या आपके आईपी आपके नेटवर्क का सामना कर रहा हो।

यह जाँचने के लिए कि वे चल रहे हैं, आप निम्न कमांड का उपयोग कर सकते हैं status:

$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423

सेवाओं को बंद करना उन सभी फ्लक्स के साथ भ्रमित हो सकता है जो ऊपर की ओर, /etc/rc.d, व्यवसाय के साथ चल रहे हैं, इसलिए यह पता लगाना मुश्किल हो सकता है कि कौन सी सेवा किस तकनीक के तहत है। सांबा के लिए आप serviceकमांड का उपयोग कर सकते हैं :

$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting

अब वे बंद हैं:

$ status nmbd 
nmbd stop/waiting
$ status smbd 
smbd stop/waiting

उन्हें बंद रखना ... स्थायी रूप से

उन्हें बंद रहने के लिए मैं इस उपकरण का उपयोग कर रहा हूं sysv-rc-conf, कंसोल से सेवाओं का प्रबंधन करने के लिए, यह सबसे बेहतर काम करता है। यह आपको यह जांचने की अनुमति देता है कि आप कौन सी सेवाओं को चलाना चाहते हैं और किस रनवे में उन्हें शुरू / बंद किया जाना चाहिए:

$ sudo apt-get install sysv-rc-conf

   ssv-rc-conf का एस.एस.

बाकी की आवश्यकता को अक्षम करना

तो अब सांबा का साथ हम निम्नलिखित के साथ छोड़ रहे हैं:

  • avahi-डेमॉन
    • ज़र्कोनफ़ (प्लग-एन-प्ले) का हिस्सा, इसे बंद करें
  • rpcbind
    • NFS के लिए आवश्यक - इसे बंद करें
  • rpc.statd
    • NFS के लिए आवश्यक - इसे बंद करें

शेष 3 के लिए आप वही काम कर सकते हैं जो हमने सांबा के लिए किया था और उन्हें भी बंद कर दिया।

कप?

CUPS को बंद करने के लिए, जिसकी आपको वास्तव में ज़रूरत नहीं है, आप सेवा को बंद करने के उसी नृत्य का अनुसरण कर सकते हैं और फिर इसे शुरू करने से अक्षम कर सकते हैं। प्रिंट करने में सक्षम होने के लिए आपको अपने सिस्टम पर प्रत्येक प्रिंटर को अलग-अलग सेटअप करना होगा। आप system-config-printerGUI के माध्यम से ऐसा कर सकते हैं ।

मांग पर ये सेवाएं दे रहे हैं?

यह वास्तव में आपके प्रश्न का दिल है, लेकिन इन सेवाओं को "स्मार्ट" बनाने के लिए वास्तव में एक चांदी की गोली का समाधान नहीं है, ताकि वे हर समय के बजाय उपयोग किए जाने पर चलें।

# 1 - सिस्टमड बनाम अपस्टार्ट

इसका एक हिस्सा सिस्टमड और अपस्टार्ट के बीच वर्तमान विभाजन है । यहाँ 2 प्रतिस्पर्धी तकनीकों का अच्छा अवलोकन है

दोनों प्रौद्योगिकियां कुछ अलग करने की कोशिश कर रही हैं, IMO, उनके फीचर सेट को देखते हुए, सिस्टमड सर्वरों की ओर अधिक सक्षम लगता है, जबकि ऊपर की ओर डेस्कटॉप रोल की ओर अधिक गियर लगता है। समय के साथ यह अपने आप काम करेगा, IMO, और दोनों सेवाएं स्थिर और समृद्ध होंगी।

आखिरकार दोनों सेवाएं उन सभी सेवाओं के लिए पूरे बोर्ड में मांग शुरू करने और रोकने की पेशकश करेंगी जो वे प्रबंधित करते हैं। उदाहरण के लिए StopWhenUnneeded=yesपहले से ही मौजूद सुविधाएँ systemd, इसलिए यह केवल समय की बात है जब तक कि ये क्षमताएं फ़्लेशेड नहीं हो जातीं।

# 2 - सेवा का समर्थन

कुछ सेवाओं का समर्थन नहीं किया जा रहा है / यदि बिल्कुल भी शुरू नहीं हुआ है। sshdऑन-डिमांड के रूप में चलाने के लिए ऐसी सेवाएं बहुत कम समझ में आती हैं, खासकर यदि वे भारी उपयोग की जाती हैं। अपाचे जैसी कुछ सेवाएं भी स्वयं को प्रबंधित करने वाले अपने स्वयं के श्रोताओं को कम या ज्यादा स्पिन करने के लिए अपने भीतर तंत्र प्रदान करती हैं। इसलिए यह स्पष्ट नहीं है कि इन प्रकार की सेवाओं के साथ कैसे ऑन-डिमांड प्रदान की जा रही है systemdया upstartएकीकृत करने जा रहे हैं।

क्या यह वास्तव में आवश्यक है?

आप दोनों पक्षों से यह सुनेंगे कि यह ओवरकिल है या आपको केवल एक न्यूनतम दृष्टिकोण स्थापित करना चाहिए जो आपको बिल्कुल जरूरी है, लेकिन यह वास्तव में एक व्यक्तिगत विकल्प है। यह समझना कि ये सेवाएँ हैं और वे जो करते हैं वह वास्तव में महत्वपूर्ण है। दिन के अंत में एक कंप्यूटर एक उपकरण है, और एक यूनिक्स प्रणाली का उपयोग करके आप पहले से ही कह रहे हैं कि आप पर्दे के पीछे झांकने को तैयार हैं और समझें कि आपके कंप्यूटर में क्या है।

मैं कहूंगा कि इस प्रकार की प्रश्नावली बिल्कुल मन का फ्रेम है, जिसे कंप्यूटर और यूनिक्स से सामान्य रूप से निपटने के लिए प्रयास करना चाहिए।

संदर्भ


2
@ RSFalcon7 - आपका स्वागत है! सवाल के लिए धन्यवाद!
स्लम

12

127.0.0.1 "बाहर की दुनिया" नहीं है, यह घर के अंदर देख रही है।

अपने फ़ायरवॉल कॉन्फ़िगरेशन (आज लिनक्स में iptables) की जाँच करें, उनमें से अधिकांश को ouside से सुलभ नहीं होना चाहिए।

उन सेवाओं को न चलाएं जिनकी आपको आवश्यकता नहीं है। सभी आवश्यक सॉफ़्टवेयर की स्थापना रद्द करें।

पासवर्ड मजबूत करने के लिए बदलें । सिस्टम के अपने उपयोग की जांच करें, यादृच्छिक पर किसी भी दिलचस्प वेबसाइट का पीछा न करें। ब्राउज़र की एंटी-फ़िशिंग, एंटी-स्क्रिप्ट, आदि कॉन्फ़िगरेशन की जाँच करें। आप SSH और su / sudo के उपयोग को संशोधित करें।

लेकिन सबसे अधिक, अत्यधिक व्यामोह प्रतिरूप है। प्रौद्योगिकी की चमक से मत फंसना


3
मैं "आप की जरूरत नहीं है सेवाओं को चलाने नहीं" के साथ सहमत हूँ। लेकिन "गंभीरता से सभी आवश्यक सॉफ़्टवेयर की स्थापना रद्द करें।", गंभीरता से? इसके खिलाफ क्या मदद करेगा?
हॉके लैजिंग

6
@HaLLaging, जैसा कि कहा जाता है, "अप्रयुक्त कपड़ों के ढेर में चूहों का घोंसला"। सॉफ़्टवेयर के किसी भी टुकड़े में एक भेद्यता हो सकती है जिसका शोषण किया जा सकता है। यदि कार्यक्रम नहीं है, तो वह जोखिम मौजूद नहीं है। यदि इसका उपयोग नहीं किया जाता है, तो लागत नगण्य है। इसके अलावा, एक सरल प्रणाली को देखरेख करना और चुस्त रखना आसान है।
वॉनब्रांड

यह याद दिलाने के लिए धन्यवाद कि 127.0.0.1 बाहरी वर्लड नहीं है । मैं पूरी तरह से उन सेवाओं को नहीं चलाने के लिए सदस्यता लेता हूं जिनकी मुझे आवश्यकता नहीं है , लेकिन स्थापना रद्द करना थोड़ा अधिक है, अगर वे यहां हैं तो वे कुछ समय में उपयोगी थे
RSFalcon7

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

3

हालांकि आप व्यक्तिगत सेवाओं को 'बंद' कर सकते हैं - शायद फायरवॉल को सेटअप करना आसान हो सकता है। लगभग सभी आम डिस्ट्रो के (उबंटू, डेबियन, सेंटोस, आदि) में निर्मित iptables के लिए समर्थन है।

आरंभ करने के लिए एक सरल नियम-सेट: (आप इन्हें केवल कमांड-प्रॉम्प्ट पर टाइप कर सकते हैं; उन्हें स्थायी रूप से अपनी स्टार्टअप स्क्रिप्ट में जोड़ने के लिए या हमें बताएं कि आप किस डिस्ट्रो का उपयोग कर रहे हैं। उदाहरण के लिए Centos: system-config -firewall iptables नियमों को कॉन्फ़िगर करने के लिए एक अच्छा यूआई है)

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP

मूल रूप से - ssh आवक की अनुमति दें; बाकी सब कुछ छोड़ दो।

आपकी INPUT श्रृंखला अब इस तरह दिखती है:

  • यदि कोई पैकेट मेरे कंप्यूटर में 'ssh' के लिए आ रहा है - तो उसे अनुमति दें
  • यदि एक पैकेट पिछले नियमों में से किसी से मेल नहीं खाता है - बस इसे फेंक दें।

फिर बाद की तारीख में, आप 'सांबा' (विंडोज़ फाइल शेयरिंग) की अनुमति देना चाहते हैं: आप दौड़ सकते हैं

iptables -I INPUT-p tcp --dport 465 -j ACCEPT

-Iपहले जोड़ता है और सूची में नियम; -Aएक नियम जोड़ता है। तो आपकी श्रृंखला अब इस तरह दिखती है:

  • अगर एक पैकेट मेरे कंप्यूटर में 'सांबा' के लिए आ रहा है - तो अनुमति दें
  • यदि कोई पैकेट मेरे कंप्यूटर में 'ssh' के लिए आ रहा है - तो उसे अनुमति दें
  • यदि एक पैकेट पिछले नियमों में से किसी से मेल नहीं खाता है - बस इसे फेंक दें।

INPUTश्रृंखला अपने सिस्टम के लिए किस्मत में पैकेट को दर्शाता है। अन्य श्रृंखलाएं OUTPUTआपके कंप्यूटर से पैकेट के लिए हैं, इंटरनेट पर जा रही हैं और FORWARDआपके कंप्यूटर के माध्यम से रूट किए गए पैकेट के लिए (यानी ऐसे पैकेट हैं जो आपके कंप्यूटर को स्थानांतरित करते हैं, जैसे हवाई अड्डे के पारगमन क्षेत्र - सामान जो कि INPUTइसलिए नहीं है क्योंकि यह आपके कंप्यूटर में प्रवेश नहीं कर रहा है )।

एक बिदाई नोट के रूप में: 127.0.0.1 nmap'ing बहुत उपयोगी नहीं है; बहुत सारी सेवाएं केवल 127.0.0.1 से सुलभ हैं और कोई अन्य पता नहीं है। यदि आपके पास एक और मशीन नहीं है तो आप इससे नैप चला सकते हैं - गिब्सन रिसर्च 'शील्ड्स यूपी का उपयोग करके देखें! ( https://www.grc.com/shieldsup ) - जो नि: शुल्क, ऑनलाइन नैम-लाइट है। या अपने आईपी / ईमेल के साथ एक टिप्पणी जोड़ें और मैं आपको नमस्कार करूँगा :)

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