ポートを閉じる際に質問があります。奇妙なことがあると思います。
executeを使用する場合
nmap --top-ports 10 192.168.1.1
23/TCPポートが開いていることを示しています。
しかし、私が実行すると
nmap --top-ports 10 localhost
23/tcpポートが閉じていることを示しています。
それらのどれが本当ですか?システム全体でこのポートを閉じたいのですが、どうすればよいですか?
承認された回答:
Nmapは優れたポートスキャナーですが、より信頼できるものが必要な場合もあります。 netstat
を使用して、どのプロセスがどのポートを開いているかをカーネルに問い合わせることができます。 ユーティリティ:
[email protected]:~$ sudo netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1004/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 380/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 822/cupsd tcp6 0 0 :::22 :::* LISTEN 380/sshd tcp6 0 0 ::1:631 :::* LISTEN 822/cupsd
私が与えたオプションは次のとおりです:
-
-t
TCPのみ -
-l </ code> リスニングポートのみ
-
-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は少し異なります。代わりに、sockstat(1)を使用してプロセス情報を取得する必要があります。
プロセスIDとプログラム名を取得したら、ポートを閉じたい場合は、プロセスを見つけて強制終了することができます。よりきめ細かい制御のために、ファイアウォール(Linuxではiptables)を使用して、特定のアドレスのみへのアクセスを制限できます。サービスの起動を無効にする必要がある場合があります。 LinuxでPIDが「-」の場合、それはおそらくカーネルプロセス(これはたとえばNFSで一般的です)なので、それが何であるかを見つけて頑張ってください。
注:ネットワークの状態やファイアウォールに邪魔されていないため、「信頼できる」と言いました。コンピューターを信頼するなら、それは素晴らしいことです。ただし、ハッキングされた疑いがある場合は、コンピュータ上のツールを信頼できない可能性があります。標準のユーティリティ(場合によってはシステムコール)を特定のプロセスまたはポートを非表示にするユーティリティ(ルートキット)に置き換えることは、攻撃者の標準的な方法です。この時点での最善の策は、ディスクのフォレンジックコピーを作成し、バックアップから復元することです。次に、コピーを使用して、彼らがどのように侵入したかを判断し、それを閉じます。
関連:LinuxまたはMacでAVR Ravenをプログラムする方法は?