CentOS 7で firewalld の設定 - 株式会社CoLabMix

CentOS 7で firewalld の設定

CentOS 7で今まで使用していた iptables のサービスが firewalld に変更されています。

サービスとしては利用しやすいのですが、今までの慣れてきたものが変更になったので一通りの確認など。

まずはvagrantに素の状態で入れたCentOSに試してみます。

 

ここは動いていないのでしょうがありません。

 

初期段階では「ssh」と「dhcpv6-client」のみが許可されていますね。

Activeなゾーンとしてpublicというソーンに初期では設定が入っており、そちらにeth0が割り当てされています。

あらかじめ9個のゾーンが設定されています。

ゾーン名 概要
public サーバとして最低限必要な受信許可ルール。全てのインタフェースはデフォルトでpublicゾーンに所属している
work 業務用クライアントPCとしての利用を想定したルール。社内LAN内で使う場合を想定している。クライアントPCに求められる必要最低限のルールが定義されている
home 家庭用クライアントPCとしての利用を想定したルール。家庭内LANに接続して使う場合を想定している
internal Linuxを用いてファイアウォールを構築するのに使うルール。内部ネットワークのインタフェースに設定する
external 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、外部ネットワークのインタフェースに対して設定する
dmz 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、DMZのインタフェースに対して設定する
block 受信パケットを全て拒否するルール。送信パケットの戻り通信は許可される
drop 受信パケットを全て破棄するルール。送信パケットの戻り通信は許可される
trusted 全ての通信を許可するルール

 

★参考
http://www.atmarkit.co.jp/ait/articles/1602/18/news019.html

ここでは「ssh」のポートを20022に変更して、「dhcpv6-client」を停止しているという状況で、HTTPとHTTPSのサービスを追加するという流れを行なってみます。

 

「--permanent」オプションをつけることで再起動後も有効にしています。

同じように状態の確認をしてみます。

 

特定のNWからのアドレスの許可なども行なっておきます。

 

この辺だけだと少し不安なのでセキュリティ設定など。

iptablesの呼び出しができるので、さくらさんにあった攻撃対策のルールを入れておきます。
https://help.sakura.ad.jp/hc/ja/articles/206208121-iptables%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95

firewalld では iptables に取って代わったというより、firewalld が iptables の設定を管理してくれるようです。

 

ちなみに上から以下のルールになります。
①データを持たないパケットの接続を破棄する
②SYNflood攻撃と思われる接続を破棄する
③ステルススキャンと思われる接続を破棄する

統計情報などは以下で確認します。

 

iptables のコマンドが使えると自由度が高いですね。

以下のブログのようにDDOS対策として、SMTPへの大量の接続を制御しているケースもありました。

FirewalldでPostfixへのDDOS攻撃を遮断する

 

設定の幅が広いです。

最後に自動起動の設定をしておきます。

 

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

     

    関連記事

    1. AWSのLambdaでScrapyを動かす その3 - dynamod…

    2. CentOS7でscrapy-splashを使ってJavaScript…

    3. SublimeText3でリモートのサーバ上にあるファイルを開いたり編…

    4. LPIC 101を受験してみました。

    5. VagrantでCentOS7の環境を作る

    6. 【Django】入力フォームの増減機能からDBに保存する方法