ウェブサイト検索

Linuxでファイアウォールを設定および管理するための便利な「FirewallD」ルール


Firewalldは、Linuxにおいて動的なファイアウォールルールを即座に適用できる方法を提供し、ファイアウォールの再起動が不要で、D-BUSやゾーンの概念もサポートしているため、設定が簡単です。

Firewalld は、古い Fedora のファイアウォール(Fedora 18 以降)のメカニズムを置き換えました。RHEL/CentOS 7 やその他の最新のディストリビューションは、この新しいメカニズムに依存しています。新しいファイアウォールシステムを導入する最大の理由の1つは、古いファイアウォールは変更を加えるたびに再起動が必要であり、そのためすべてのアクティブな接続が切断されるということです。前述のように、最新の firewalld は動的ゾーンをサポートしており、コマンドラインや GUI 方法を使用して、オフィスや家庭のネットワーク用に異なるゾーンとルールを構成するのに役立ちます。

最初は、firewalldの概念は設定が非常に難しいように見えますが、サービスとゾーンを組み合わせることで、この記事で説明したように、より簡単になります。

私たちの前の記事では、firewalldとそのゾーンの使い方を見ましたが、この記事では、コマンドラインを使用して現在のLinuxシステムを構成するための便利なfirewalldルールをいくつか見ていきます。

  1. RHEL/CentOS 7におけるFirewalldの設定

この記事で取り上げたすべての例は、実際にCentOS 7ディストリビューションでテストされており、RHELおよびFedoraディストリビューションでも動作します。

firewalldルールを実装する前に、まずfirewalldサービスが有効で実行中であることを確認してください。

# systemctl status firewalld

上の画像は、firewalldがアクティブで実行中であることを示しています。今、すべてのアクティブなゾーンとアクティブなサービスを確認する時です。

# firewall-cmd --get-active-zones
firewall-cmd --get-services

もしコマンドラインに慣れていない場合は、GUIからfirewalldを管理することもできます。そのためには、システムにGUIパッケージがインストールされている必要があります。もしインストールされていない場合は、次のコマンドを使用してインストールしてください。

# yum install firewalld firewall-config

上記の通り、この文章はコマンドラインを愛する人々のために特別に書かれており、これから取り上げるすべての例はコマンドラインのみに基づいています。GUIの方法はありません…申し訳ありません…

先に進む前に、最初にどのパブリックゾーンでLinuxファイアウォールを構成するかを確認し、次のコマンドを使用して、パブリックゾーンのすべてのアクティブサービス、ポート、リッチルールのリストを作成してください。

# firewall-cmd --zone=public --list-all

上の画像には、まだアクティブなルールは追加されていません。この後の記事で、ルールを追加、削除、変更する方法を見ていきましょう….

1. Firewalldでポートの追加と削除

パブリックゾーンのために任意のポートを開くには、次のコマンドを使用します。たとえば、次のコマンドはパブリックゾーンのためにポート80を開きます。

# firewall-cmd --permanent --zone=public --add-port=80/tcp

同様に、追加されたポートを削除するには、以下に示すようにfirewalldコマンドに「--remove」オプションを使用してください。

# firewall-cmd --zone=public --remove-port=80/tcp

特定のポートを追加または削除した後は、「–list-ports」オプションを使用して、ポートが追加されたか削除されたかを確認してください。

# firewall-cmd --zone=public --list-ports

2. Firewalldでのサービスの追加と削除

デフォルトではfirewalldには事前に定義されたサービスが含まれています。特定のサービスのリストを追加したい場合は、すべてのサービスを含む新しいxmlファイルを作成する必要があります。または、次のコマンドを実行して各サービスを手動で定義または削除することもできます。

例えば、次のコマンドは、ここでのFTPのように特定のサービスを追加または削除するのに役立ちます。

# firewall-cmd --zone=public --add-service=ftp
firewall-cmd --zone=public --remove-service=ftp
firewall-cmd --zone=public --list-services

3. 着信および発信パケットをブロックする(パニックモード)

受信および送信接続をブロックしたい場合は、リクエストをブロックするために「panic-on」モードを使用する必要があります。たとえば、次のルールは、システム上の既存の確立された接続をすべてドロップします。

# firewall-cmd --panic-on

パンモードを有効にした後、任意のドメイン(例えばgoogle.com)にpingを試み、以下に示す‘–query-panic‘オプションを使ってパンモードがONになっているか確認してください。

# ping google.com -c 1
firewall-cmd --query-panic

上の画像にある通り、パニッククエリは「不明なホスト google.com」と言っています。今、パニックモードを無効にして、再度pingを実行して確認してみてください。

# firewall-cmd --query-panic
firewall-cmd --panic-off
ping google.com -c 1

今度は、google.comからのpingリクエストがあります。

関連記事: