ポートの開放・閉鎖を行おう

サーバーソフトが通信を受け付ける際に、「ポート」が使われます。セキュリティを考慮して、ポートは必要最小限のものだけ開放することが必要です。今回は、ポートの開放・閉鎖の方法を紹介します。

 

■通信先を特定する「ポート」

■必要なポートだけ開ける

■コントロールパネルでポートの開閉を設定する

■細かな設定はiptablesで

 

 

■通信先を特定する「ポート」

一般的に、サーバーマシンの上では、多数のサーバーソフトを動作させます。そして、クライアントからサーバーに接続する際には、「ポート」を使って接続先のサーバーソフトを特定します。

ポートは接続先を表す16ビットの整数で、0~65535の番号です。大きく分けて、表1のように3つのグループに分けられています。また、主要なプロトコルで、表2のようなポート番号が使われています。

 

表1 ポート番号の大まかな分類

番号の範囲 分類 概要
0~1023 WELL KNOWN PORT NUMBERS HTTPやSMTPなどの主要なプロトコルで使われるポート番号
1024~49151 REGISTERED PORT NUMBERS 0~1023ほどではないものの、よく使われているポート番号
49152~65535 DYNAMIC AND/OR PRIVATE PORTS 自由に使ってよいポート番号

 

表2 主要なプロトコルで使われるポート番号

ポート番号 プロトコル
20 FTP(データ転送)
21 FTP(コントロール)
22 SSH
25 SMTP
53 DNS
80 HTTP
110 POP3
143 IMAP
443 HTTPS
587 Submission
1194 OpenVPN
1293 IPSec
3306 MySQL
5900 VNC

 

VPSでサーバーを運用する際に、ポート番号を必ずこの通りにしなければならないかというと、そうではありません。ただ、一般的ではないポート番号を使うと、設定を変える必要が出たりなど、管理が複雑になります。

また、多くの人に公開するサーバーでは、ポート番号を変えると、自分だけでなく、ユーザーにも不便を強いることになります。

例えば、Webサーバー(HTTP/HTTPS)のポート番号を、80/443から他のものに変えることもできます。しかしそうすると、ユーザーがWebページにアクセスする際に、「http://ドメイン名:ポート番号/~」のようにアドレスだけでなくポート番号も指定しなければならなくなり、不便になります。

基本的に、特別な事情がない限りは、表2の通りのポート番号を使うようにします。

 

 

■必要なポートだけ開ける

ポート番号ごとに、外からの通信を受け付けるかどうかを設定することができます。サーバーソフトで使うポートは、通信を受け付ける(=ポートを開放する)ことが必要です。

例えば、Webサーバー(Apacheなど)でWebサイトを運用する場合、HTTPの80番ポートは開放する必要があります。また、WebサイトをSSL化する場合、HTTPSの443番ポートも開放する必要があります。

一方、使わないポートは開放しないようにします。もし、OSや各種ソフトにセキュリティ的な不具合があって、特定のポートから不正に侵入できるようになっていたとすると、そのポートが開放されていた場合、侵入されてしまうことになります。

 

 

■コントロールパネルでポートの開閉を設定する

NTTPCのVPSクラウドでは、コントロールパネルの「セキュリティグループ」の設定を使って、ポートを開放するかどうかを設定することができます。

 

・セキュリティグループを開く

まず、次の手順でセキュリティグループを開きます。

 

①サービスコンパネにログインします。

②ダッシュボードで左端のメニューで「セキュリティグループ」をクリックし、セキュリティグループの一覧のページを開きます。

③インスタンス起動の際に設定したセキュリティグループが表示されますので、そのセキュリティグループを選択して、「編集」ボタンをクリックします(図1)。

 

図1 セキュリティグループの編集を始める

図1 セキュリティグループの編集を始める

 

・ルールの記述方法

ここまでで、現在使用中のセキュリティグループを設定する状態になります。次に「ルール」の欄に、開放するポートについての記述を追加します。

この欄には、1行につき1つの「ルール」を記述します。ルールによって、開放するポートの番号と、接続元のIPアドレス(の範囲)を指定します。一般的なサーバーソフトのポートを開放する場合は、ルールの記述方法は次のようになります。

 

リスト ルールの記述方法

tcp:開始ポート番号,終了ポート番号,ip4:接続元IPアドレス

 

「開始ポート番号」と「終了ポート番号」で、開放するポートの番号の範囲を指定します。1つのポートだけを開放する場合は、開始ポート番号と終了ポート番号を同じにします。

「接続元IPアドレス」は、「CIDR」(Classless Inter-Domain Routingの略)という形式で記述します。CIDRの考え方はやや複雑なので、ここでは「1つのIPアドレスからの接続だけ許可する」という場合と、「すべてのIPアドレスからの接続を許可する」という2つに絞ります。

「自分のパソコンからのみSSHへの接続を許可したい」といった場合に、1つのIPアドレスからの接続だけを許可する設定を使います。この場合は、「接続元IPアドレス」のところを、「IPアドレス/32」のように書きます。例えば、「123.45.67.89」からの接続だけ許可したい場合は、「接続元IPアドレス」を「123.45.67.89/32」と書きます。

一方、「Webサーバーを公開したい」というように、世界中のすべてのコンピュータからの接続を許可したいときには、「接続元IPアドレス」のところを、「0.0.0.0/32」と書きます。

 

・ルールの記述例

よくありそうな記述例として、次のようなパターンを考えてみます。

①SSH/HTTP/HTTPSだけ接続できるようにしたい。

②SSHには自分のパソコンからのみ接続を許可する。自分のパソコンのIPアドレスは123.45.67.89である。

③SSHはセキュリティ強化のためにポート番号を54321に変えている。

 

この場合、セキュリティグループの「ルール」の欄に、次のように記述します(図2)。そして、「更新」ボタンをクリックしてルールを保存します。

 

リスト ルールの記述例

tcp:54321,54321,ip4:123.45.67.89/32

tcp:80,80,ip4:0.0.0.0/0

tcp:443,443,ip4:0.0.0.0/0

 

図2 セキュリティグループの画面でルールを記述する

図2 セキュリティグループの画面でルールを記述する

 

・動作の確認

ルールの設定が終わったら、開放したポートを使う通信を行ってみて、正常に接続できることを確認します。特定のIPアドレスだけからの通信を許可するようにした場合は、そのIPアドレスから接続できることと、他のIPアドレスからの接続が拒否されることも確認します。

前述の例だと、以下の通信をテストしてみます。

 

①IPアドレスが123.45.67.89のパソコンなどから、SSH(ポート番号54321)に接続できることを確認

②①以外のIPアドレスのパソコンなどから、SSHに接続できないことを確認

③Webブラウザなどを使って、HTTPとHTTPSで接続できることを確認

 

 

■細かな設定はiptablesで

セキュリティグループを使えば、比較的簡単に開放するポートを指定することができます。ただ、セキュリティグループの設定だけだと動作が単純で、複雑な状況には対処できない場合があります。

例えば、中国からのアクセスを遮断したいとします。しかし、中国のIPアドレスの範囲は多岐にわたっていますので、セキュリティグループに記述するのは無理があります。

ポートの開閉についてより細かな設定を行いたい場合は、CentOSの「iptables」という機能を使うこともできます。iptablesでは、サーバーに入ってくる通信(input)だけでなく、サーバーから出ていく通信や(output)、そのサーバーを経由して他のサーバーに転送する通信(forward)について、細かなルールを指定することができます。

ただ、iptablesの設定は複雑なので、ここでは解説は省略します。iptablesをキーワードに検索すれば、多数の情報がヒットしますので、そちらをご参照ください。

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド