Linuxでポートを閉じる方法は?

Linuxでポートを閉じる方法は?

ポートを閉じることについていくつかの質問がありますが、何か奇妙なことが起こったようです。

使用して実行するとき

nmap --top-ports 10 192.168.1.1

これは、ポート23 / TCPが開いていることを示します。

しかし、私が実行するとき

nmap --top-ports 10 localhost

ポート 23/tcp が閉じていることを示します。

次のうちの事実は何ですか?システム全体でこのポートを閉じたいです。どうすればいいですか?

ベストアンサー1

Nmapは素晴らしいポートスキャナーですが、時にはより権威のあるものが欲しい場合もあります。このユーティリティを使用して、どのプロセスでどのポートが開いているかをカーネルに尋ねることができますnetstat

My@myhost:~$ sudo netstat -tlnp
アクティブなインターネット接続(サーバーのみ)
Proto Recv-Q Send-Qローカルアドレス外部アドレスステータスPID /プログラム名
tcp 0 0 127.0.0.1:53 0.0.0.0:* リスニング 1004/dnsmasq    
tcp 0 0 0.0.0.0:22 0.0.0.0:* モニタ 380/sshd        
tcp 0 0 127.0.0.1:631 0.0.0.0:* リスニング 822/cupsd       
tcp6 0 0 :::22 :::* 380/sshd モニタリング        
tcp6 0 0 ::1:631 :::* 822/cupsdを聞く       

私が与えたオプションは次のとおりです。

  • -tTCPのみ
  • -lリスニングポートのみ
  • -nサービス名とホスト名を見つけずに数字のみを表示します。
  • -pプロセス情報の表示(root権限が必要)

sshdこの例では、すべてのインターフェイス(0.0.0.0)ポート22が受信されており、cupsdループバック(127.0.0.1)ポート631が受信されていることがわかります。出力にtelnetdローカルアドレスが表示されることがあります192.168.1.1:23。これは、ループバックアダプタの接続に応答しないことを意味します(応答できないなどtelnet 127.0.0.1)。

同様の情報を表示できる他のツール(例:lsofまたは/proc)がありますが、netstatが最も広く使用されています。 Windowsでも実行されますnetstat -anb()。 BSD netstatは少し異なります。ソックス統計(1)プロセス情報を得るために

プロセスIDとプログラム名がある場合は、プロセスを見つけてポートを閉じたいときにプロセスを終了できます。より詳細な制御のために、ファイアウォール(Linuxの場合はiptables)を使用して特定のアドレスにのみアクセスを制限できます。サービスの起動を無効にする必要があるかもしれません。 Linuxでは、PIDが「-」の場合はカーネルプロセスである可能性が高いので(たとえばNFSで一般的である)、それが何であるかを調べてください。

注:ネットワークの状態やファイアウォールのために邪魔にならないので、「権限あり」と言います。お使いのコンピュータを信頼すれば良いです。ただし、ハッキングされたと思われる場合は、コンピュータのツールを信頼できない可能性があります。攻撃者が標準ユーティリティ(時にはシステムコールまで)を特定のプロセスやポート(ルートキットとも呼ばれる)を隠すユーティリティに置き換えるのが標準的な方法です。この時点で最良の方法は、ディスクのフォレンジックコピーを作成してバックアップから復元し、そのコピーを使用してディスクがどのように入ったかを確認して終了することです。

おすすめ記事