パケットフィルタリングについて
今回は、Linuxカーネルに備わっているパケットフィルタリングについての解説です。【連載コラム:Linuxシステム管理標準教科書を読む(13)】
Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。
Linuxカーネルにはパケットフィルタリングの機能が備わっています。パケットフィルタリングは、通信パケットのIPアドレスやポート番号などを使って、通信するパケットを制御する仕組みです。教科書ではiptablesを使ったパケットフィルタリングについて解説されていますが、最近のディストリビューションではfirewalldが使われることが多くなっています。iptablesもfirewalldも、Linuxカーネルが持つNetfilterやnftablesなどのネットワークのフィルタリング機能を設定、使用するためのフロントエンドツールとしての位置づけとなります。根本的な考え方は共通なので、ここでは基本的な考え方について解説します。
パケットフィルタリングの役割
パケットフィルタリングはファイアーウォール機能として説明されることもあります。ファイアーウォールとは、必要な通信だけ通過させ、不要な通信は通過させない仕組みをいいます。こうすることで、外部からの悪意のある攻撃を遮断することができます。
フィルタリングルール
パケットの通過の可否の判断は、基本的にIPアドレスとポート番号で行います。よく使われるのは以下のような観点でのルールです。
- どのIPアドレスから来たのか(送信元IPアドレス)
特定のクライアントのみに接続を許可したい場合のルール。不特定多数に提供するサービスのサーバーでは設定が難しくなります。
- どのポート番号にアクセスするのか(送信先ポート番号)
サーバー側で待ち受けているサービスにはそれぞれポート番号が割り当てられているので、ポート番号を指定することはアクセスを許可するサーバーサービスを指定することになります。
送信元のポート番号は、基本的に発信時にポート番号の大きい数字が割り当てられるので、フィルタリングで絞り込むのに使うのにはあまり適していません。
送信先IPアドレスは、サーバーが複数のIPアドレスを持っている場合には送信先IPアドレスでのルールを指定することでフィルタリングができるので、必要であればポート番号との組み合わせで設定することになります。
IPマスカレード
iptablesやfirewalldは、パケットフィルタリングの他にNAT(Network Address Translation)の機能を持っています。教科書ではスタティックNATやダイナミックNATも解説していますが、これらを使うことはあまりありません。最後のIPマスカレード(NAPT)は、内部ネットワークから外部ネットワークへ接続させる際に簡単にLinuxで設定できることから、別途ルーターを用意する必要が無いので活用するケースがあります。カーネルの設定変更も必要となりますが、手順を覚えておくと役に立つ時があるでしょう。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
<Linuxシステム管理標準教科書とは>
「Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。
バックナンバー
第12回:各種ネットワーク設定ファイルについて(後編)
第11回:各種ネットワーク設定ファイルについて(前編)
第10回:NetworkManagerの利用
第9回:ネットワークの管理の変化
第8回:SSHサーバーの設定