ファイアウォールで保護 Linuxカーネルのnetfilterフレームワークのフロントエンドとして機能するファイアウォール管理ツールです。 これは強力なゾーンベースのファイアウォールであり、ネットワークトラフィックを監視し、一連の定義済みルールを適用して着信/発信トラフィックを制御します。
FirewalldはPythonで書かれており、systemdの一部です。 IPv4ネットワークとIPv6ネットワークの両方をサポートします。
主な利点は、サービスを再起動せずに変更を実行でき、D-Busインターフェイス構成を使用して簡単に管理できることです。
このチュートリアルでは、 LinuxでFirewalledを設定する とその基本的な概念。
基本概念
Firewalldは、次の名前の2つのレイヤーで構成されます 芯 と D-Bus 層。 コアレイヤーは構成とバックエンドを処理します。 D-Busレイヤーは、ファイアウォール構成の変更と作成を担当します。
Firewalldはサポートします ゾーン と サービス。 ゾーンは、サーバーに接続されているネットワークインターフェイスの信頼レベルに基づいて、サーバーに許可するトラフィックの種類を管理する事前定義された一連のルールです。 これは、ネットワークインターフェイスをゾーンに割り当てることができることを意味します。 サービスを使用すると、ポート、モジュール、および宛先アドレスを構成できます。
Firewall-cmdは、実行時および永続的な構成を管理するために使用されるコマンドラインツールです。
事前定義されたファイアウォールゾーン
ザ デフォルトゾーン / usr / lib / firewalld / zones /という名前のディレクトリに保存されます。 以下は、Firewalldがさまざまな信頼レベル(信頼できるものから信頼できないものまで)に従って提供する事前定義されたゾーンの一部です。
信頼できる:このゾーンはすべての接続を受け入れ、ネットワーク上のすべてのコンピューターを信頼します。
公衆: 信頼できない公共エリアで雇用されています。 他のコンピューターへの信頼は最小限ですが、選択されたインバウンド接続は許可されます。
落とす: すべてのインバウンドまたはインバウンドトラフィックがドロップされます。 アウトバウンドトラフィックのみが許可されます。
外部の:システムがNATマスカレードをオンにしたルーターとして機能する場合に外部ネットワークに実装されます。 選択したインバウンド接続のみが許可されます。
内部: システムがNATマスカレードを有効にしたルーターとして機能する内部ネットワークにのみ実装されます。 他のPCは信頼されており、一部のインバウンド接続のみがアクセスを許可されます。
ブロック:ブロックゾーンは、IPv4の場合はicmp-host-prohibitedメッセージ、IPv6nの場合はicmp6-adm-prohibitedのメッセージですべての着信接続を拒否します。 ここでは、発信接続のみが許可されます。
dmz: コンピュータネットワーク上の残りのシステムへのアクセスが制限されている非武装地帯(DMZ)上のシステムまたはPCに使用されます。 デフォルトでは、SSHトラフィックのみが許可されます。
仕事:作業ゾーンは、作業システムまたはPC用に実装されています。 ネットワーク上の他のすべてのコンピューターには一般的なレベルの信頼があり、選択されたインバウンド接続のみが許可されます。
家: ホームゾーンはホームシステムによって使用され、ワークゾーンと同様に、すべてのPCは一般的に信頼されており、選択された着信接続のみが許可されます。
ファイアウォールのランタイムと永続的な設定
実際の実行構成は実行時構成です。 これは一時的なものであり、再起動後も存続しません。 サーバーを再起動すると、Firewalldは永続的な構成をロードします。永続的な構成は後でランタイム構成に変換されます。
Firewalld構成に変更が加えられると、それらはランタイム構成に直接適用されます。 変更を永続化するには、 --permanent
オプション。
Firewalldのインストールと有効化
Firewalldは、Red Hat、CentOS、 Fedora、SuseLinux。 Debian / Ubuntuでは、パッケージリポジトリで利用できます。
Redhat / CentOS
Firewalldがインストールされていないことがわかった場合は、次のコマンドを実行してインストールします。
$ sudo yum install firewalld
Debian / Ubuntu
$ sudo apt install firewalld
インストールすると、ステータスを確認できます。
$ sudo systemctl status firewalld
Firewalldが稼働中の場合、出力はアクティブ(実行中)を示します。
または、次の方法で実行状態を確認できます。
$ sudo firewall-cmd state
インストールしたら、次のコマンドを実行してFirewalldを起動して有効にします。
$ sudo systemctl start firewalld
システム起動時にFirewalldを有効にし、次のように入力します。
$ sudo systemctl enable firewalld
Firewalldを一時的に停止するには、次のように入力します。
$ sudo systemctl stop firewalld
Firewalldが起動時に起動しないようにするには、次のように入力します。
$ sudo systemctl disable firewalld
ファイアウォールゾーンの処理
Firewalldゾーンの処理方法を確認しましょう。
1.1。 デフォルトでは、パブリックゾーンがデフォルトのFirewalldゾーンです。 これを確認するには、次のコマンドを実行します。
$ sudo firewall-cmd --get-default-zone
出力:
public
2.2。 すべてのゾーンの概要を取得するには、次のコマンドを実行します。
$ sudo firewall-cmd --get-zones
これにより、すべてのゾーンが一覧表示されます。
出力:
block dmz drop external home internal public trusted work
3.3。 デフォルトでは、ネットワークインターフェイスは通常デフォルトゾーンに接続されています。 ネットワークインターフェイスで使用されているゾーンを確認するには、次のコマンドを実行します。
$ sudo firewall-cmd --get-active-zones
この場合、アクティブなネットワークインターフェイスが1つあります- enp0s3
-これはデフォルトゾーンに割り当てられています。
4.4。 ゾーンのすべての構成を表示するには、
パブリックゾーンの構成を表示するには、次のように入力します。
$ sudo firewall-cmd --zone=public --list-all

デフォルトゾーンの概要を表示するには、次のように入力します。
$ sudo firewall-cmd --list-all
5.5。 すべてのFirewalldゾーンの構成を一覧表示するには、次のように入力します。
$ sudo firewall-cmd --list-all-zones

デフォルトゾーンを変更する
すべてのネットワークインターフェイスに割り当てられるデフォルトのゾーンは public
。 別のゾーンに設定できます。
6.6。 デフォルトゾーンを別のゾーンに変更するには、次のように入力します。
$ sudo firewall-cmd --set-default-zone=trusted
ここでは、デフォルトゾーンをに変更しました trusted
ゾーン。
インターフェイスに割り当てられたゾーンを変更します
ネットワークインターフェイスのゾーンを別のゾーンに変更するには、 --zone
オプション。
7。 インターフェイスのゾーンを変更するには enp0s3
に trusted
、 タイプ:
$ sudo firewall-cmd --zone=home --change-interface=enp0s3
ファイアウォールで保護されたサービス
ファイアウォールで保護されたサービスファイルは、 /usr/lib/firewalld/services
xmlファイル形式のパス。 それらは何百もあり、lsコマンドを使用してリストします。
$ ls /usr/lib/firewalld/services
にとって example MongoDBサービスファイルは次のようになります。
$ sudo vim /usr/lib/firewalld/services/mongodb.xml

デフォルトでは、dhcp-clientおよびsshサービスがファイアウォールで許可されています。 出力から、httpsも許可されていることに注意してください。
新しいFirewalldサービスを作成するには、既存のサービスファイルをコピーして、新しいサービス名を付けます。 次に、そのxmlファイルを定義します。
ファイアウォールで最も広く使用されている機能の1つは、ポートを開き、サーバーへの通過を許可することです。 Firewalldには事前定義されたサービスがあります。
8.8。 すべてのサービスを表示するには、次のように入力します。
$ sudo firewall-cmd --get-services
9.9。 インバウンドトラフィックを許可する
mssqlサービスのインバウンドトラフィックを許可するには、次のように入力します。
$ sudo firewall-cmd --zone=public --add-service=mssql
10.10。 追加されたサービスを確認するには:
$ sudo firewall-cmd --zone=public --list-services
出力:
dhcpv6-client mssql ssh
11.11。 再起動後も変更を保持するには、 --permanent
次のようにオプション。
$ sudo firewall-cmd --zone=public --add-service=https --permanent
12.12。 変更を有効にするには、firewalldをリロードします
$ sudo firewall-cmd --reload
13.13。 ファイアウォールからサービスを削除するには、 --remove
オプション
$ sudo firewall-cmd --zone=public --remove-service=https --permanent

上記のコマンドは、HTTPSサービスをパブリックゾーンから完全に削除します。
14。 Firewalldのポートを開くには
たとえば、ユーザーがリモートシステムのデスクトップにリモート接続できるようにするXrdpサービスは、TCPポート3389に関連付けられています。
パブリックゾーンでポートを開くには、次のように入力します。
$ sudo firewall-cmd --zone=public --add-port=3389/tcp

変更を有効にするには、Firewalldをリロードすることを忘れないでください。
Firewalldによるポートフォワーディング
15。 パブリックゾーンのマスカレードを有効にするには
あるポートから次のポートまたはアドレスにトラフィックを転送するには、最初にオンにするか、を呼び出して優先ゾーンのマスカレードを有効にします。 --add-masquerade
オプション。
$ sudo firewall-cmd --zone=public --add-masquerade
16.16。 同じサーバー上のあるポートから別のポートにトラフィックを転送する
特定のポートに到達する着信トラフィックが同じサーバー上の別のポートにリダイレクトされるようにFirewalldを構成すること。
ポート80に到達するトラフィックをパブリックゾーンのポート6000に転送するには、次のように入力します。
$ sudo firewall-cmd --zone=public--add-forward-port=port=80:proto=tcp:toport=6000
17.17。 別のサーバーの別のポートにトラフィックを転送する
または、あるポートから通過するトラフィックを、別のサーバーにある別のポートにリダイレクトすることもできます。
ポート80を介してトラフィックを渡すには、IPアドレスが192.168.10.10である別のサーバーのポート8080にリダイレクトされます。次のように入力します。
$ sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.10.10
着信トラフィックを管理するためのルールを設定する
特定のソースからの着信トラフィックを許可するには --add-source
オプション。
トラステッドゾーンで192.168.10.0/24からのすべての着信トラフィックを許可するには、次のように入力します。
$ sudo firewall-cmd --zone=trusted --add-source=192.168.10.0/24 --permanent
新しいゾーンを作成する
独自のゾーンを作成し、ルールセットを追加できます。 ほとんどの場合、事前定義されたゾーンで十分です。 Webサーバー用の新しいゾーンを作成し、特定のサービス/インターフェイスを許可しましょう。
webzoneという名前の新しいゾーンを作成します。
$ sudo firewall-cmd --permanent --new-zone=webzone
パーマネントゾーンを一覧表示して確認し、次のように入力します。
$ sudo firewall-cmd --permanent --get-zones
出力:
block dmz drop external home internal public trusted webzone work
アクティブな構成を有効にするには、次のように入力します。
$ sudo firewall-cmd --reload
ssh、http、httpsサービスを開き、Webゾーンでインターフェイスを割り当てるには、次のコマンドを実行します。
$ sudo firewall-cmd --zone=webzone --add-service=ssh
$ sudo firewall-cmd --zone=webzone --add-service=http
$ sudo firewall-cmd --zone=webzone --add-service=https
$ sudo firewall-cmd --zone=webzone --add-interface=eth0
Webゾーンの構成を表示するには、次のように入力します。
$ sudo firewall-cmd --zone=webzone --list-all
出力:
webzone
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: http https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
豊富なルール
リッチルールは、より複雑なファイアウォールルールを設定するのに役立ちます。
たとえば、送信元アドレスのIPアドレスと特定のポートへのアクセスを有効にするには、次のように入力します。
$ sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="23.92.31.51/32" port port=21 protocol="tcp" accept"
概要
このチュートリアルでは、LinuxでFirewalldを構成する方法とその基本的な概念を学びました。
フィードバックや提案があれば、以下にコメントしてください。