Linux管理者-ファイアウォールの設定
Firewalldは、CentOS上のiptablesのデフォルトのフロントエンドコントローラーです。firewalldフロントエンドは、生のiptablesの上2つの主な利点を有しています-
チェーンとルールを抽象化するゾーンを構成および実装するのが簡単です。
ルールセットは動的です。つまり、設定が変更または変更されても、ステートフル接続は中断されません。
Firewalldはiptablesのラッパーであり、代替ではないことを忘れないでください。カスタムiptablesコマンドはfirewalldで使用できますが、ファイアウォール機能を壊さないようにfirewalldを使用することをお勧めします。
まず、firewalldが開始されて有効になっていることを確認しましょう。
[root@CentOS rdc]# 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 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
ご覧のとおり、firewalldはアクティブ(起動時に開始)であり、現在実行中です。非アクティブまたは開始されていない場合は、-を使用できます
systemctl start firewalld && systemctl enable firewalld
これでfirewalldサービスが構成されたので、それが機能していることを確認しましょう。
[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#
ご覧のとおり、firewalldサービスは完全に機能しています。
Firewalldはゾーンの概念に基づいて機能します。ゾーンは、ネットワークマネージャーを介してネットワークインターフェイスに適用されます。これについては、ネットワークの構成で説明します。ただし、現時点では、デフォルトで、デフォルトゾーンを変更すると、デフォルト状態の「デフォルトゾーン」のままになっているネットワークアダプタが変更されます。
すぐに使用できるfirewalldの各ゾーンを簡単に見てみましょう。
シニア番号 | ゾーンと説明 |
---|---|
1 | drop 信頼レベルが低い。すべての着信接続とパケットがドロップされ、ステートフルネスを介して発信接続のみが可能になります |
2 | block 着信接続には、要求が禁止されていることをイニシエーターに通知するicmpメッセージが返信されます。 |
3 | public すべてのネットワークが制限されています。ただし、選択した着信接続は明示的に許可できます |
4 | external NAT用にfirewalldを設定します。内部ネットワークはプライベートのままですが、到達可能です |
5 | dmz 特定の着信接続のみが許可されます。DMZ分離のシステムに使用されます |
6 | work デフォルトでは、システムが安全な作業環境にあると仮定して、ネットワーク上のより多くのコンピューターを信頼します |
7 | hone デフォルトでは、より多くのサービスがフィルタリングされていません。システムがNFS、SAMBA、SSDPなどのサービスが使用されるホームネットワーク上にあると仮定します |
8 | trusted ネットワーク上のすべてのマシンが信頼されています。ほとんどの着信接続は自由に許可されます。This is not meant for interfaces exposed to the Internet |
使用する最も一般的なゾーンは、パブリック、ドロップ、職場、および自宅です。
各共通ゾーンが使用されるいくつかのシナリオは次のとおりです。
public−管理者が使用する最も一般的なゾーンです。これにより、カスタム設定を適用し、LANでの操作に関するRFC仕様に従うことができます。
drop−ドロップを使用するタイミングの良い例は、セキュリティ会議、パブリックWiFi、またはインターネットに直接接続されたインターフェイスです。dropは、ICMPプローブを含むすべての一方的な要求が悪意のあるものであると想定します。したがって、州外のリクエストは返信を受け取りません。ドロップの欠点は、厳密なRFCコンプライアンスを必要とする特定の状況でアプリケーションの機能を壊す可能性があることです。
work−半安全な企業LANを使用しています。すべてのトラフィックが適度に安全であると見なすことができる場所。これは、WiFiではなく、IDS、IPS、物理的セキュリティまたは802.1xが導入されている可能性があることを意味します。また、LANを使用する人々にも精通している必要があります。
home−ホームLANを使用しています。LAN上のすべてのシステムとユーザーに対して個人的に責任があります。LAN上のすべてのマシンを知っており、侵害されたものはありません。多くの場合、信頼できる個人間でメディアを共有するために新しいサービスが提供され、セキュリティのために余分な時間をかける必要はありません。
ゾーンとネットワークインターフェイスは、1対多のレベルで機能します。1つのネットワークインターフェースには、一度に1つのゾーンしか適用できません。一方、ゾーンは多くのインターフェースに同時に適用できます。
利用可能なゾーンと現在適用されているゾーンを見てみましょう。
[root@CentOS]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
カスタマイズされたルールをfirewalldに追加する準備はできましたか?
まず、外部からのポートスキャナーに対して、ボックスがどのように見えるかを見てみましょう。
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
ポート80への着信要求を許可しましょう。
まず、デフォルトで適用されているゾーンを確認します。
[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#
次に、ポート80を許可するルールを現在のデフォルトゾーンに設定します。
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#
次に、ポート80の接続を許可した後、チェックボックスをオンにします。
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
80までの一方的なトラフィックを許可するようになりました。
デフォルトのゾーンをドロップして、ポートスキャンがどうなるか見てみましょう。
[root@CentOS]# firewall-cmd --set-default-zone=drop
success
[root@CentOS]# firewall-cmd --get-default-zone
drop
[root@CentOs]#
次に、より安全なゾーンでネットワークインターフェイスを使用してホストをスキャンしましょう。
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
これで、すべてが外部からフィルタリングされます。
以下に示すように、ホストはドロップ時にICMPping要求に応答することさえありません。
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
デフォルトのゾーンを再びパブリックに設定しましょう。
[root@CentOs]# firewall-cmd --set-default-zone=public
success
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
それでは、現在のフィルタリングルールセットを公開して確認しましょう。
[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@CentOS rdc]#
構成されているように、ポート80フィルタールールは実行中の構成のコンテキスト内にのみあります。これは、システムが再起動されるか、firewalldサービスが再起動されると、ルールが破棄されることを意味します。
間もなくhttpdデーモンを構成するので、変更を永続的にしましょう-
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@CentOS]# systemctl restart firewalld
[root@CentOS]#
これで、パブリックゾーンのポート80ルールは、再起動とサービスの再起動の間も保持されます。
以下は、firewall-cmdで適用される一般的なfirewalldコマンドです。
コマンド | アクション |
---|---|
ファイアウォール-cmd--get-zones | インターフェイスに適用できるすべてのゾーンを一覧表示します |
Firewall-cmd —ステータス | Firewalldサービスの現在のステータスを返します |
ファイアウォール-cmd--get-default-zone | 現在のデフォルトゾーンを取得します |
Firewall-cmd --set-default-zone = <zone> | デフォルトゾーンを現在のコンテキストに設定します |
ファイアウォール-cmd--get-active-zone | インターフェイスに適用されたコンテキストで現在のゾーンを取得します |
Firewall-cmd --zone = <zone> --list-all | 提供されたゾーンの構成を一覧表示します |
Firewall-cmd --zone = <zone> --addport = <ポート/トランスポートプロトコル> | ゾーンフィルターにポートルールを適用します |
-永続的 | ゾーンへの変更を永続的にします。フラグは変更コマンドとインラインで使用されます |
これらは、firewalldの管理と構成の基本的な概念です。
CentOSでホストベースのファイアウォールサービスを構成することは、より高度なネットワークシナリオでは複雑な作業になる可能性があります。CentOSでのfirewalldとiptablesの高度な使用法と構成には、チュートリアル全体が必要です。ただし、日常のタスクの大部分を完了するのに十分な基本事項を示しました。