ハマる前に理解する「Firewalld」の設定方法、「iptables」との違い:CentOS 7で始める最新Linux管理入門(4)(2/4 ページ)
システム管理に関する部分が前バージョンから大きく変更された「CentOS 7」は、Linuxに慣れていても「ハマる落とし穴」が幾つかあります。今回は、CentOS 7で採用されたパケットフィルタリングのための新たな仕組みである「Firewalld」の基礎と運用方法を解説します。
Netfilterにおける「チェイン」とは
Firewalldでのパケットフィルタリング設定について解説する前に、Netfilterにおけるパケットフィルタリング処理の仕組みをおさらいしておきましょう。
Netfilterでは、以下の3種類のパケットの流れに対してパケットフィルタリングの処理を行います(図1)。
(1)INPUT(外部から内部へ)
受信するパケットが適切かをチェックします。受信すべきパケットはローカルプロセス(Linux上のプロセス)に配送し、ルールに合致しないパケットは破棄します。
(2)OUTPUT(内部から外部へ)
送信するパケットが適切かをチェックします。送信すべきパケットはネットワークデバイスを経由して外部へ送信し、ルールに合致しないパケットは破棄します。
(3)FORWARD(外部へ転送)
別のサーバへ転送すると指定されたパケットを受信すると、FORWARDのルールを適用して処理します。転送すべきパケットはネットワークデバイスを経由して別のサーバなどに転送され、ルールに合致しないパケットは破棄します。
このパケット処理の分類を「チェイン」と呼びます。iptablesでは、それぞれのチェインに対して個別のフィルタリングルールとデフォルトルールを設定します。デフォルトルールでは、通信の「ACCEPT(許可)」または「DROP(廃棄)」を指定します。「ACCEPT」は、ルールが定められていない通信も「全て許可」します。「DROP」はその逆で、ルールを定めていない通信は「全て破棄」します。また、INPUT方向の戻り通信に対して、OUTPUT方向の「通信許可ルールを設定する必要」もあります。
一方のFirewalldでは、主にINPUTチェインのパケットフィルタリングルールを制御します。また、チェインに対して直接デフォルトルールを設定するのではなく、「ゾーン」と呼ぶグループ単位でルールを定義します。
Firewalldにおける「ゾーン」とインタフェース
では、Firewalldはどのようにシンプルになったのか。「ゾーン」設定の具体例を交えながら説明していきます。
ゾーンとは、パケットフィルタリングのルールをまとめて、グループ化したものです。Firewalldでは、このゾーンを「インタフェース」に定義します。実際のルールの設定は「ゾーン」に対して行います。
あらかじめ設定されている「ゾーン」は表1の通りです。
ゾーン名 | 概要 |
---|---|
public | サーバとして最低限必要な受信許可ルール。全てのインタフェースはデフォルトでpublicゾーンに所属している |
work | 業務用クライアントPCとしての利用を想定したルール。社内LAN内で使う場合を想定している。クライアントPCに求められる必要最低限のルールが定義されている |
home | 家庭用クライアントPCとしての利用を想定したルール。家庭内LANに接続して使う場合を想定している |
internal | Linuxを用いてファイアウォールを構築するのに使うルール。内部ネットワークのインタフェースに設定する |
external | 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、外部ネットワークのインタフェースに対して設定する |
dmz | 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、DMZのインタフェースに対して設定する |
block | 受信パケットを全て拒否するルール。送信パケットの戻り通信は許可される |
drop | 受信パケットを全て破棄するルール。送信パケットの戻り通信は許可される |
trusted | 全ての通信を許可するルール |
では、具体的なコマンドを使って、実際にFirewalldを設定しながら学んでみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- いまさら聞けないLinuxの基礎知識
Linuxを勉強してみたいけど、どこから手を付けてよいか分からない、何だかよく分からないまま使っている……そんな方々のための連載です。まずは、Linuxとはどんなものなのか確認しましょう。 - ステートフルパケットフィルタを使ったサービスの公開
初心者にとって、iptablesは設定が最も困難な機能の1つである。そこで、学習の第1歩としてテンプレートを自分の環境に合わせて修正することから始めよう。(編集部) - CentOS 7のシステム管理「systemd」をイチから理解する
「systemd」は、Linuxの起動処理やシステム管理を行う仕組みです。systemdはinitの限界を克服するために作られた新しいシステム管理アーキテクチャで、CentOS 7でも用います。では、何が違うのでしょう。これまで使われてきた「init」と比較しながら、基礎と課題を解説します。 - NetworkManagerをコマンドラインから操作するには? nmcliコマンド
従来Linuxでは、ネットワークの状態確認やデバイスの設定など機能ごとにコマンドを使い分けていましたが、Red Hat Enterprise LinuxおよびCentOSには、統合ツールとして「NetworkManager」およびCLI版の「nmcli」が用意されています。 - Linux起動の仕組みを理解しよう[init/inittab編]
カーネルが呼び出されてからログインプロンプトが表示されるまでの間に、一体どのような処理が行われているのか。これを理解するには、この部分の全般をつかさどるinitとその設定ファイルであるinittabがカギとなる。 - エンタープライズでもInfrastructure as Code――Chef 12/Chef-Zero/Knife-Zeroの基礎知識とインストール
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。初回は、Chef 12、Chef Solo、Chef Server、Chef-Zero、Knife-Solo、Knife-Zeroの概要と、Chef-ZeroをKnife-Zero経由で利用するCookbook開発環境の構築について解説します。 - Linuxで作るファイアウォール[パケットフィルタリング設定編]
いよいよパケットフィルタリングの設定を始める。しっかりと不要なパケットをブロックできれば、ファイアウォールの内側の安全度はより向上する。パケットの性質やiptablesの動作をここでマスターしてほしい。 - アクセス制限の設定とCentOSのアップデート
前回はsshでVPSにログインして、一般ユーザーを作成しました。今回は、アクセス制限、パケットフィルタリングといった不正アクセス対策の設定をしてから、CentOSをアップデートします(編集部) - 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - 無線LAN接続の設定を操作するには? iwconfigコマンドの使い方
無線LANインターフェースがカーネルまたはモジュールでサポートされていれば、アクセスポイントとIPアドレスを設定する程度で接続できます。「iwconfig」は、アクセスポイントへの接続に必要なESSIDおよび暗号化キーを登録するときに利用するコマンドです。 - NginxをWebサーバー“以外”でも徹底活用する
Nginxは高速化だけではありません。Webサーバー以外への応用事例として、ロードバランサー、HTTPS対応、WAFとしての利用を紹介します。