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サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

CentOS 7へのNetdataのインストール

CentOS 7へのNetdataのインストール

別のシステムを使用していますか?Netdataは、リアルタイムのシステムメトリックモニタリングの分野における新星です。同じ種類の他のツールと比較すると、Netdata:

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

このチュートリアルでは、Just Cause 2マルチプレイヤーサーバーのセットアップ方法をよく学びます。前提条件開始する前に、システムが完全に更新されていることを確認してください

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

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

別のシステムを使用していますか?このチュートリアルでは、CentOS 7でStarboundサーバーをセットアップする方法を説明します。前提条件このゲームを所有している必要があります。

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

Go(Golangとも呼ばれます)は、静的に型付けされ、コンパイルされた、Cのようなプログラミング言語で、Googleによって開発されました。シンプルさと多用途性により、b

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

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

Djangoは、Webアプリケーションを作成するための一般的なPythonフレームワークです。Djangoを使用すると、ホイールを再発明することなく、アプリケーションをより速く構築できます。あなたが望むなら

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

別のシステムを使用していますか?TextPattern CMS 4.6.2はシンプルで柔軟な無料のオープンソースコンテンツ管理システム(CMS)であり、Webデザイナーが

CentOS 7にElggをインストールする

CentOS 7にElggをインストールする

別のシステムを使用していますか?Elggはオープンソースのソーシャルネットワーキングエンジンであり、キャンパスのソーシャルネットワークや

CentOS 7にFroxlor Server Management Panelをインストールする方法

CentOS 7にFroxlor Server Management Panelをインストールする方法

Froxlorは、オープンソースの無料で軽量かつ強力なサーバー管理パネルであり、Webホスティングサービスの確立と管理に最適です。ティ

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

Matrixは、分散型リアルタイム通信用のオープンスタンダードの通信プロトコルです。マトリックスは、上記に分散されているホームサーバーとして実装されています

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

Vtiger CRMは、企業が売り上げを伸ばし、顧客サービスを提供し、利益を増やすのに役立つ人気の顧客関係管理アプリケーションです。私

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

はじめにこのチュートリアルでは、Vultr VPSにPufferPanelをインストールしてください。PufferPanelは、オープンソースで自由に使用できるコントロールパネルで、あなたを管理します

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

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

この記事では、CentOS 7サーバーにApache 2.4をインストールするプロセスの概要を説明します。前提条件:最新のCentOS 7サーバー。sudoユーザー。Ste

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

はじめにこのチュートリアルでは、NGINXまたはApacheを使用してPHP 5 *を7に更新する方法について説明します。前提条件始める前に、リポジトリを追加する必要があります

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

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

MoinMoinは、Pythonで書かれたオープンソースのファイルシステムベースのWikiエンジンです。今日、MoinMoinはオープンソースコミュニティで広く使用されています。多くのベンダー

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

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

別のシステムを使用していますか?SonarQubeは、品質システム開発のためのオープンソースツールです。Javaで書かれており、複数のデータベースをサポートしています。それは提供します

CentOS 7へのPritunlのインストール

CentOS 7へのPritunlのインストール

PritunlはOpenVPNのオープンソース管理インターフェイスです。プライベートネットワークが可能で、ネイティブIPv6サポートがあり、使用方法は比較的簡単です。ター

OSの選択:CentOS、Ubuntu、Debian、FreeBSD、CoreOS、またはWindows Server

OSの選択:CentOS、Ubuntu、Debian、FreeBSD、CoreOS、またはWindows Server

この記事では、Vultrでテンプレートとして提供されるサーバーオペレーティングシステムの概要を説明します。CentOS CentOSはRHEL(Re

CentOS 7にphpPgAdminをインストールする

CentOS 7にphpPgAdminをインストールする

phpPgAdminは、広く使用されているPostgreSQL管理ツールです。これを使用して、直感的なWebインターフェイスでPostgreSQLデータベースを管理できます。この記事では、

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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、