一部のLinuxソフトウェアは、着信接続をリッスンすることで機能します。簡単な例は、誰かがWebサイトに移動するたびにユーザー要求を処理するWebサーバーです。 Linuxの管理者またはユーザーは、システムのどのポートがインターネットに接続されているかを常に把握しておくことが重要です。そうしないと、コンピュータへの外部接続が行われていることに気付かず、帯域幅とリソースを消費し、潜在的なセキュリティホールになる可能性があります。
このガイドでは、UbuntuLinuxで開いているポートを確認する方法を説明します。これは、いくつかの異なるコマンドラインユーティリティを使用して実行できます。これについては、後で詳しく説明します。また、Ubuntuのufwファイアウォールを使用してポートが安全であることを確認する方法についても説明します。それで、あなたはあなたのシステムのどのポートが開いているか知っていますか?調べてみましょう。
このチュートリアルでは、次のことを学びます。
-
ss
で開いているポートを確認する方法 コマンド - Nmapユーティリティを使用して開いているポートを確認する方法
- ufwファイアウォールで許可されているポートを確認して追加する方法
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
システム | Ubuntu Linux |
ソフトウェア | ss、Nmap、ufwファイアウォール |
その他 | rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 |
コンベンション | # –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
ssコマンドで開いているポートを確認します
ssコマンドを使用して、接続をリッスンしているポートを表示できます。また、接続を受け入れているネットワークも表示されます。
-ltn
の使用をお勧めします 簡潔で関連性のある出力を表示するコマンドのオプション。テストシステムの例を見てみましょう。
$ sudo ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* LISTEN 0 5 127.0.0.1:631 0.0.0.0:* LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* LISTEN 0 151 127.0.0.1:3306 0.0.0.0:* LISTEN 0 5 [::1]:631 [::]:* LISTEN 0 511 *:80 *:*
サーバーがポート80、3306、および33060で接続をリッスンしていることがわかります。これらは、HTTPおよびMySQLに関連付けられているよく知られたポートです。
ss
も表示されます 出力は、ポート53と631がリスニング状態にあることを示しています。これらは、それぞれDNSおよびインターネット印刷プロトコル用です。これらはデフォルトで有効になっているため、自分のシステムでリッスンしていることがわかります。 DNSポートは実際には開いていませんが、システムにインストールされているアプリケーションに名前解決を提供します。
これらのリスニングポートが属するプロセスを確認するには、-p
を含めます。 コマンドのオプション。
$ sudo ss -ltnp State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=530,fd=13)) LISTEN 0 5 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=572,fd=7)) LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users:(("mysqld",pid=2320,fd=32)) LISTEN 0 151 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=2320,fd=34)) LISTEN 0 5 [::1]:631 [::]:* users:(("cupsd",pid=572,fd=6)) LISTEN 0 511 *:80 *:* users:(("apache2",pid=2728,fd=4),("apache2",pid=2727,fd=4),("apache2",pid=2725,fd=4))
これで、systemd-resolve、cupsd、mysqld、およびapache2が、着信接続をリッスンするためにポートを利用しているサービスであることがわかります。
nmapで開いているポートを確認します
Nmapは、リモートホストで開いているポートをチェックするために使用できるネットワーク偵察ツールです。ただし、これを使用して独自のシステムをチェックし、開いているポートのクイックリストを取得することもできます。
通常、NmapがスキャンするリモートIPアドレスを指定します。代わりに、localhost
を指定して、独自のシステムをスキャンできます。 コマンドで。
$ sudo nmap localhost Starting Nmap 7.80 ( https://nmap.org ) at 2021-03-12 20:43 EST Nmap scan report for localhost (127.0.0.1) Host is up (0.000012s latency). Not shown: 997 closed ports PORT STATE SERVICE 80/tcp open http 631/tcp open ipp 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
ufwファイアウォールで開いているポートを確認する
覚えておくべき大きな注意点があります。 ss
を使用する場合 またはnmap localhost
ローカルシステム上のコマンドでは、ファイアウォールをバイパスしています。実際、これらのコマンドはリスニング状態のポートを表示しますが、ファイアウォールが接続を拒否している可能性があるため、必ずしもポートがインターネットに開いていることを意味するわけではありません。
次のコマンドでufwファイアウォールのステータスを確認します。
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip
出力から、ufwが着信接続を拒否していることがわかります。ポート80と3306が例外として追加されていないため、ss
にもかかわらず、HTTPとMySQLは着信接続を受信できません。 およびnmap
リスニング状態にあることを報告します。
次のコマンドを使用して、これらのポートの例外を追加しましょう。
$ sudo ufw allow 80/tcp Rule added Rule added (v6) $ sudo ufw allow 3306/tcp Rule added Rule added (v6)
ufwのステータスを再度確認して、ポートが開いていることを確認できます。
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 80/tcp ALLOW IN Anywhere 3306/tcp ALLOW IN Anywhere 80/tcp (v6) ALLOW IN Anywhere (v6) 3306/tcp (v6) ALLOW IN Anywhere (v6)
これで、2つのポートがファイアウォールで開いており、リスニング状態になっています。コマンドの例など、ufwファイアウォールの詳細については、Linuxでのufwファイアウォールのインストールと使用に関するガイドを確認してください。
まとめ
このガイドでは、ss
の使用方法を説明しました コマンド、およびnmap
UbuntuLinuxでリスニングポートをチェックするユーティリティ。また、ufwファイアウォールをチェックして、開いているポートを確認し、必要に応じて例外を追加する方法も学びました。
ポートがリスニング状態にあり、ファイアウォールの通過が許可されている場合、ポートは着信接続に対して開いている必要があります。ただし、これは、ルーターや、コンピューターとインターネットの間にある他のネットワークデバイスにも依存します。これは、着信接続をブロックする独自のルールがある場合があるためです。