現代のネットワーク環境では、サーバがハッカーにとって魅力的な標的となります。ファイアウォールやセキュリティ対策は良い出発点ですが、完全なセキュリティ対策とは言えません。多くの顧客、社員、取引先が多様な機器を用いて貴社にアクセスするため、各機器ごとに通信プロトコル、速度、技術仕様が異なります。基本的なファイアウォールだけでは、すべての機器に最適な対応は難しいのです。
ネットワーク分野では、ACLはセキュリティの中でも欠かせない要素です。アクセス制御リスト、いわゆる「上位ACL」は、内部と外部の通信を監視し、定められたルールと照合する機能を持ちます。
本記事では、ACLの有用性について詳しく解説し、アクセス制御リストに関するよくある疑問に答えます。
アクセス制御リストは、どのクライアントやホストがサービスを利用できるかを決める規則の体系です。要するに、ACLとは誰が誰と通信できるかを定めるリストであり、この例ではメールアドレス、ホスト、ポート、プロトコルの種類を使用して、該当するものだけが通信可能となるよう指定します。
もし不正な目的で、送信元を偽装してメールを送ろうとする場合は、その行為を可能にするようなリストが必要となります。
そのため、メールサーバの仕組みを理解する必要があります。代表的なメールサーバのひとつに Sendmail がありますが、Sendmail には約250種類の設定ファイルが用意されており、用途に応じた設定を選ぶ必要があります。設定が完了すれば、たとえばスクリプトを作成し、「このメールを適切なフォルダに振り分ける」という処理を実行できます。ユーザーA、B、C用のフォルダ、またはユーザーD、E、F用のフォルダを用意して、各メールを該当するフォルダへ移すことが可能です。
アクセス制御リスト(ACL)は、ウェブチャンネルにおける信号機のような役割を果たし、トラフィックの状況と流れを管理します。ACLは、スイッチのインターフェース上でパケットを転送するか否かを決定するさまざまな条件を制御します。
ステートレスファイアウォールが、送信元から宛先へパケットを通すか遮断するかを判断するのと同様に、ACLも同じ働きをします。
特定のインターフェースにACLを設定すると、通過するすべてのトラフィックが評価され、その内容に応じてパケットが許可または拒否されます。
送信元、宛先、特定のプロトコルなどの情報がACLルールの条件として使用されることもあります。
アクセス制御リストは、スイッチやファイアウォールに一般的に見られますが、ルータ、ネットワーク機器、さらには端末など、ネットワーク上のあらゆる装置で利用可能です。
ファイルシステム上のACLは、ファイルやフォルダへのアクセスを管理します。OSはファイルシステムACLを用いて、どのクライアントがシステムにアクセスできるか、またどの権限を持つかを決定し、認可されたクライアントのみがファイルやフォルダへアクセスできるようにしています。
ネットワーク管理では、ACLを利用して組織内へのアクセスを制御します。ACLはスイッチなどに対して、どの種類のトラフィックや動作を許可するかの指示を与えます。
元々、ファイアウォール対策としてACLを用いるのが最良の方法とされていました。現在ではACL以外にもさまざまなファイアウォールやその代替手段が存在しますが、企業では依然として、VPNなどの技術と連動して、どのトラフィックを暗号化しVPNトンネル経由で送信するかを指定するためにACLが活用されています。
ACLを用いる基本理念は、組織を守ることにあります。これがなければ、あらゆるトラフィックが自由に出入りし、不正な通信に対抗できなくなります。
ACLにより、単一または複数のIPアドレス、あるいはTCPやUDPといった異なるプロトコルごとのトラフィックを分類できるようになります。例として、サブネット内の一部ホストのみを許可するなど柔軟な制御が可能です。
例えば、Enterprise Cのエンジニアが金融部門のウェブサーバに接続する場合、ポート80のみを許可し、他の通信は遮断することができます。
ファイルシステムはファイルの配置の仕方です。ACLは、PCのOSに対して、各システムオブジェクト(例えばファイルやフォルダ)へのアクセス権を通知するテーブルです。各オブジェクトは、それに関連付けられたACLとリンクするセキュリティ属性を持ち、アクセスが認められたクライアントごとにリストにエントリーが作成されます。
フォルダ内の単一ファイルまたは全ファイルの読み込み、実行、編集などの権限が一般的です。Microsoft Windows NT/2000、NovellのNetWare、DigitalのOpenVMS、UNIX系システムなどがACLを利用しています。
ACLに基づくセキュリティモデルでは、クライアントがオブジェクトを要求すると、OSがACLを確認し、要求された操作が許可されているかを判断します。
ネットワークでは、ACLはルータやスイッチに設定され、トラフィックフィルターとして機能します。各ネットワークのACLには、パケットや定期的な更新が許可されるかどうかを決定するポリシーが含まれています。
ACL対応ルータは、パケットフィルターと同様に、設定された条件に基づきパケットを転送または拒否します。ルーティング情報、送信元および宛先のIPアドレス、ポート、プロトコルにより通信の可否が判断されます。
標準ACLは、Cisco IOSの初期リリース(8.3)にその起源を持ち、拡張ACLと異なり、送信元IPアドレスに基づいてトラフィックを制限します。
パケットがルータに出入りする際、そのIP情報がACL内の各ルールと照合され、一致すれば許可され、不一致なら拒否されます。
ACLが着信(インバウンド)か発信(アウトバウンド)に設定されているかで、パケットに対する対応が変わります。インターフェースに着信するパケットはACLで制御され、発信の場合はルータを通過して外へ出るパケットが対象となります。
例えば、内部ネットワークから直接インターネットへ出るトラフィックの場合が該当します。
拡張アクセス制御リストを用いると、特定のIPアドレスから指定のIPアドレスおよびポートへのトラフィックを許可または拒否できます。また、ICMP、TCP、UDPなどの異なる種類のトラフィックを識別することもでき、非常に細かい制御が可能となります。
送信元アドレスのみで分類する場合もありますが、より正確な制御が求められる場合、送信元と宛先の両方の条件を指定できる拡張ACLが有効です。さらに、プロトコルや特定のTCP/UDPポート番号を明示して、より精密なフィルタリングが可能です。
ネットワークのパケットフィルタリングファイアウォールを構築する際には、拡張ACLの利用が推奨されます。
拡張ACLと標準ACLの違いは?
これは、既存のフィルタリングリストに追加され、全体の透明性を確保するための項目です。
用途に応じて、IPによるアドレス指定やTCPによるフィルタリングなど、異なるプロトコルが利用可能となります.
パケットが到達しようとするIPアドレスの範囲を指定します。
ホストや中継機器のIPアドレスを一括指定することで、個別に記述する必要をなくします。
TCPやUDPと同様、フィルタリング時にポート番号を指定するために使われ、以下の4つの選択肢があります:
動的ACLは、従来のACLでは容易に対処できない問題を解決します。少数のユーザがアクセスするサーバ群を想定すると、ACLでそのサーバのIPアドレスを指定できます。しかし、ユーザが異なる端末を使ったり、DHCPで別のアドレスを取得した場合、同じユーザでもIPアドレスが変わってしまいます。従来のACLでは、新しいIPアドレスごとに変更が必要となり、管理負荷やセキュリティリスクが高まります。
動的ACL(ロック・アンド・キー・セキュリティとも呼ばれる)は、ACLとユーザ認証プロセスを連動させることで、この問題を解決します。ユーザはまずルータにtelnetで接続し、ユーザ名とパスワードを入力します。認証が成功すると、ルータは動的にACLを更新し、そのユーザのIPアドレスからのトラフィックを許可します。一定時間後、一時的なACLエントリーは無効になり、セキュリティホールを塞ぎます。
通常のACLはセッション情報を保持しません。許可と拒否の判断がリスト順に処理され、いずれかの条件に一致するとそのルールが適用され、以降の評価は行われません。
小規模なオフィスでは、反射的ACLがステートフルファイアウォールとして機能し、内部から開始されたトラフィックのみを許可し、外部からの通信を遮断します。
反射的ACLは、一時的に内部セッションの応答のみを許可するリストです。内部でセッションが開始され、ルータを通じ外部に出る際、一時エントリーが作成され、対応する外部からの応答トラフィックのみが許可され、セッション終了後にエントリーは削除されます。
反射的ACLの特徴として、以下が挙げられる:
反射的ACLのメリットとして、以下が挙げられる:
ルータのインターフェースにACLを設定する前に、ネットワークの状況やトラフィックの流れを十分に把握する必要があります。ACLの役割や影響は、CCNAやCCNPの試験でよく問われ、ACL設計のミスはネットワーク管理者が陥りやすい典型的なエラーです。どの組織でも起こりうる問題です。
IT担当者やセキュリティ専門家は、設計時に着信ACLが送信元アドレスから始まり、次に宛先アドレスが続く点に注意する必要があります。ネットワークインターフェースにACLを設定する場合、近隣のネットワークやホストを送信元とみなし、発信インターフェースでも同様の考え方が適用されます。
最も分かりにくいのは、外部専用でないルータのインターフェースでACLを設定する場合です。内向き側は外部ネットワークからのパケットが送信元となり、組織内のアドレスが宛先として扱われます。発信側では、内部アドレスが送信元、外部アドレスが宛先となります。
拡張ACLと標準ACLは、ネットワークパフォーマンスに最も影響を及ぼす位置に設定する必要があります。不適切な実装は混雑や効率低下を招きますが、適切なACL設定は不要なトラフィックを削減し、ネットワークの効率を向上させます。
拡張ACLに多くのポートを追加すると複雑さが増すため、実装前にトラフィックの流れや送信元・宛先アドレスをしっかり記録しておくことが重要です。これらの詳細な設定については、今後の記事でさらに解説します。
ブロック対象のネットワークトラフィックの送信元を確認してください。ルータのインターフェースは外部ネットワークからのトラフィックを受信するため、送信元はインターネットのIP(ウェブサーバなどの公開IP)やすべて(0.0.0.0のワイルドカード)となり、宛先は内部IPとなります。例えば、特定のホストがインターネットに接続するのを防ぐ必要がある場合、内部ホストのIPが送信元、インターネット側のIPレンジが宛先となります。
ACLは、ファイアウォールのインターフェースに出入りする全てのトラフィックのログ記録にも非常に有効です。トラフィックは体系的に記録され、中央のログサーバへ即時複製することも可能です。
ログに記録するアクションは設定変更可能ですが、主に以下が記録されます:
INPUT - 外部からの着信トラフィック
OUTPUT - 内部ネットワーク宛の発信トラフィック
FORWARD - ファイアウォールと他機器間のトラフィック(例:別のファイアウォール)
TRAFFIC - インターフェースを通過する全トラフィック
ACLログ機能が設定されると、システムはACLフローを監視し、拒否条件に一致するパケットや統計情報を記録します。
各フローについて、統計情報とドロップパケットのログが生成され、送信元インターフェース、プロトコル、送信元IP、送信元ポート、宛先IP、宛先ポートによってフローが定義され、指定時間内に拒否された回数が記録されます。
新たなフローが拒否されると、初回のSyslogメッセージがヒットカウント1で生成され、その後、拒否されるたびにヒットカウントが増加します。
既存のフローが拒否される場合、各間隔の終わりにSyslogメッセージでヒットカウントが報告され、送信後はカウントがリセットされます。間隔内にヒットがなければ、フローは削除され、Syslogメッセージは生成されません。
システムは、パケットの送信元、宛先、またはプロトコルをACLの各条件と一度に1つずつ比較します。
パケットがどのルールにも一致しなければ、次の条件が評価されます。
いずれかのルールに一致すると、以降の評価は行われず、その一致したルールに基づいてパケットが許可または拒否されます。一度一致するとこれ以降のルールは無視されます。
もしACLが送信元やプロトコルを拒否した場合、システムはICMPのホスト到達不能メッセージを返し、パケットを破棄します。すべての条件に対して正しく機能していることが確認されました。
どの条件にも一致しなかった場合、ACLの最後に暗黙の拒否ルールがあるため、パケットは破棄されます。
評価は最初の一致で終了するため、同じルール設定でも状況によりパケットが許可されたり拒否されたりすることがあります。
コマンドで指定されたACLが存在しない場合、すべてのパケットが通過します。インターフェース、プロトコル、方向ごとに、ACLは一つしか存在しません。
デバイスに到着したパケットは着信ACLで管理され、転送前にフィルタリングされ、不一致の場合は破棄されます。着信ACLはルーティングクエリの負荷を軽減し、テストを通過したパケットは転送され、拒否されたものは破棄されます。
デバイスから出る前のパケットは、発信ACLで処理され、出力インターフェースで許可されれば転送、拒否されれば破棄されます。
セキュリティを強固にし不審なトラフィックを遮断するため、ACL実装時には以下の推奨事項に従う必要があります:
ACLはすべてのインターフェースに適用され、ほぼすべてのセキュリティやルーティングで活用されます。外向けインターフェースのルールに依存するネットワークでは、すべてのインターフェースが均等であり、一部のみACLで保護し他を無防備にするべきではありません。
着信ACLは、システム内でデータを運ぶアドレスの基準となる重要なルールです。
ACLの評価エンジンは常に上から順にリストを処理します。
ACLは、ステートフルファイアウォールに比べて計算資源の負荷が少なく、処理速度も速いため、高速ネットワークのセキュリティには特に有利です。ただし、処理が遅れるとパケットがACL評価中に長時間滞留する可能性があります。
最も一致しやすい条件をACLの上部に配置し、一般的な条件から具体的な条件へと整理することが重要です。パケットは最初に一致したルールで処理されるため、あるルールで許可された場合と別のルールで拒否された場合が起こりえます。
ACLルールを追加した理由、その目的、実施日時を記録してください。各ルールごとに個別のコメントを付ける必要はなく、複数のルールをまとめた詳細な説明でも構いません。意図が混乱しないよう、管理者はルールの最新状態を維持することが大切です。
ACLはパケットフィルターとして、組織内のトラフィックを許可、制限、または遮断する重要な役割を持ち、単一または複数のIPアドレス、さらにTCP、UDP、ICMPなど各種プロトコルの通信を管理できます。
ACLを用いて不適切なインターフェースや誤った送信元・宛先へのアクセスを制限すると、組織全体のネット接続に影響を与える可能性があります。1つのACL設定で、組織全体のインターネットアクセスが遮断されることもあります。
着信と発信のトラフィックの流れ、ACLの仕組みおよび配置場所を理解することは、誤設定を防ぐ上で極めて重要です。ルータの役割はトラフィックを適切なインターフェースに振り分けることであり、トラフィックは着信または発信のいずれかです。
堅牢なファイアウォールは高いセキュリティを実現しますが、ネットワーク性能に影響を与えることがあります。一方、ACLはインターフェースに直接適用され、ルータのハードウェアで処理されるため、速度面でも優れ、十分なセキュリティを提供します。
Create and manage access control lists (ACLs) - cloud.google.com
Access control lists (ACLs) - cloud.google.com
最新情報を購読