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の高度な使用法と構成には、チュートリアル全体が必要です。ただし、日常のタスクの大部分を完了するのに十分な基本事項を示しました。