FirewallDを使用してCentOS 7でファイアウォールを管理する

FirewallDは動的に管理されるファイアウォールであり、RHEL 7ベースのサーバーで使用可能なIPv4およびIPv6ファイアウォールルールとファイアウォールゾーンをサポートします。これはiptablesカーネルのnetfilterコードの直接の置き換えであり、カーネルのコードで動作します。

この記事では、firewall-cmdコマンドを使用したCentOS 7でのファイアウォールの管理について簡単に説明します。

FirewallDが実行されているかどうかの確認

最初のステップは、FirewallDがインストールされ、実行されているかどうかを確認することです。これはsystemd、次のコマンドを実行して実行できます。

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-03-10 15:07:00 UTC; 1min 30s ago
   ...

または、次のfirewall-cmdツールを使用して確認できます。

$ firewall-cmd --state
running

ゾーンの管理

FirewallDはzones、ゾーンが接続に使用される信頼レベルを定義するという概念を使用して動作します。インターフェースごとに特定のファイアウォールルールを適用するために、異なるネットワークインターフェースを異なるゾーンに分割したり、すべてのインターフェースに1つのゾーンを使用したりできます。

デフォルトでは、すべてがデフォルトpublicゾーンで行われますが、適用可能な他のいくつかの事前構成済みゾーンもあります。

利用可能なすべてのゾーンの一覧表示

利用可能なすべてのゾーンのリストを取得する必要がある場合があります。その中には、いくつかのボックスが含まれています。繰り返しますが、これは次のようにして行うことができますfirewall-cmd

$ firewall-cmd --get-zones
block dmz drop external home internal public trusted work

デフォルトゾーンの確認

現在設定されているデフォルトのゾーンは次のようにして見つけることができますfirewall-cmd

$ firewall-cmd --get-default-zone
public

デフォルトのゾーンを(たとえばにhome)変更したい場合は、次のコマンドを実行します。

$ firewall-cmd --set-default-zone=home
success

この情報は、メイン構成ファイルに反映されます/etc/firewalld/firewalld.conf。ただし、このファイルを手動で変更せず、代わりにを使用することをお勧めしますfirewall-cmd

現在割り当てられているゾーンを確認する

次のコマンドを実行すると、インターフェースが割り当てられているゾーンのリストを取得できます。

$ firewall-cmd --get-active-zones
public
  interfaces: eth0

次のコマンドeth0を実行して、単一のインターフェースのゾーン(この場合)を確認することもできます。

$  firewall-cmd --get-zone-of-interface=eth0
public

ゾーンを作成する

デフォルトの事前設定されたゾーンがニーズにまったく合わない場合、新しいゾーン(zone1)を作成する最も簡単な方法は、再びfirewall-cmd

$ firewall-cmd --permanent --new-zone=zone1
success

作成後、リロードする必要があります:

$ firewall-cmd --reload
success

インターフェースへのゾーンの適用

ネットワークインターフェイスをゾーンに永続的に割り当てるfirewall-cmdには--permanent、変更を永続化するフラグを含めることを忘れないでください。を使用する場合はNetworkManager、必ずを使用nmcliして接続ゾーンを設定する必要もあります。

$ firewall-cmd --permanent --zone=internal --change-interface=eth1`
success

ゾーンの永続的な構成を取得する

public割り当てられたインターフェース、許可されたサービス、ポート設定などを含むゾーンの永続的な構成(この場合)を確認するには、次のコマンドを実行します。

$ firewall-cmd --permanent --zone=public --list-all
public (default)
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

サービスの管理

必要なゾーンを割り当てて構成したら、ゾーンへのサービスの追加を開始できます。サービスは、ゾーンでアクセスできるプロトコルとポートを記述します。

既存のサービスのリスト

多くの一般的なサービスは、firewalld内で事前設定されています。これらはリストすることができます:

$ firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https

デフォルトゾーンで有効になっているサービスのリストを取得することもできます。

$ firewall-cmd --list-services
dhcpv6-client ssh

ゾーンにサービスを追加する

public--add-serviceフラグを使用して、ゾーン()の特定のサービスを永続的に有効にできます。

$ firewall-cmd --permanent --zone=public --add-service=http
success

次に、現在のファイアウォールセッションをリロードします。

$ firewall-cmd --reload
success

次に、それが追加されたことを確認します。

$ firewall-cmd --zone=public --list-services
dhcpv6-client http ssh

ゾーンからサービスを削除する

public--remove-serviceフラグを使用して、ゾーンの特定のサービス()を永久に削除できます。

$ firewall-cmd --permanent --zone=public --remove-service=http
success

次に、現在のファイアウォールセッションをリロードします。

$ firewall-cmd --reload
success

次に、それが追加されたことを確認します。

$ firewall-cmd --zone=public --list-services
dhcpv6-client ssh

ゾーンからの複数のサービスの追加/削除

必要なサービス名を中かっこ(、)で囲むことにより、ゾーンから複数のサービス(たとえば、httpおよびhttps)を一度に1つずつ、または一度にすべて追加または削除できます。{}

$ firewall-cmd --permanent --zone=public --add-service=
success

$ firewall-cmd --permanent --zone=public --list-services
dhcpv6-client http https ssh

新しいサービスの作成

たとえばSSHデーモンのポートを変更した場合など、新しいカスタムサービスを追加する必要がある場合があります。サービスは簡単なXMLファイルを使用して定義され、デフォルトのファイルは次の場所にあり/usr/lib/firewalld/servicesます。

$  tree /usr/lib/firewalld/services
/usr/lib/firewalld/services
├── amanda-client.xml
├── bacula-client.xml
├── bacula.xml
├── dhcpv6-client.xml
├── dhcpv6.xml
├── dhcp.xml
├── dns.xml
├── freeipa-ldaps.xml
├── freeipa-ldap.xml
├── freeipa-replication.xml
├── ftp.xml
├── high-availability.xml
├── https.xml
├── http.xml
...

新しいサービスを作成する最も簡単な方法は、これらの既存のサービスファイルの1つをコピーして変更することです。カスタムサービスはに常駐する必要があり/etc/firewalld/servicesます。たとえば、SSHサービスをカスタマイズするには:

$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml

このコピーされたファイルの内容は次のようになります。

$ cat /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

ポートを変更するには、サービスの短い名前とポートを変更する必要があります。必要に応じて説明を変更することもできますが、これはユーザーインターフェイスや別のアプリケーションで使用できる追加のメタデータにすぎません。この例では、ポートを1234に変更しています。

$ nano /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH-Custom</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="1234"/>
</service>

保存したら、ファイアウォールをリロードして、ゾーンにルールを適用できます。

$ firewall-cmd --reload
success

$ firewall-cmd --permanent --zone=public --add-service=ssh-custom
success

ポート管理

サービスを使用するだけでなく、プロトコルごとにポートを手動で許可することもできます。TCPポートできるようにするには、7777のためのpublicゾーンを:

$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success

ポー���範囲を追加することもできます。

$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success

ゾーンのTCPポートを削除する(したがって拒否する)7777にはpublic

$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success

public現在のファイアウォールセッションをリロードした後、特定のゾーンに現在許可されているポートをリストすることもできます()。

$ firewall-cmd --zone=public --list-ports
7000-8000/tcp

FirewallDを有効にする

ファイアウォールを好みに合わせて設定したら、起動時に確実に開始するために、systemdを介してファイアウォールを有効にする必要があります。

$ systemctl enable firewalld

結論

FirewallDには、ポート転送、マスカレード、D-Busを介したファイアウォールとの通信など、非常に多くの設定とオプションがあります。うまくいけば、このガイドが基本を理解するのに役立ち、サーバーからファイアウォールを開始するためのツールを提供したことを願っています。以下の追加の読み物は、ファイアウォールを最大限に活用するのに役立ちます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。