ポート管理とセキュリティ
サービス用の特定ポートを開閉し、ポートフォワーディングを実装するとともに、開放ポートに関連する一般的な攻撃手法を理解します。
「ポート管理とセキュリティ」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
ネットワークポートとは
サーバーを集合住宅にたとえてみましょう。各部屋には番号があり、訪問者はどの部屋に行くかを知る必要があります。ネットワークでは、この「部屋番号」にあたるものをポートと呼びます。
ネットワークポートは通信の終端です。サーバーに届いたネットワークトラフィックを、正しいサービスやアプリケーションへ振り分けるのに役立ちます。各ポートには0から65535までの一意の番号が割り当てられています。
一般的なポート番号
多くのサービスは、標準的でよく知られたポート番号を使用します。これらを知っておくと、サービスの特定やファイアウォールの設定に役立ちます。
- ポート22:リモートアクセス用のSSH(Secure Shell)で使用します。
- ポート80:標準的なWebトラフィック用のHTTP(Hypertext Transfer Protocol)で使用します。
- ポート443:暗号化されたWebトラフィック用のHTTPS(HTTP Secure)で使用します。
- ポート53:DNS(Domain Name System)による名前解決で使用します。
これは一部の例にすぎず、さまざまなアプリケーション用に数千ものポートがあります。
リッスン中のポートを確認する
新しいポートを開く前に、サーバー上ですでに有効になっているポートを確認しておくとよいでしょう。ssコマンド(socket statistics)は、ネットワークソケットを調べるための最新のツールです。
-ltnオプションを使うと、ホスト名を解決せず、リッスン中のTCPソケットを数値で表示できます。
ss -ltnUFWでポートを管理する
UFW(Uncomplicated Firewall)は、UbuntuなどのDebianベースのシステムで広く使われるファイアウォール管理ツールです。iptablesルールの設定を簡単にします。
トラフィックを許可または拒否するには、ポート番号とプロトコル(TCPまたはUDP)を指定します。変更後は、UFWを再読み込みするか、有効にすることを忘れないでください。
sudo ufw allow 80/tcp
sudo ufw deny 22
sudo ufw enablefirewalldでポートを管理する
CentOS、RHEL、Fedoraのシステムでは、firewalldがデフォルトのファイアウォール管理ユーティリティです。firewalldは「ゾーン」を使って、異なるネットワークインターフェースを管理します。
通常、インターネットに公開するサービスにはpublicゾーンを使い、そのゾーンにルールを追加してからfirewalldを再読み込みし、変更を適用します。
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=22/tcp --permanent
sudo firewall-cmd --reloadポート転送の紹介
ポート転送は、ネットワークトラフィックをあるポートから別のポートへ転送する技術です。同じマシン内で行うことも、あるマシンから別のマシンへ行うこともできます。
外部デバイスからプライベートネットワーク上のサービスにアクセスできるようにしたり、中継サーバーを経由してトラフィックを安全にトンネルしたりするためによく使われます。
SSHによるローカルポート転送
よく使われる方法の1つが、SSHを使ったローカルポート転送です。これにより、ローカルマシンからリモートサーバーへ、さらにそのリモートサーバーから別の対象ホストとポートへ(対象がリモートサーバー自身の場合もあります)安全なトンネルを作成できます。
データベースや内部Webアプリケーションなど、インターネットに直接公開されていないリモートのプライベートネットワーク上のサービスにアクセスする際に便利です。
SSHローカル転送のデモ
SSHのローカルポート転送は次のように使用できます。このコマンドは、SSH接続を介して、ローカルマシンの8080ポートからlocalhost(リモートサーバー自身)の80ポートへトラフィックを転送します。接続先はyour_server_ipです。
接続後、ローカルマシンのブラウザーでhttp://localhost:8080にアクセスすると、リモートWebサーバー(ポート80)を利用できます。
ssh -L 8080:localhost:80 user@your_server_ipポートセキュリティのベストプラクティス
ポートの管理は、サーバーセキュリティにとって重要です。主な対策は次のとおりです。
- 最小権限の原則:サービスの動作に絶対に必要なポートだけを開きます。
- 定期的な監査:ファイアウォールルールとリッスン中のポートを定期的に確認し、許可していないポートが開いていないことを確かめます。
- 強力なパスワード/鍵:SSHなどのサービスでは、必ず強力な認証を使用します。
- レート制限:ブルートフォース攻撃を防ぐため、SSHなど重要なポートへの接続試行回数を制限することを検討します。
クイックチェック:ポート管理
サーバーのポートを管理する際、優れたセキュリティ対策とされるものは次のうちどれでしょうか。
復習:ポートとセキュリティ
このレッスンでは、サーバーのサービスへトラフィックを振り分けるために不可欠なネットワークポートについて学びました。一般的なポート番号と、ssでリッスン中のポートを確認する方法も扱いました。
UFWとfirewalldを使ったファイアウォールルールの管理方法や、SSHのローカルポート転送の概念も理解できました。さらに、サーバーを安全に保つためのポートセキュリティのベストプラクティスも確認しました。
AI チューターと学ぶ Linux Server Deployment & SSH Mastery — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「ポート管理とセキュリティ」レッスンは無料ですか?
はい。「ポート管理とセキュリティ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「ポート管理とセキュリティ」で何を学びますか?
サービス用の特定ポートを開閉し、ポートフォワーディングを実装するとともに、開放ポートに関連する一般的な攻撃手法を理解します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ポート管理とセキュリティ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。