私たちの世界は、今ほどつながったことはありません。すべての人、企業、政府などは、Webを使用して通信し、通貨とデータを交換し、通常、日常生活と業務の動きを経験します。ただし、これらの接続は本質的に安全ではないため、場所、情報、およびお金を保護するための防御策を講じる必要があります。かつて、誰かが自分の所有物を確保したいと思ったとき、彼らは侵入者を遠ざけるために門と柵を建てました。今日、ファイアウォールを使用してこれらの同じ目標を達成しています。ほとんどのLinuxシステムはiptables
を利用していました しかし、実用性は、新しい技術が間近に迫っていました。
2011年にRedHatEnterprise Linux 7.0(RHEL)が導入されたことで、iptablesはfirewalld
に取って代わられました。 生まれました。その核となるのは、firewalld
ゾーンベースのファイアウォールです。ゾーンベースのファイアウォールは、トラフィックを監視し、着信/発信パケットに対して適用される一連の定義済みルールに基づいてアクションを実行するネットワークセキュリティシステムです。
すべてのゾーン
Firewalld
さまざまな接続ゾーンにさまざまなレベルのセキュリティを提供します。ゾーンは、少なくとも1つのネットワークインターフェイス(eth0
)に関連付けられています 、 例えば)。次のコマンドを使用して、事前構成されたゾーンを確認します。
[tcarrigan@server ~]$ firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work
ご覧のとおり、デフォルトでリストされているゾーンは次のとおりです。
- ブロック
- dmz
- ドロップ
- 外部
- 家
- 内部
- libvirt
- 公開
- 信頼できる
- 仕事
注:このデモではRHEL8.2仮想マシンを使用しています。
通常、ファイアウォールのデフォルトのルールは、すべてを拒否し、必要なサービスに対して特定の例外のみを通過させることです。
多くの場合、特定のゾーンに関連付けられているサービスを確認すると便利です。この情報を表示するには、次のコマンドを使用します。
firewall-cmd --list-all
ゾーンを指定しない場合、デフォルトのゾーンが照会されることに注意してください。ここで、デフォルトのゾーンはpublic
です。 ゾーン。
[tcarrigan@server ~]$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: cockpit dhcpv6-client mountd nfs rpc-bind ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ゾーンを指定する場合は、--zone=zonename
を追加するだけです。
たとえば、external
を表示するには ゾーンには、以下を使用します:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
何らかの理由でデフォルトゾーンを変更したい場合は、次のコマンドを使用して簡単に変更できます。
firewall-cmd --set-default=zonename
サービスによる許可と拒否
さて、ファイアウォールの良いところは、ファイアウォールがネットワークを安全に保つことです。悪い点は、あらゆる状況に適合する「万能」ファイアウォールがないことです。このため、ファイアウォールは、使用されている状況の正確なニーズに合わせてカスタマイズされます。たとえば、external
でFTP(ファイル転送プロトコル)転送を許可する必要がある場合 ポート21を介してファイルを移動できるように、次のようなゾーンを使用します。
firewall-cmd --zone=external --add-service=ftp
これが私のVMからの実際の例です:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --add-service=ftp
[sudo] password for tcarrigan:
success
デーモンが成功を返したことがわかります 、したがって、FTPサービスをexternal
で許可する必要があります ゾーン。これを確認するには、external
を確認する必要があります ゾーンサービスリスト:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-services
ftp ssh
しかし、ファイアウォール構成をリロードするとどうなりますか?
[tcarrigan@server ~]$ sudo firewall-cmd --reload
success
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
新しい許可 ルールはfirewalld
の再初期化に耐えられません 構成。新しいルールを確実に維持するには、--permanent
を追加する必要があります オプション。新しいコマンドは次のとおりです。
# firewall-cmd --permanent --zone=external --add-service=ftp
permanent
を使用したら コマンドを実行するには、変更を有効にするために構成を再ロードする必要があります。
サービスを削除するために、構文に小さな変更を1つ加えます。ここでは、FTPサービスをexternal
から削除します。 ゾーンを永続的に:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-service=ftp
Warning: NOT_ENABLED: ftp
success
FTPが無効になっていること、および操作が成功したことをシステムが警告していることがわかります。
ポートによる許可と拒否
では、非標準ポートを介したトラフィックを許可する必要がある場合はどうなりますか?専用のUDPポートを介して実行する必要があるバックアップサービスがあるとします。この例外をゾーンにどのように追加しますか?構文は非常にユーザーフレンドリーで、サービスに使用したものとわずかに異なります。ゾーン構成にポートを追加するには、次を使用します。
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --add-port=60001/udp
success
次のコマンドで許可されたポートを確認します:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --list-ports
60001/udp
そして、ポートルールを削除するには、ご想像のとおり... --add-port=x
を切り替えるだけです。 --remove-port=x
へ
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-port=60001/udp
success
次は何ですか?
この記事を読んだ後、その情報をどうするか迷っている場合は、お気に入りのVM(RHEL、Fedora、CentOSなど)を起動して、上記のコマンドを試してみることを強くお勧めします。学ぶための最良の方法は、実践的な経験を積むことです。このコンテンツがおもしろいと思った場合は、パート2のEnable Sysadminに注目してください。ここでは、カスタムゾーンの作成とより高度なルールの作成について詳しく説明します。
[ネットワーク管理を簡単にします。 Red Hatの無料の本、みんなのためのネットワーク自動化をチェックしてください。 ]