ネットワークセキュリティを強化する方法をお探しですか? プロのようにLinuxポートスキャンを実行する方法を学んでみませんか?
このチュートリアルでは、最も人気のあるツールとテクニックのいくつかについて学び、ポートスキャンに関連する潜在的なリスクと見返りを予測します。
有望に聞こえますか? 今すぐネットワークを保護するためにポートスキャンを開始してください!
前提条件
このチュートリアルは、実践的なデモンストレーションになります。 フォローしたい場合は、Linuxシステムを使用していることを確認してください–このチュートリアルではUbuntu 20.04を使用していますが、最新のLinuxディストリビューションでも機能します。
Nmapを使用して開いているポートをスキャンする
ポートをスキャンする方法はさまざまですが、Nmapはネットワーク検出とセキュリティ監査のための優れたツールです。 Nmapを使用すると、パケットを送信して応答を分析することにより、コンピューターネットワーク上のホストとサービスを見つけることができます。
Nmapは無料で利用でき、Windows、Linux、およびOSXと互換性があります。
ポートスキャンを使用すると、サーバーまたはホストで開いているポートを調べることができます。これは、さまざまな理由で役立ちます。
- ホストで実行されているサービスを確認します。
- 脆弱性の発見
- システムを列挙します。
ただし、Nmapを利用する前に、まずマシンにNmapをインストールする必要があります。
1.を実行します aptアップデート 以下のコマンドを使用して、システムパッケージインデックスを更新します。
2.次に、以下を実行します aptインストール Nmapをインストールするコマンド。
3.以下のnmap–versionコマンドを実行して、マシンにインストールされているNmapのバージョンを確認します。
以下では、インストールされているNmapのバージョンは7.80であり、この記事の最新リリースです。
4.次に、次のnmapコマンドを実行して、ターゲットのホスト名またはIPアドレス(scanme.nmap.org)をスキャンします。 開始するには、最低限のオプションが必要です。
以下は、スキャンの出力の内訳です。
- ターゲットのIPv4アドレス– 45.33.32.156。
- ターゲットのIPv6アドレス(使用可能な場合)– 2600:3c01 :: f03c:91ff。
- 逆引きDNS名(使用可能な場合)。
また、出力で各ポートとそのステータスを確認できます。
- 開いた –ポートが開いていて、着信接続をリッスンしていることを示します。
- 閉まっている –ポートが閉じており、着信接続をリッスンしていないことを示します。
- フィルタリング– ポートがフィルタリングされていることを示し、Nmapはポートが開いているか閉じているかを判別できません。 Nmapはプローブをポートに送信しますが、応答を受け取りません。
特定のポートをスキャンする
Nmapはバックグラウンドで多くのことを実行して、各ポートのステータスを判別しようとします。 CLIオプションを追加してスキャンをさらにカスタマイズし、次のように制御を強化できます。 -p
オプション。 このオプションを使用すると、スキャンするポートを指定できます。
1.次のコマンドを実行して、ターゲットホスト名(scanme.nmap.org)のポート80をスキャンします。 このコマンドは、ターゲットホストのポート80が開いているか閉じているかを通知します。
nmap -p 80 scanme.nmap.org
以下では、ポート80が開いていることがわかります。 この状態は、Webサーバーがポート80で実行されていることを示しています。
2.次に、次のコマンドを実行して、GoogleのパブリックDNSサーバー(8.8.8.8および8.8.4.4)を使用して、ホスト名(scanme.nmap.org)のポート80をスキャンします。
–dns-serversオプションを使用すると、スキャンに使用するDNSサーバーを指定できます。 このオプションは、別のネットワーク上のホストをスキャンする場合に役立ちます。 -vフラグは、スキャンに関する詳細情報を提供します。
nmap --dns-servers -p 80 8.8.8.8,8.8.4.4 -v scanme.nmap.org
NmapがGooglePublicDNSサーバーを使用してホスト名を解決し、スキャンが成功したことを以下に示します。
3.最後に、以下のコマンドを実行して、手順1で行ったように、ホスト名(scanme.nmap.org)のポート80をスキャンします。 ただし、今回は、-dオプションを追加して、デバッグレベルを3に上げます。このオプションは、Nmapの問題のトラブルシューティングに役立ちます。
-dオプションは、引数として整数(0から9の間)を取ります。 数値が大きいほど、より多くのデバッグ出力が表示されます。
レベル9は、非常に冗長な出力用です。これは、Nmapで作業している開発者に役立ちます。
nmap -d 3 -p 80 scanme.nmap.org
スキャンポート Netcat(Ncat)の使用
Netcat(nc
)は、ネットワーク探索、セキュリティ監査、および侵入テストのためのコマンドラインツールです。 Netcatを使用して、単純なTCPおよびUDP接続と、より複雑なSOCKSおよびHTTPプロキシを作成できます。 ただし、このチュートリアルでは、Netcatを使用してリモートシステムの開いているポートをスキャンします。
1.以下を実行します nc 159.89.176.25のポート20から1000にデータ(-z)を送信せずに、開いているポートをスキャンするコマンド。 -vオプションは、スキャン中に何が起こっているかを確認できるように、Netcatに冗長であることを指示します。
nc -z -v 159.89.176.25 20-1000
ポートの範囲は、必要に応じて増減できます。 ただし、ポート20〜1000は、一般的に使用されるさまざまなポートをカバーします。
以下の出力は、開いているポートとその接続ステータスを示しています。
- 接続拒否 –対応するポートによって接続が拒否されたことを示します。これは、そのポートで実行されているサービスがないことが原因である可能性があります—ポートは閉じています。
- 成功しました! – 接続が成功したことを示します—ポートは開いています。
リモートシステムで開いているポート22(SSH)の他に、迷惑な可能性のある他の多くのメッセージも表示されます。 したがって、次の手順にジャンプして出力をフィルタリングします。
2.以下のgrepコマンドを実行して、159.89.176.25のポート20〜100をスキャンし、単語が成功した各スキャン結果から開いているポートのみを表示します。
2>&1の部分は、シェルにstderr(ファイル記述子2)をstdout(ファイル記述子1)にリダイレクトするように指示するため、エラーメッセージがある場合は出力に表示されます。
nc -z -v 159.89.176.25 20-100 2>&1 | grep succeeded
以下に示すように、ポート22のみが開いており、これにも成功したメッセージがあります。
3.最後に、手順2と同じコマンドを実行します。 ただし、今回は、以下に示すように、UDPポートをスキャンするために-uオプションを追加します。
nc -z -v -u 159.89.176.25 20-100 2>&1 | grep succeeded
UDPをスキャンする場合、スキャンにはTCPポートよりもはるかに長い時間がかかることに注意してください。
- TCPスキャンは、ターゲットホストとの接続の確立を試み、65,535個のポートすべてをスキャンして、開いているポートを確認します。
- UDPスキャンは接続の確立を試みませんが、UDPパケットを各ターゲットホストのポートに送信して、開いているポートを確認します。 UDPスキャンはTCPスキャンよりも低くなります。これは、パケットを送信してエラー処理を完了し、 3ウェイハンドシェイク。
リモートシステムでUDPサービスが実行されていないため、出力が空白になっていることがわかります。
Bashスクリプトを使用してポートが開いているかどうかをテストする
これまで、NetcatとNmapを使用してシステムで開いているポートをスキャンする方法を見てきました。 これらのツールは便利ですが、ポートスキャンのタスクを自動化する場合は信頼できません。
たとえば、1000台のホストで開いているポートをスキャンすることを計画しています。 その場合、手動でポートスキャンを行うのは面倒で、完了するまでに長い時間がかかります。 しかし、Linuxでポートスキャンタスクを自動化するにはどうすればよいでしょうか。 Bashスクリプトを書くことでうまくいきます。
ポートスキャンを自動化するBashスクリプトを作成するには:
1.お気に入りのテキストエディタで新しいファイルを開きます。 好きなようにファイルに名前を付けますが、ファイルは呼び出されます このチュートリアルのports.sh。
2.以下のコードをに追加します Ports.sh ファイルですが、必ずSERVERとPORTの値を独自のIPアドレスまたはホスト名とスキャンするポートに置き換えてください。
値を変更した後、変更を保存して、エディターを閉じます。
# Defines the server you want to scan.
SERVER=adamtheautomator.com
# Defines the port to scan.
PORT=443
# Runs the nmap command and assigns the output to the state variable.
# The grep command filters and displays the output of the nmap command
# with the lines containing the "open" keyword.
state=`nmap -p $PORT $SERVER | grep "$PORT" | grep open`
# Checks if the state variable is blank (port is closed).
if [ -z "$state" ]; then
# Displays a message if the connection fails.
echo "Connection to $SERVER on port $PORT has failed"
else
# Displays a message if the connection succeeded.
echo "Connection to $SERVER on port $PORT was successful"
# Exits the script with an exit code of 1
# to determine if the script was successful or not.
exit 1
fi # Ends the if statement
3.最後に、以下のbashコマンドを実行して、ports.shスクリプトを実行します。
すべてがうまくいけば、443ポートが開いているという次の出力が表示されます adamtheautomator.com。
結論
このチュートリアルでは、NetcatとNmapを備えたシステムで開いているポートをスキャンする方法を学びました。 これらのツールとは別に、ポートスキャンを自動化するBashスクリプトを作成したので、プレート上で他のタスクを実行できます。
この時点で、これらのツールを使用してシステムの開いているポートをスキャンし、ネットワークを安全に保つ方法をすでによく理解しています。 しかし、ポートスキャンタスクをさらに自動化するには、cronジョブを作成してBashスクリプトの実行をスケジュールしてみませんか?
The post ネットワーク管理者のための効果的なLinuxポートスキャン appeared first on Gamingsym Japan.