GNU/Linux >> Linux の 問題 >  >> Linux

FirewallDとは何ですか?Linuxに実装する方法

ファイアウォールとは何ですか?

Firewalldは、Ubuntu、Debian、CentOS、RHEL、Fedoraなどの多くのLinuxディストリビューション向けのファイアウォール管理ソリューションです。 Linuxカーネルが提供するiptablesフィルタリングシステムのフロントエンドとして機能します。プロトコルに依存しないため、IPv4、IPv6、イーサネットブリッジ、IPセットをサポートします。

Firewalldの基本概念

FirewallDは、iptablesチェーンとルールの代わりにゾーンとサービスを使用します。ゾーンは、コンピューターが接続されているネットワークに対する信頼のレベルに応じて、許可するトラフィックを指定する一連のルールです。ネットワークインターフェイスは、ファイアウォールが許可する動作を指示するゾーンを割り当てました。

Firewalldは、firewall-cmdコマンドラインツールを使用して管理されます。ランタイムおよび永続的な構成を管理するためのインターフェースを提供します。

Firewalldゾーン

昇順の信頼レベルに応じて、Firewalldには9つの事前定義されたゾーンがあります。
各ゾーンの簡単な説明を以下に説明します:

  • ドロップ: このゾーンの信頼レベルは最も低く、送信者に確認応答を送信せずにすべての着信トラフィックをドロップするために使用されます。
  • ブロック: このゾーンはドロップゾーンと非常によく似ており、着信トラフィックは拒否され、送信者はメッセージを受け取ります。
  • 公開: 特定のパブリックネットワークからのトラフィックを許可します。
  • 外部: このゾーンは、システムがゲートウェイまたはルーターとして機能する場合に使用されます。
  • 内部: プライベート内部ネットワーク内のコンピューターに適用される一連のルール。
  • DMZ: このゾーンは、他の内部リソースにアクセスできない可能性のある、内部ネットワーク内のコンピューターの分離されたパッチです。
  • 仕事: このゾーンは、作業機械に使用されます。信頼度は高いです。
  • ホーム: このゾーンのほとんどのコンピューターは相互に信頼しています。信頼レベルは仕事よりも高いです。
  • 信頼できる: このゾーンは最高の信頼レベルを持っています。ネットワーク内のすべてのコンピューターが信頼されています。

ステップ1-Firewalldのインストール

デフォルトでは、Firewalldはほとんどのオペレーティングシステムにプリインストールされています。ただし、最小限のOSインストールの一部にはfiが含まれていません。インストールされていない場合は、次のコマンドでインストールできます。

sudo yum install firewalld        # CentOS/RHEL 8/7/6 
sudo dnf install firewalld        # Fedora and CentOS/RHEL 8 
sudo apt install firewalld        # Ubuntu and Debian  

Firewalldをインストールした後、起動し、システムの再起動後に起動できるようにする必要があります。

sudo systemctl start firewalld
sudo systemctl enable firewalld

次のコマンドを実行して、firewalldのステータスを確認します

systemctl status firewalld
[OR] 
firewall-cmd --state

ステップ2–ゾーンとサービスの操作

デフォルトでは、publicはfirewalldのデフォルトゾーンであり、すべてのネットワークインターフェースはパブリックゾーンで構成されています。次のコマンドを使用して、デフォルトゾーンを一覧表示できます。

firewall-cmd --get-default-zone

出力:

public

次に、次のコマンドを実行して、アクティブゾーンのリストを取得します。

firewall-cmd --get-active-zones

次の出力が得られるはずです:

public
  interfaces: eth0 eth1

使用可能なすべてのゾーンのリストを取得するには、次のコマンドを実行します。

firewall-cmd --get-zones

次の出力が得られるはずです:

block dmz drop external home internal public trusted work

次のコマンドを使用して、パブリックゾーンに関連付けられているすべてのサービスを一覧表示できます。

firewall-cmd --list-all

次の出力が得られるはずです:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

デフォルトゾーンをパブリックからワークに変更するには、次のコマンドを実行します。

firewall-cmd --set-default-zone=work

これで、次のコマンドを使用してデフォルトゾーンを確認できます。

firewall-cmd --get-default-zone

出力:

work

次のコマンドを使用して、システムで使用可能なすべてのサービスのリストを取得できます。

firewall-cmd --get-services

次の出力が得られるはずです:

RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

ステップ3–Firewalldでのサービスの許可と拒否

Firewalldの事前定義されたサービスに基づいて、着信トラフィックを許可および拒否できます。

たとえば、パブリックゾーンのhttpサービスのすべての着信トラフィックを許可するには、次のコマンドを実行します。

firewall-cmd --zone=public --add-service=http

出力:

success

パブリックゾーンでftpサービスの着信トラフィックを許可するには、次のコマンドを実行します。

firewall-cmd --zone=public --add-service=ftp

出力:

success

上記のコマンドはhttpおよびftpサービスを一時的に追加し、再起動時に永続的ではありません。 --permanentを使用する必要があります 以下に示すように、それらを永続的にするオプション:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=ftp
>

次に、次のコマンドを実行して変更を実装します。

firewall-cmd --reload

次のコマンドを使用して、追加されたサービスのリストを取得できるようになりました。

firewall-cmd --permanent --zone=public --list-services

次の出力が表示されます。

cockpit dhcpv6-client ftp http ssh

次のコマンドを使用して、パブリックゾーンに関する詳細情報を確認することもできます。

firewall-cmd --info-zone public

出力:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: cockpit dhcpv6-client ftp http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

上記のサービスをfirewalldから削除/拒否する場合は、--remove-serviceを使用します オプション:

firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --permanent --zone=public --remove-service=ftp
>

次に、次のコマンドを実行して変更を適用します。

firewall-cmd --reload

ステップ4–Firewalldでポートを許可および拒否する

また、firewalldのポートに基づいて着信トラフィックを許可および拒否することもできます。

たとえば、ポート8080および443ですべての着信トラフィックを許可し、次のコマンドを実行します。

firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp

次に、次のコマンドを実行して変更を適用します。

firewall-cmd --reload

次に、次のコマンドを使用して、追加されたポートを確認します。

firewall-cmd --permanent --zone=public --list-ports

出力:

443/tcp 8080/tcp

同様に、上記のポートをfirewalldから削除/拒否し、–remove-portオプションを使用します:

firewall-cmd --permanent --zone=public --remove-port=443/tcp
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

次に、次のコマンドを実行して変更を適用します。

firewall-cmd --reload

ステップ5–ファイアウォールを使用したポートフォワーディング

ポート転送は、IPとポートの組み合わせからリクエストをリダイレクトし、別のIPやポートにリダイレクトするプロセスです。この手法により、リモートマシンはプライベートネットワーク内の特定のサービスに接続できます。

ポートフォワーディングを設定する前に、目的のゾーンでマスカレードをアクティブにする必要があります。 --add-masqueradeを使用してアクティブ化できます オプション:

firewall-cmd --zone=public --add-masquerade

次に、同じサーバー上のポート80からポート8080にトラフィックを転送するには、次のコマンドを実行します。

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080

IPアドレス192.168.1.200のリモートサーバー上のローカルポート80からポート8080にトラフィックを転送する場合は、次のコマンドを実行します。

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200

次に、次のコマンドを実行して変更を適用します。

firewall-cmd --reload

上記のルールを削除する場合は、以下に示すように–addを–removeに置き換えます。

firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080

結論

上記のガイドでは、Firewalldの基本的な概念と、それをLinuxオペレーティングシステムに実装する方法を学びました。これで、firewalldを使用して不要な着信トラフィックを制限できるようになることを願っています。


Linux
  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. AlmaLinux8にFail2banをインストールして設定する方法

  3. Podmanとは何ですか?LinuxにPodmanをインストールする方法

  1. Linux上のFlatpak:それは何であり、それを使ってアプリをインストールする方法

  2. Linuxでのfirewalldの初心者向けガイド

  3. NFSとは何ですか?Linuxにインストールする方法

  1. Linuxファイルコマンド:その機能と使用方法

  2. Linuxテールコマンド:それは何であり、それを使用する方法

  3. LinuxでのIP転送とは何ですか? IP転送を有効にする方法は?