【CentOS 7】ファイアウォール(Firewall)について説明します!
今日は、CentOS 7 のファイアウォール(Firewall)について説明します。
特定のアプリケーションのパケットを通過させる設定まで説明します(^o^)
目次
スポンサーリンク
ファイアウォールとは
ファイアウォールとは、サーバへのパケットの通過を制限させるためのものです。
全てのパケットをサーバへ通過させることはセキュリティ上、とてもとても危険なことです。なので、これを用いて悪意のあるパケットを通さないようにします。
因みにファイアウォールとは、英語で「防火壁」の意味です。
ファイアウォールを確認してみよう
早速、自分のサーバ(CentOS 7)のファイアウォールがどうなっているのかを確認してみましょう。
現在のファイアウォールの状態を確認するには、firewall–cmd —list–all を使用します。
[meideru@localhost ~]$ firewall-cmd --list-all public (default, active) interfaces: enp0s25 sources: services: dhcpv6-client ftp http samba ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
重要なのは、2行目と5行目です。
2行目を見ると、現在のゾーンはpublicになっていることがわかります。ゾーンとは、セキュリティのレベルと思ってください。publicの他にもhomeなどがあります。これは、後で確認してみましょう。
5行目のservicesは、パケットの通過を許可するアプリケーションを意味します。つまり、上の状態だとdhcpv6-client、ftp、http、samba、sshのパケットは通過させる設定になっています。
重要なのは以上の2つです。
次に、他のゾーンも確認してみましょう。
全てのゾーンのファイアウォールを確認するには、firewall-cmd –list-all-zones を使用します。
[meideru@localhost ~]$ firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: dmz interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: drop interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: external interfaces: sources: services: ssh ports: masquerade: yes forward-ports: icmp-blocks: rich rules: home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: internal interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: public (default, active) interfaces: enp0s25 sources: services: dhcpv6-client ftp http samba ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: trusted interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: work interfaces: sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
色々なゾーンがありますね・・・。
これらのゾーンは切り替えることができます。
ファイアウォールの設定を反映させる方法
まず初めにファイアウォールの設定を反映させる方法を書いておきます。
ファイアウォールを設定した後は、ファイアウォールを再読み込みするか、サーバを再起動しなければいけません。サーバは年中無休で動き続けなければならないケースが多いので、ここでは前者の再読み込みをします。
ファイアウォールを再読込するには、firewall-cmd –reload を使用します。
[meideru@localhost ~]$ sudo firewall-cmd --reload success
特定のアプリケーションのパケットを通過させる方法
特定のアプリケーションのパケットを通過させるには、firewall-cmd –permanent –add-service=(アプリケーション名) –zone=(ゾーン名) を使用します。
–permanent を付けることによって、サーバ再起動後も継続してパケットを通過させる設定にすることができます。
試しに、Apacheのパケットを通過させる設定を行ってみましょう。Apacheはhttpというアプリケーション名なので、そちらを設定します。
[meideru@localhost ~]$ sudo firewall-cmd --permanent --add-service=http --zone=public success [meideru@localhost ~]$ sudo firewall-cmd --reload success
publicゾーンにファイアウォールを設定しています。
特定のアプリケーションのパケットの通過を解除する方法
今度は、上の逆です。上では特定のアプリケーションのパケットの通過を許可する設定をしましたが、今度は逆に解除したいと思います。
例えば、現在のファイアウォールは以下のように設定されていたとします。
[meideru@localhost ~]$ firewall-cmd --list-all public (default, active) interfaces: enp0s25 sources: services: dhcpv6-client ftp http samba ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
sambaのパケットは通過できるように設定されていますが、これを外したいと思います。
外すには、firewall-cmd –permanent –remove-service=(サービス名) –zone=(ゾーン名)を使用します。
[meideru@localhost ~]$ sudo firewall-cmd --permanent --remove-service=samba --zone=public success
これで解除されました。ファイアウォールを再読み込み(firewall-cmd –reload)して確認してみましょう!
[meideru@localhost ~]$ firewall-cmd --list-all public (default, active) interfaces: enp0s25 sources: services: dhcpv6-client ftp http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
OK!!
特定のポートを開放する方法
特定のポートを開くには、firewall-cmd –permanent –add-port=(ポート番号) –zone=(ゾーン名) を使用します。
[meideru@localhost ~]$ sudo firewall-cmd --permanent --add-port=25565/tcp --zone=public success
とりあえず、25565というポートを開放してみました。これは成功です。
因みに、25565はマインクラフトのサーバで使用されるポートです。
特定のポートを閉じる方法
上の逆です。
特定のポートを閉じるには、firewall-cmd –permanent –remove-port=(ポート番号) –zone=(ゾーン名) を使用します。
上で設定した25565ポートを閉じてみましょう。
[meideru@localhost ~]$ sudo firewall-cmd --permanent --remove-port=25565/tcp --zone=public success
開放されているポートの確認方法
ファイアウォールの話からは少しズレますが・・・。一応、開放されているポートの確認方法も書いておきます。
開放されているポートを確認するにはssコマンドを使用します。
[meideru@localhost ~]$ sudo ss -l (結果は略)
-l というオプションを付けることで、開いているポートを確認することができます。
長いので結果は省略します。
こんなところです!
ノシ
スポンサーリンク
関連記事