ファイアウォールは、外部ネットワークからの不要なトラフィックからシステムを保護する方法です。無料の商用ファイアウォールツールは豊富にあります。それらのいくつかには、Iptables、UFW、Juniper、pfSense、SonicWallなどが含まれます。
その中で、FirewallDはCentOS / RHEL/Fedoraオペレーティングシステム用の無料のファイアウォールソフトウェアツールです。これはiptablesのフロントエンドコントローラーであり、ファイアウォールルールを実装するためのコマンドラインインターフェイスを提供します。 Iptablesと比較すると、FirewallDはチェーンとルールの代わりにゾーンとサービスを使用し、ルールセットを動的に管理します。 FirewallDは、ランタイムおよび永続的な構成を管理するためのfirewall-cmdコマンドラインツールを提供します。
機能
- IPv4およびIPv6プロトコルをサポートする
- 事前定義されたゾーンリスト
- CLIとグラフィカル構成
- 完全なD-BusAPI
- イーサネットブリッジング
- 拒否されたパケットの単純なログ
- アプリケーションのホワイトリスト
- 人形の統合
このチュートリアルでは、CentOS8でFirewallDを使用してファイアウォールを設定する方法を学習します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいCentOS8VPS
- サーバーで構成されているrootパスワード
ステップ1:Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2:Firewalldをインストールする
dnf install firewalld -y
インストールしたら、次のコマンドを使用して、FirewallDサービスを開始し、システムの再起動時に開始できるようにします。
systemctl start firewalld systemctl enable firewalld
次のコマンドを使用して、FirewallDのステータスを確認することもできます。
firewall-cmd --state
出力:
running
ステップ3:基本的なFirewallDの使用法
FirewallDは、ゾーンを使用して一連のルールを管理します。各ゾーンには、コンピューターが接続されているネットワークに対する信頼のレベルに応じて、パケットを受け入れたり拒否したりするための独自の構成があります。
次のコマンドを使用して、使用可能なすべてのゾーンを一覧表示できます。
firewall-cmd --get-zones
次のリストが表示されます:
block dmz drop external home internal public trusted work
すべてのアクティブゾーンのリストを取得するには、次のコマンドを実行します。
firewall-cmd --get-active-zones
次のリストが表示されます:
public interfaces: eth0 eth1
次のコマンドを使用して、ネットワーク接続に設定されているデフォルトのゾーンを一覧表示できます。
firewall-cmd --get-default-zone
出力:
public
次のコマンドを使用して、デフォルトゾーンをパブリックからホームに変更するには:
firewall-cmd --set-default-zone=home --permanent
次のコマンドを使用してゾーンに関する詳細情報を表示するには:
firewall-cmd --info-zone public
次の出力が得られるはずです:
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 --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 kube-apiserver 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
ステップ4:Firewalldでポートを許可および拒否する
Firewalldは、システムのポートを追加および削除するためのfirewall-cmdコマンドラインツールを提供します。
たとえば、パブリックゾーンでTCPポート80および22を許可するには、次のコマンドを実行します。
firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=22/tcp
次に、FirewallDデーモンをリロードして、構成を保存します。
firewall-cmd --reload
次に、次のコマンドを使用して、追加されたポートを一覧表示します。
firewall-cmd --info-zone public
次の出力が表示されます。
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: 80/tcp 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
オプション–remove-portを使用して、ポートをゾーンから簡単に拒否または削除することもできます。
たとえば、ポート80を拒否するか、パブリックゾーンから削除するには、次のコマンドを実行します。
firewall-cmd --zone=public --permanent --remove-port=80/tcp
ステップ5:FirewallDでサービスを許可および拒否する
FirewallDでポートを使用する代わりに、サービス名で許可および拒否することもできます。
たとえば、次のコマンドを実行して、パブリックゾーンでFTPサービスを許可します。
firewall-cmd --zone=public --permanent --add-service=ftp firewall-cmd --reload
次のコマンドを使用して、FTPサービスを拒否またはパブリックゾーンから削除できます。
:
firewall-cmd --zone=public --permanent --remove-service=ftp firewall-cmd --reload
ステップ6:FirewallDを使用してIPマスカレードを設定する
IPマスカレードは、プライベートIPアドレスを持つネットワーク内のコンピューターがサーバーのアドレスを使用してインターネットと通信できるようにするプロセスまたは方法です。 ISPから追加のIPを購入せずに、別のコンピューターがインターネットと通信できるようにする場合に非常に便利です。
IPマスカレードを設定する前に、次のコマンドでマスカレードがアクティブかどうかを確認してください。
firewall-cmd --zone=public --query-masquerade
以下に示すように、パブリックゾーンでIPマスカレードが無効になっていることがわかります。
no
次に、次のコマンドを使用してIPマスカレードを設定します。
firewall-cmd --zone=public --add-masquerade firewall-cmd --reload
オプション–remove-masquerade:
を使用して、IPマスカレードを無効にすることもできます。firewall-cmd --zone=public --remove-masquerade firewall-cmd --reload
結論
上記のガイドでは、FirewallDを使用してシステム内の不要なトラフィックをブロックする方法を学びました。これで、不要な接続をすべて制限し、サーバーを攻撃者から保護できるようになります。 Atlantic.Net VPSでFirewallDをお試しください!