CentOSでfirewalldを構築する

なぜ今まで出さなかったのかと不思議でしょうがないのですが、ちょっとセキュリティ面な投稿もしておかないとです。こんばんわ、Web担当 神凪です。
セキュリティ(?)記事でTripwireの記事を投稿済みではありますが、まだまだ基本的な部分を抑えていないですね。
今回はネットワークへの門番的役割をもつ、ファイアウォールを取り上げます。

大きな企業だとファイアウォールをアプライアンス、専用機器として取り入れていることが多いです。
しかしNCEやスタートアップ、個人サーバだったりするとアプライアンスなんてまず無理。そもそもVPSだとサーバがその入り口だったりしますしね。とはいうものの水際対策は大事。

そこでCentOS7からデフォルトファイアウォールとなっているfirewalldで対策を行います。
CentOS6以前や他のOSで使用されていたかもしれないiptablesとは共存できないので注意してください。

目標

  • firewalldによるファイアウォール機能を動作させる

環境

  • CentOS7.4

準備

  • CentOS初期設定が完了していること

手順

iptablesの無効化

初期設定で無効化はしているかもしれませんが、念のため。

systemctl stop iptables
systemctl disable iptables
systemctl is-enabled iptables

enabled出力がなければOKです。

wirewalldの有効化

こちらももしかすると無効化しているかもしれません。
改めてインストールと有効化を行います。

yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld
systemctl is-enabled firewalld

enabled出力があればOKです。

基本的な使用方法

iptablesと違い、解放/閉鎖するポートもしくはサービスを、1つずつコマンドで指示していく形をとります。

# sshを追加
firewall-cmd --permanent --zone=public --add-service=ssh

# ポート22番を追加
firewall-cmd --permanent --zone=public --add-port=22/tcp

# sshを削除
firewall-cmd --permanent --zone=public --remove-service=ssh

# ポート22番を削除
firewall-cmd --permanent --zone=public --remove-port=22/tcp

# リロード
firewall-cmd --reload

# 設定を確認
firewall-cmd --list-all

[SandBox]で使っている例ではこうなります。

# http (80) https (443)
firewall-cmd --permanent --zone=public --add-service=http
# jenkins (8080)
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all

思ったより簡単でした。

追記 2018/08/12

firewalldをインストールした後、起動できなくなるバグ?があるようです。
messagesには以下のように記録されます。

Aug 12 02:07:18 CENTOS systemd: Starting firewalld - dynamic firewall daemon...
Aug 12 02:07:18 CENTOS firewalld[4074]: ERROR: Exception DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.39" is not allowed to own the service "org.fedoraproject.FirewallD1" due to security policies in the configuration file

どうもdbusとうまいこと連携できていないようで発生する現象のようですよ。
ですので、以下のコマンドで起動できるようになるかもしれません。

systemctl restart dbus
systemctl restart firewalld

終わりに

ポート番号ではなく、サービスでも指定できるのは助かりますね!
必要なポートやサービス分だけ解放するようにしましょう。

Special Thanks!

CloudGarage Dev Assist Program協力のもと、NCEでSandbox、実験場を作成しました。
試せるシステムに限りはありますが、ぜひお試しくださいませ

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください