Firewalldは、RHELベースのディストリビューションのファイアウォールとしてiptablesに取って代わりました。 Firewalldが使用する構文はよりユーザーフレンドリーです。この投稿では、firewalldが実行され、サーバーの起動時に起動することを確認する方法を示します。また、永続的で柔軟なファイアウォールルールを作成する方法も示しています。
注 :RedHat®、CentOS®、AlmaLinux®、RockyLinux®もfirewalldを使用しているため、この記事のすべてのコマンドは、Rackspaceが利用できるRHELベースのイメージでも機能します。
Firewalldはゾーンを使用します ルールのグループを管理します。ゾーンはネットワークインターフェースに接続され、特定のネットワークで許可されるトラフィックと拒否されるトラフィックを決定します。
この機能は、パブリックインターフェイスに非常に厳格なファイアウォールを確立し、CloudNetworkインターフェイスにさらにリラックスしたファイアウォールを確立する場合に役立つことがあります。 firewalldが事前定義されているゾーンに精通することは役に立ちます。 Firewalldには、信頼性の低いものから信頼性の高いものの順に、次の事前定義されたゾーンがあります。
drop
:このゾーンは発信接続のみを許可します。応答なしで着信接続をドロップします。block
:drop
に似ていますが 、このゾーンは、icmp-host-prohibited
を使用して着信リクエストを拒否します またはicmp6-adm-prohibited
メッセージ。-
public
:このゾーンは、パブリックネットワークの場合、またはネットワーク上の他のコンピューターを信頼しない場合に使用します。このゾーンは、ケースバイケースで着信接続を受け入れます。 external
:ファイアウォールがゲートウェイとして機能する外部ネットワークでこのゾーンを使用します。このゾーンは、ネットワークアドレス変換(NAT)マスカレード用に構成されているため、内部ネットワークはプライベートですが到達可能です。internal
:このゾーンは、他のコンピューターが適度に信頼できるゲートウェイの内部に使用します。-
dmz
:このゾーンは、非武装地帯(DMZ)にある隔離されたコンピューターに使用します。このゾーンでは、Secure Shell(SSH)とInternet Control Message Protocol(ICMP)のみが許可されます。 work
:このゾーンは仕事用のコンピューターに使用します。home
:このゾーンは家庭環境に使用してください。trusted
:ネットワーク上のすべてのコンピューターを信頼する場合は、このゾーンを使用してください。
ファイアウォールを使用するには、ルールを作成してゾーンのプロパティを変更してから、ネットワークに最も適切なゾーンにネットワークインターフェイスを割り当てます。
ファイアウォールを起動し、起動時に有効にします
デフォルトでは、firewalldを有効にして、サーバーを再起動してから、atbootを開始する必要があります。
--state
を使用すると、ファイアウォールが実行されているかどうかを簡単に確認できます。 次の例に示すように、フラグ:
[user@server ~]$ sudo firewall-cmd --state
Finding out about your zones
Firewalldが実行されていない場合は、次のコマンドを実行して有効にし、開始できます。
[user@server ~]$ sudo systemctl enable firewalld
[user@server ~]$ sudo systemctl start firewalld
次のコマンドを実行すると、現在デフォルトのゾーンであるゾーンを確認できます。
[user@server ~]$ sudo firewall-cmd --get-default-zone
次のコマンドを実行すると、どのネットワークインターフェイスがどのゾーンに割り当てられているかを確認できます。
[user@server ~]$ sudo firewall-cmd --get-active-zones
注 :デフォルトでは、すべてのネットワークインターフェイスがパブリックゾーンに割り当てられます。
次のコマンドを実行して、パブリックゾーンに関連付けられているルールを見つけることもできます。
[user@server ~]$ sudo firewall-cmd --list-all --zone=public
出力は次の例のようになります。
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http https ssh
ports: 1025/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
出力は、パブリックゾーンがデフォルトであり、eth0およびeth1ネットワークインターフェイスがあることを示しています。動的ホスト構成プロトコル(DHCP)(dhcpv6-client
)、SSH、ハイパーテキスト転送プロトコル(HTTP)、セキュアHTTP(HTTPS)トラフィック、およびポート1025
での伝送制御プロトコル(TCP)トラフィックが許可されます。 。
使用可能なゾーンのリストを取得するには、次のコマンドを実行します。
[user@server ~]$ sudo firewall-cmd --get-zones
--change-interface=
を使用して、セッション中にゾーン間でインターフェースを移動できます 引数と--zone
口論。ファイアウォールが再起動すると、インターフェースはデフォルトのゾーンに戻ります。
[user@server ~]$ sudo firewall-cmd --zone=internal --change-interface=eth1
インターフェイスの永続ゾーンを定義するには、インターフェイスの構成ファイルを開き、次の行を追加します。
...
ONBOOT=yes
ZOME=internal
ファイルを保存して閉じてから、次のコマンドを実行してネットワークとファイアウォールを再起動し、変更を強制的に有効にします。
[user@server ~]$ sudo systemctl restart network
[user@server ~]$ sudo systemctl restart firewalld
Firewalldには、ポート番号やプロトコルタイプではなく、サービスのみを追加できる定義済みのサービスが付属しています。たとえば、http
を許可することができます tcp port 80
ではなく 。
次のコマンドを使用して、これらのサービスのリストを取得できます。
[user@server ~]$ sudo firewall-cmd --get-services
次に、次のコマンド例を使用してサービスを追加します。
[user@server ~]$ sudo firewall-cmd --add-service=http
構成はすぐに有効になりますが、再起動後は存続しません。サーバーの再起動時にこれらのタイプのサービス構成を再起動できるようにするには、--permanent
を追加する必要があります 口論。次の例に示すように、構成がすぐに有効になり、サービスも再起動するように、これらのコマンドの両方を順番に実行することをお勧めします。
[user@server ~]$ sudo firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
/ usr / lib / firewalld / services / に移動すると、firewalldの事前定義されたルールに関する追加の詳細を取得できます。 ディレクトリとファイルの読み取り。
豊富なルール これは、firewalldで条件を定義する方法です。リッチルールの最も一般的な使用例は、特定のIPアドレスまたはIPアドレス範囲からのアクセスを許可することです。次のコマンドは、192.168.0.0ネットワーク上の任意のIPからTCPポート80へのアクセスを有効にし、ルールを永続的にします。
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent
豊富なルールの例については、Fedora®Wikiを参照してください。
/ usr / lib / firewalld / services / にファイルを配置することで、独自のサービスを作成し、ルールを作成するときに参照できます。 ディレクトリ。既存の.xmlをコピーして、このタスクを実行する最も簡単な方法 このディレクトリにファイルを保存してから、詳細を変更します。
次のコマンド例は、既存のファイルを新しいファイルにコピーします。
[user@server ~]$ sudo cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/myservice.xml
次のコマンドは、編集用に新しいファイルを開きます。
[user@server ~]$ sudo vim /usr/lib/firewalld/services/myserver.xml
ファイルは次の例のようになります。
<!--?xml version="1.0" encoding="utf-8"?-->
<service>
<short>My Custom Service</short>
<description>A brief description of the service. This rule allows port 1134 on TCP for my application.</description>
<port protocol="tcp" port="1134"></port>
</service>
変更を適用するには、ファイル名から .xmlを引いた名前で次のコマンドを使用します ファイル拡張子:
[user@server ~]$ sudo firewall-cmd --add-service=myservice
[user@server ~]$ sudo firewall-cmd --permanent --add-service=myservice
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。