Açık portlar nasıl kapatılır?


22

Birkaç gün önce veri güvenliğimle ilgili çok fazla şey umursadım, sonunda nmapkendime:nmap 127.0.0.1

Sürpriz, sürpriz, bir çok aktif hizmetin localhost dinlemesini sağladım:

$ 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

Bunu yalnızca bir olabilir kullanmaktır ssh(muhtemelen iyi yapılandırılmış olmamasına rağmen, başka bir soru bu konuyu tutacak).

ippProtokolün yazıcılarımı paylaşmak için CUPS tarafından kullanıldığını bildiğim kadarıyla, onları paylaşmak zorunda değilim, yalnızca bir sunucudan yazıcılara erişin.

Bu, netstat -lntupyerel kullanıcı adreslerini kaldırarak, kök kullanıcı tarafından çıktısıdır :

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

Bu hizmetleri nasıl yapılandırabilirim ki, gerçekten dış dünyayı dinlerken sadece dış dünyayı dinlesinler?


Onlara kullandığını nasıl söylemek istersin?
Reactormonk

Hizmetleri kendim başlatmak (kullanıcı ayrıcalıkları ve ana kabukla birlikte)
RSFalcon7

2
Doğru, ayrıca sadece yerel sistemden CUPS kullanıyorsanız, yerel ana bilgisayardaki (127.0.0.1) yalnızca 631 numaralı bağlantı noktasını dinlemesini sağlayabilirsiniz. Makinenin sahip olduğu gerçek IP'yi kullanarak nmap'i tekrar çalıştırdım, sadece 127.0.0.1'i değil.
slm

1
Çalıştırılacak daha iyi bir komut netstat -lntup-l = listen -n = sayı -t = tcp -u = udp -p = pid olacaktır. Hangi süreçleri çalıştırdığınızı ve hangi portları açığa çıkardıklarını gösterir. 127.0.0.1'e açık olan herhangi bir şey internete erişilemez.
frogstarr78

1
Eğer yoksa değil Samba ihtiyaç basitçe kaldırın. Eğer varsa do gerek, yerel bir arayüz (örn bunu kısıtlayabilir eth0içinde ekleyerek?) smb.confİki direktif bind interfaces only = yesve interfaces = eth0.
LSerni

Yanıtlar:


26

Maruziyetinizi belirleyin

Çıktınızı netstatkomuttan almak, birçok hizmete benzeyen aslında çok kısa bir liste:

$ 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

Arazi düzenini almak

Bu listeye baktığımda, yalnız bırakacağım birkaç hizmet var.

  • dhclient
    • IP adresinizi almaktan sorumlu DHCP sunucusu arka plan programı olması gerekir.
  • dropbox
    • Açıkçası Dropbox, zorunda

Küçültmeye başla - Samba'yı devre dışı bırak

Muhtemelen hemen yarasa Samba'yı devre dışı bırakabilirsiniz, yukarıdaki hizmetlerden 2'sini oluşturur nmbdve smbd. Localhost'taki veya IP'nizin ağınıza dönük olup olmadığına bakılmaksızın, bir dizüstü bilgisayarda çalışan gerçekten ihtiyacınız olması şüpheli.

Çalıştıklarını kontrol etmek için aşağıdaki komutu kullanabilirsiniz status:

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

Hizmetleri kapatmak, başlangıçta, /etc/rc.d işinde tüm akı ile karıştırıcı olabilir, bu nedenle hangi hizmetin hangi teknolojinin altında olduğunu bulmak zor olabilir. Samba için şu servicekomutu kullanabilirsiniz :

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

Şimdi kapalılar:

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

Onları uzak tutmak ... kalıcı olarak

Uzak durmalarını sağlamak için bu aracı kullanıyorum sysv-rc-conf, hizmetleri bir konsoldan yönetmek için çoğundan daha iyi çalışıyor. Hangi servisleri çalıştırmak istediğinizi ve hangi çalışma seviyelerinde çalıştırmaları / durdurmaları gerektiğini kontrol etmenizi sağlar:

$ sudo apt-get install sysv-rc-conf

   sysv-rc-conf'ın ss

İhtiyaç duyulmayan şeyleri devre dışı bırakmak

Şimdi Samba kapandı, biz aşağıdakilerden vazgeçtik:

  • avahi-cin
    • zeroconf (plug-n-play) kısmı, kapat
  • rpcbind
    • NFS için gerekli - kapatmak
  • rpc.statd
    • NFS için gerekli - kapatmak

Kalan 3 kişi için Samba'nın da onları kapatması için yaptığımız şeyleri yapabilirsiniz.

CUPS?

Gerçekten de gerekmeyen CUPS’u kapatmak için, hizmeti kapatıp aynı zamanda başlatılmasını engelleyerek aynı dansı takip edebilirsiniz. Yazdırabilmek için, her yazıcıyı sisteminize ayrı ayrı kurmanız gerekir. Bunu system-config-printerGUI aracılığıyla yapabilirsiniz .

Bu hizmetleri talep üzerine mi yapıyorsunuz?

Bu gerçekten sorunuzun kalbidir, ancak bu hizmetleri "akıllı" kılmak için gümüş bir mermi çözümü yoktur, böylece her zaman değil, kullanılırken de çalışırlar.

# 1 - sisteme karşı başlatma

Bunun bir kısmı systemd ile starttart arasındaki mevcut bölünmedir . Burada rekabet eden 2 teknolojiye genel bir bakış var .

Her iki teknoloji de biraz farklı şeyler yapmaya çalışıyor, IMO, özellik kümeleri göz önüne alındığında, systemd sunuculara daha fazla, başlangıçta masaüstü rulolarına daha fazla odaklanmış gibi görünüyor. Zamanla bu işe yarayacak, IMO ve her iki hizmet de istikrarlı ve zengin özelliklere sahip olacak.

Sonunda, her iki hizmet de yönettiği tüm hizmetler için pano genelinde başlama ve durdurma talebinde bulunur. Örneğin gibi özellikler StopWhenUnneeded=yeszaten var systemd, bu yüzden bu yeteneklerin ortaya çıkması sadece bir zaman meselesi.

# 2 - servis desteği

Bazı servisler hiç bir şekilde durdurulmasını / başlatılmayı çok iyi desteklemiyor. Gibi hizmetler sshd, özellikle yoğun kullanılırlarsa, talep üzerine çalışmanın pek bir anlamı yoktur. Ayrıca Apache gibi bazı servisler, kendilerini yöneten kendi dinleyicilerinin az çok ya da daha azını döndürmeye yönelik mekanizmalar sağlar. Bu nedenle, talep üzerine bu tür hizmetler ile nasıl bir istek sağladıkları systemdveya nasıl upstartbütünleşecekleri açık değil .

Bu gerçekten gerekli mi?

Her iki taraftan da bunun aşırı derecede etkili olduğunu veya yalnızca kesinlikle ihtiyacınız olanı kurmak için minimalist bir yaklaşım izlemeniz gerektiğini duyarsınız, ancak bu gerçekten kişisel bir seçimdir. Bu hizmetlerin orada olduğunu ve ne yaptıklarının gerçekten önemli olduğunu anlamak. Günün sonunda bir bilgisayar bir araçtır ve bir Unix sistemi kullanarak zaten perdenin arkasına göz atmaya ve bilgisayarınızın neyin çalıştığını anlamaya istekli olduğunuzu söylüyorsunuz.

Bu tür bir sorgunun, genel olarak bilgisayarlarla ve Unix'le uğraşırken uğraşması gereken tam bir zihin çerçevesi olduğunu söyleyebilirim.

Referanslar


2
@ RSFalcon7 - Bir şey değil! Soru için teşekkürler!
slm

12

127.0.0.1 “dış dünya” değil, evin etrafına bakıyor.

Güvenlik duvarı yapılandırmanızı (bugün Linux'ta bulunan iptables) kontrol edin, çoğu ouside'den erişilebilir olmamalıdır.

İhtiyacınız olmayan hizmetleri çalıştırmayın. Gerekli olmayan tüm yazılımları kaldırın.

Daha güçlü olmak için şifreleri değiştirin . Sistemin kullanımınızı kontrol edin, rastgele herhangi bir ilginç web sitesini takip etmeyin. Tarayıcının kimlik avı koruması, komut dosyaları vb. Yapılandırmasını kontrol edin. SSH ve su / sudo kullanımınızı değiştirin.

Fakat hepsinden önemlisi, aşırı paranoya çok üretkendir. Teknolojinin parıltısı tarafından kapana kısılma .


3
"İhtiyacınız olmayan hizmetleri çalıştırma" ile aynı fikirdeyim. Ancak "Gerekli olmayan tüm yazılımı kaldırın.", Cidden? Bu neye karşı yardım edecek?
Hauke ​​Laging

6
@HaukeLaging, söylendiği gibi, "fareler kullanılmayan giysilerin yığınlarında yuva yapar". Herhangi bir yazılım parçasından yararlanılabilecek bir güvenlik açığı olabilir. Program orada değilse, bu risk mevcut değildir. Eğer kullanılmazsa, maliyet ihmal edilebilir. Ayrıca, daha basit bir sistemin denetlenmesi ve düzenli olması kolaydır.
von

127.0.0.1'in dış kaynaklı bir şey olmadığını hatırlatmak için teşekkürler . İhtiyacım olmayan hizmetleri çalıştırmamaya tamamen abone oluyorum , ancak kaldırma biraz fazla önemli, eğer
buradalarsa bir

2
Onlar eğer RSFalcon7 @, vardı kullanışlı (veya başkası için yararlıdır, bunlar sonuçta dağıtımında olduğu) hiçbir consecuence taşımaktadır. Kullanmazsan, mırıldan. Daha az disk kullanımı, daha az güncelleme, genel olarak daha az risk. Daha sonra gerekirse, yeniden yükleyin.
vonbrand

3

Bireysel servisleri 'kapatmanıza' rağmen, belki bir güvenlik duvarı kurmak daha kolay olabilir. Neredeyse tüm yaygın dağıtımlar (Ubuntu, Debian, Centos, vb) yerleşik iptables için destek var.

Başlamak için basit bir kural kümesi: (bunları komut isteminde yazabilirsiniz; onları kalıcı olarak başlangıç ​​komut dosyalarınıza eklemelerini sağlamak veya bize hangi dağıtımı kullandığınızı bildirmek için. Örneğin Centos'ta: system-config -firewall, iptables kurallarını yapılandırmak için iyi bir kullanıcı arayüzüdür)

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

Temelde - ssh gelen izin verir; her şeyi bırak.

GİRİŞ zinciriniz şimdi şuna benziyor:

  • Bilgisayarıma 'ssh' için bir paket geliyorsa - izin ver
  • Eğer bir paket önceki kuralların hiçbiriyle eşleşmediyse - sadece atın.

Sonra ileri bir tarihte 'samba'ya izin vermek istediğinizi söyleyin (windows dosya paylaşımı):

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

-IListeye prepends ve kural; -Abir kural ekler. Yani zinciriniz şuna benziyor:

  • Bilgisayarıma 'samba' için bir paket geliyorsa - izin ver
  • Bilgisayarıma 'ssh' için bir paket geliyorsa - izin ver
  • Eğer bir paket önceki kuralların hiçbiriyle eşleşmediyse - sadece atın.

INPUTZincir sistem için tahsis edilmiş paketler belirtmektedir. Diğer zincirler, OUTPUTbilgisayarınızdan gelen, internete giden ve FORWARDbilgisayarınızdan yönlendirilen paketler içindir (bu, bir havaalanının transit alanı gibi, bilgisayarınızı 'transit' eden paketlerdir - INPUTbilgisayarınıza girmediğinden değil) ).

Ayrıştırma notu olarak: 127.0.0.1 nmap'ing çok kullanışlı değildir; birçok hizmete yalnızca 127.0.0.1'den erişilebilir ve başka bir adres yoktur. Başka bir makineniz yoksa nmap'ı çalıştırabilirsiniz - Gibson Research 'Shields UP! ( https://www.grc.com/shieldsup ) - ki bu ücretsiz, çevrimiçi bir nmap-lite. Ya da IP / e-posta adresinize bir yorum ekleyin ve ben size nmap :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.