開いているポートを「閉じる」方法


22

数日前、私は自分のデータセキュリティについて多くのことを気にし始めましたnmapnmap 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(それはおそらくうまく構成されていませんが、私は別の質問に、この問題を維持します)。

ippCUPSがプリンターを共有するためにプロトコルを使用していることを知っている限り、サーバーからプリンターにアクセスするだけで、共有する必要はありません。

これは、netstat -lntupローカルユーザーアドレスを削除したrootユーザーの出力です。

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だけでなく、マシンが持っている実際のIPを使用してnmapを再実行します。
slm

1
実行するより良いコマンドはnetstat -lntup-l = listen -n = number -t = tcp -u = udp -p = pidです。実行中のプロセスとそれらが公開しているポートを表示します。127.0.0.1に開かれているものはすべて、インターネットにアクセスできません。
frogstarr78

1
Sambaが必要ない場合は、単にアンインストールします。あなたがいる場合、それを必要とする、あなたは、ローカルインタフェース(例えばそれを制限することができますeth0に追加することで?)smb.conf2つのディレクティブbind interfaces only = yesinterfaces = eth0
LSerni

回答:


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
    • IPアドレスを取得するDHCPサーバーデーモンは、これを持っている必要があります。
  • ドロップボックス
    • 明らかにDropbox、持っている必要があります

削減を開始-Sambaを無効にする

右のバットを無効サンバオフあなたはおそらく、それは上記サービスの2を占め、できるnmbdsmbd。localhostでも、ネットワークに面したIPでも、ラップトップで実行する必要があるのは疑問です。

それらが実行されていることを確認するには、次のコマンドを使用できますstatus

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

サービスをオフにすると、upstart、/ etc / rc.d、businessで行われているすべての流動性と混同される可能性があるため、どのサービスがどのテクノロジーの下にあるのかを把握するのは困難です。Sambaの場合、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

   sysv-rc-confのss

不要なものの残りを無効にする

これでSambaが終了し、次のようになりました。

  • アバヒデーモン
    • zeroconfの一部(プラグアンドプレイ)、オフにします
  • rpcbind
    • NFSに必要-オフにする
  • rpc.statd
    • NFSに必要-オフにする

残りの3つについては、Sambaがそれらをオフにするために行ったのと同じことを行うことができます。

CUPS?

CUPSをオフにするには、これは実際には必要ありませんが、サービスをオフにしてから起動を無効にするという同じダンスに従うことができます。印刷できるようにするには、システムで各プリンターを個別にセットアップする必要があります。system-config-printerGUIを使用してこれを行うことができます。

これらのサービスをオンデマンドで作成しますか?

これは本当にあなたの質問の中心ですが、これらのサービスを「スマート」にして、常に使用するのではなく、使用中に実行するようにするための特効薬のソリューションはありません。

#1-systemdとupstart

その一部は、systemdupstartの間の現在の分割です。2つの競合するテクノロジーの概要については、こちらをご覧ください

どちらのテクノロジーもわずかに異なることを行おうとしていますが、IMOの機能セットを考えると、systemdはサーバーに向いているようですが、upstartはデスクトップロールに向いているようです。時間が経つにつれて、これはうまくいき、IMO、および両方のサービスが安定し、機能が豊富になります。

最終的に、両方のサービスは、管理するすべてのサービスについて、オンデマンドで開始および停止します。たとえば、StopWhenUnneeded=yesすでに存在するような機能はsystemd、これらの機能が具体化されるまでの時間の問題です。

#2-サービスサポート

一部のサービスは、停止/開始を非常にうまくサポートしていません。などのサービスはsshd、特に頻繁に使用される場合、オンデマンドとして実行するのはほとんど意味がないようです。また、Apacheなどの一部のサービスは、自身を管理する独自のリスナーを多かれ少なかれ起動するメカニズムを提供します。したがって、これらのタイプのサービスによってどのようにオンデマンドが提供されるのsystemdか、またはupstart統合されるのかは不明です。

これは本当に必要ですか?

これはやり過ぎだとか、絶対に必要なものだけをインストールするミニマリストのアプローチをとるべきだと、両側から聞きますが、それは本当に個人的な選択です。これらのサービスが存在し、それらが何をするかを理解することが本当に重要です。結局のところ、コンピューターはツールであり、Unixシステムを使用することで、カーテンの向こう側を覗いてコンピューターを動かす要因を理解することを望んでいると既に言っています。

この種の質問は、コンピュータやUnix全般を扱う際に心がけなければならない心構えだと思います。

参照資料


2
@ RSFalcon7-どういたしまして!質問ありがとう!
slm

12

127.0.0.1は「外の世界」ではなく、家の中を見回しています。

ファイアウォールの構成(今日のLinuxのiptables)を確認してください。ほとんどの場合、外部からアクセスできないはずです。

必要のないサービスを実行しないでください。不要なソフトウェアをすべてアンインストールします。

パスワードをより強力に変更します。システムの使用状況を確認し、ランダムに興味深いWebサイトを追いかけないでください。ブラウザのアンチフィッシング、アンチスクリプトなどの設定を確認してください。SSHおよびsu / sudoの使用法を修正します。

しかし何よりも、過度のパラノイアは逆効果です。テクノロジーきらめきに閉じ込められないでください。


3
「必要のないサービスを実行しない」に同意します。しかし、「不要なソフトウェアをすべてアンインストールします。」、真剣に?それは何に役立ちますか?
ハウケレイジング

6
@HaukeLagingは、sayingにあるように、「マウスは未使用の衣類の山に巣を作ります」。どのソフトウェアにも、悪用される可能性のある脆弱性が存在する可能性があります。プログラムが存在しない場合、そのリスクは存在しません。使用しない場合、コストは無視できます。それに加えて、よりシンプルなシステムは、監視と整頓を容易にします。
フォンブランド

127.0.0.1は外部の心配ではないことを思い出していただきありがとうございます。必要のないサービスを実行しないように完全にサブスクライブしますが、アンインストールは少しやり過ぎです。それらがここにある場合、それらは
いつか

2
@ RSFalcon7、それら有用だった場合(または他の誰かにとって有用であり、結局ディストリビューション内にある場合)は妥協しません。使用しない場合は、チャックしてください。ディスク使用量の削減、更新の削減、全体的なリスクの低減。後で必要な場合は、再インストールしてください。
フォンブランド

3

個々のサービスを「シャット」できますが、おそらくファイアウォールをセットアップする方が簡単かもしれません。ほぼすべての一般的なディストリビューション(Ubuntu、Debian、Centosなど)は、組み込みのiptablesをサポートしています。

開始するための簡単なルールセット:(コマンドプロンプトでこれらを入力するだけで、それらを永続化してスタートアップスクリプトに追加するか、使用しているディストリビューションを教えてください。たとえば、Centosではsystem-config -ファイアウォールは、iptablesルールを設定するための優れたUIです)

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

基本的に-sshインバウンドを許可します。他のすべてをドロップします。

INPUTチェーンは次のようになります。

  • 「ssh」のためにパケットが私のコンピューターに着信している場合-許可する
  • パケットが以前のルールのいずれにも一致しなかった場合は、破棄してください。

その後、後日、「samba」(windowsファイル共有)を許可したいとします。

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

-Iリストの先頭に追加してルールを設定します。-Aルールを追加します。したがって、チェーンは次のようになります。

  • 「samba」のためにパケットが私のコンピューターに入ってくる場合-それを許可する
  • 「ssh」のためにパケットが私のコンピューターに着信している場合-許可する
  • パケットが以前のルールのいずれにも一致しなかった場合は、破棄してください。

INPUTチェーンは、あなたのシステム宛てのパケットを指します。その他のチェーンはOUTPUT、コンピューターからのパケット、インターネットへFORWARDのパケット、およびコンピューターを経由するパケット(つまり、空港の通過エリアのようにコンピューターを「通過」するパケット- INPUTコンピューターに入っていないからではないもの)です。 )。

別れのメモとして:127.0.0.1のnmap'ingはあまり役に立ちません。多くのサービスは127.0.0.1からのみアクセス可能で、他のアドレスからはアクセスできません。別のマシンがない場合は、nmapを実行できます-Gibson ResearchのShields UPを使用してみてください!(https://www.grc.com/shieldsup)-これは無料のオンラインnmap-liteです。または、IP /電子メールにコメントを追加して、nmapします:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.