はじめに
サーバーのポートやファイアウォールに関する備忘録です。ポートを開放するまでに必要な知識をまとめました。環境はCentOSを想定していますが、違いは最後のコマンドのみです。
サーバー関連の予備知識
・CentOSではデフォルトでfirewalldが有効になっており、基本的にポートは塞がっているため、
サービスとして運用するには、アプリケーションとポートをつないであげる必要がある。
例えば、WebサーバーのApacheなどを設定し起動した後に、firewalldの設定を行いポート80番を開放しなければならない。(正確には80番でなくても良い)
・ネットワークの情報の基礎は__プロトコル、アドレス、ポート番号__から成り、コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号は__「どのような方法」で「どこ」の「何号室」に通信するのか__という意味になる。
・ポートは0〜65535まで存在するが、その中でも0〜1023までをウェルノウンポート番号(「予約されている番号」の意)という。代表的なポートをあげていく。
プロトコル名 | ポート番号 | 概要 |
---|---|---|
FTP | 20 | ファイル転送に利用。データ転送用。 |
SSH | 22 | ネットワークに接続された機器を遠隔操作する。 |
SMTP | 25 | 電子メールを送信するために利用。 |
DNS | 53 | IPアドレスとFQDNを紐付けて名前解決するために利用。 |
HTTP | 80 | Webサーバーとクライアント(ブラウザ)の通信に利用。 |
POP3 | 110 | メールサーバーからメールを受信するのに利用。 |
IMAP | 143 | メールサーバー上のメールを操作するのに利用。 POPとの違いは、端末にメールをダウンロードしない。 |
HTTPS | 443 | HTTPの通信間をSSL/TLSで暗号化し セキュアになったHTTP通信。 |
TCPプロトコル,UDPプロトコル
TCPとUDPはともにクライアントとサーバ間での通信チャネル(ポート)の提供、通信管理を行う、レイヤー4のプロトコルである。
TCP | UDP |
---|---|
コネクション型通信 | コネクションレス型通信 |
転送速度が遅い | 転送速度が速い |
信頼性が高い | 信頼生が低い |
TCPプロトコル
・送ったデータが相手に届いたか、その都度確認しながら通信するやり方。
・コネクション型を採用した上位プロトコル(第4層)を識別する__3wayハンドシェイクによる通信前の打診を行うため、信頼性が高い。__
・Web通信、メール通信、ファイル転送などの信頼性が求められる通信に向いている。
UDPプロトコル
・送ったデータが相手に届いたか確認しないで通信するやり方。
・コネクションレス型を採用した上位プロトコル(第4層)を識別し転送速度が速い通信を提供するプロトコル。
・コネクションレス型通信とは、通信前に相手との応答確認を行わずに通信を開始する方法。
・音声や動画などのリアルタイムアプリケーションや,DNSなどに向いている。
ファイアウォール(Firewall)とは
企業などの内部ネットワークをインターネットを通して侵入してくる不正なアクセスから守るための“防火壁”。WANの発展により、企業内のネットワークをWebに接続することが当たり前になった結果、__Web経由で内部ネットワークに侵入できるようになり、内部データの盗聴、改ざん、攻撃などが行われる可能性が大きくなった。__そのため、高度なセキュリティシステムの構築が必要となり、ファイアウォールが誕生した。
https://www.hs-juniperproducts.jp/check/firewall.html
ファイアウォールの仕組み
パケットフィルタリング型
事前に通信を許可する送信元情報(IPアドレスやポート)、宛先情報をルールとして設定することで、ルールに反する通信を遮断する。
- 事前に設定したルールに合致するものは全て通信を許可
- 事前に設定したルールに合致しないものは全て通信を破棄
アプリケーションゲートウェイ型
新しいタイプのファイアウォール。従来の方法は通信先を指定することで、不審なアクセスをシャットアウトする。最近問題になっている「なりすまし」型の不正アクセウスには効果は強くない。一方、アプリケーションデートウェイ型は__それぞれのアクセスの詳細をチェックして、セキュリティの是非を判断する__ので、従来のものよりネット速度が少し落ちるが、「なりすまし」には効果的。
サーキットレベルゲートウェイ型
従来のパケットフィルタリング型の動作に加えて、通信を許可するポート指定や制御を行うタイプ。使用するアプリケーションごとに設定が可能なため。特定のシステムやソフトにだけ通信を制御するという使い方もできる。
firewalldのhttpポートを開ける
# firewall-cmd --zone=public --add-service=http
このコマンドによって一時的にWebサーバーのTCP、80番が解放される。
# firewall-cmd --zone=public --add-service=http --permanent
一時的でなく、恒久的な設定はこのコマンド
# firewall-cmd --reload
設定を反映させるためにリロードする。これで80ポートはファイアウォールを突破!
firewalldのhttpポートを開ける(ポートを直接開く)
httpなどのようにサービス単位ではなく、ポートを直接開く方法もある。
// TCP:443の時
# firewall-cmd --zone=public --add-port=443/tcp
# firewall-cmd --zone=public --add-port=443/tcp --permanent
# firewall-cmd --reload
これで443ポートはファイアウォールを突破!