CentOS7 Firewalldを設定

CentOS7からFirewalldがデフォルトになり、今後iptablesは使わない方向らしい。
実際にはfirewalldが管理インターフェースで、配下でiptablesがフィルタリングを行っているイメージ。

GUIの設定ツール(firewall-config)があるようなので、それを使いたい。

先にサーバーにデスクトップ環境をインストールする必要あり。
今回は”Server with GUI”にしたが、好みで”GNOME Desktop”や”KDE Plasma Workspaces”も選択可能。

# yum -y groupinstall “Server with GUI”

インストール完了までには、少し時間がかかります。

起動モードを graphical.target に変更。

# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
# systemctl get-default
graphical.target
#
    ちなみに、元に戻す場合は、以下のコマンドを実行。

    # systemctl set-default multi-user.target
    Removed symlink /etc/systemd/system/default.target.
    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
    # systemctl get-default
    multi-user.target
    #

再起動します。

# reboot

再起動後、サーバーで「初期セットアップ」画面が表示されます。
「LICENSE INFORMATION」をクリックし、「ライセンス契約に同意します」にチェックを入れ「完了」します。
その後、右下の「設定の完了」をクリック。

登録したユーザの一覧が表示されれば、サーバー用デスクトップ環境「Server with GUI」の導入は完了です。



Firewalldを有効にし、起動し、ステータスを確認。

# systemctl enable firewalld.service
# systemctl start firewalld.service
# systemctl status firewalld.service
#

Firewalld はゾーン単位でフィルタリング設定ができるようです。
デフォルトのゾーンはpublicになっています。今回はそのままpublicに対して設定します。

Ubuntuデスクトップ上の PuTTY SSH Client でリモート接続して、FirewalldのCGUツール(firewall-config)を使いたいと思います。
(Windowsの場合はXmingかCygwinを導入する必要があるようで、ひと手間かかりそうです。)

先にサーバ側で、sshdの設定を変更します。

# nano -K /etc/ssh/sshd_config

X11Forwardingを検索し、先頭のコメントアウト(#)を削除します。

X11Forwarding yes

sshdを再起動します。

# systemctl restart sshd.service

Ubuntuクライアントで、PuTTY SSH を起動し、左ペインでSSHのX11設定画面を表示。

「Enable X11 Forwarding」にチェックをいれ、設定を保存し、サーバーに接続します。

rootでログインし、パスワードを入れ、プロンプトが表示されたら、以下のコマンドを実行し、Firewalld 設定ソフトウェア「firewall-config」(GUIアプリ)を起動します。

# firewall-config &
[1] 3413
#

「firewall-config」の後の「 &」はGUIアプリを複数起動したい場合に指定します。
GUIアプリ起動後にカーソルがプロンプトに戻り、次の入力が可能です。
[1] 3413 は、最初のカッコ内の数字が起動アプリの番号で、次がPID(プロセスID)です。

    ** (firewall-config:3413): WARNING **: Couldn’t connect to accessibility bus: Failed to connect to socket /tmp/dbus-1DdzXWqso7: 接続を拒否されました
    #

    上記のワーニングメッセージが表示されますが、以下のアプリが起動し、正常に使えました。
    「Failed to connect to socket」関連のワーニングはたくさん報告されているようです。
    firewall-configの動作には実害のないBUGと思われるので、今のところ無視しておきます。

「ファイアウォールの設定」というタイトルでGUIアプリが起動します。
(サーバー機のデスクトップ環境で実行する場合は、管理者ユーザでログイン後「アプリケーション」メニューから「諸ツール」の「ファイアウォール」をクリックします。)

標準ゾーンとして「public」が選択されています。変更したい場合は、左下の「Change Zone」ボタンから・・・。

デフォルトでは、sshのみチェックされていました。・・・通過させたいサービスにチェックを入れます。

上部の設定:プルダウンリストは「実行時」と「永続」が選択できます。
「実行時」だけの設定では、rebootで設定が消えてしまうとの事。

とりあえず「実行時」で必要なサービスにチェックを入れ終わったら、「オプション」メニューの最下部「永続的にする実行時設定」を選択すると、「実行時」の内容が「永続」にコピーされ、同一な状態になります。
設定は即時反映されるようです。

特定のサービスでポートを開放したい場合は、「永続」「サービス」「ポート」で行います。

ここでは、「ftp」のパッシブ転送用にポート60000-60030を開放。

送信先(接続相手)を制限したい場合は「永続」「サービス」「送信先」で行います。

「IPv4」を押して、アドレス/マスクの形式で設定します。
ここでは、「192.168.1.0/24」とし、LAN内PCからの接続のみに制限。
アドレス/マスクの意味はこちらのサイトでの説明が解りやすかったです。

上記ふたつの「永続」的な設定を、「実行時」の設定に反映させるために、「オプション」メニューの最上部「Firewalldの再読み込み」を選択します。

設定を終えたら、「ファイル」メニューの「終了」で閉じます。

SSH接続ターミナルのプロンプトに戻ったら、Firewalldを再起動し、ステータス表示を確認します。

# systemctl restart firewalld.service
# systemctl status firewalld.service -l
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 土 2016-12-24 21:15:19 JST; 6min ago
Docs: man:firewalld(1)
Main PID: 21345 (firewalld)
CGroup: /system.slice/firewalld.service
mq21345 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid

12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete FORWARD –destination 192.168.122.0/24 –out-interface virbr0 –match conntrack –ctstate ESTABLISHED,RELATED –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete FORWARD –source 192.168.122.0/24 –in-interface virbr0 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete FORWARD –in-interface virbr0 –out-interface virbr0 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete FORWARD –out-interface virbr0 –jump REJECT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete FORWARD –in-interface virbr0 –jump REJECT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete INPUT –in-interface virbr0 –protocol udp –destination-port 53 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete INPUT –in-interface virbr0 –protocol tcp –destination-port 53 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete OUTPUT –out-interface virbr0 –protocol udp –destination-port 68 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete INPUT –in-interface virbr0 –protocol udp –destination-port 67 –jump ACCEPT’ failed:
12月 24 21:15:20 a21-hp.com firewalld[21345]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -w –table filter –delete INPUT –in-interface virbr0 –protocol tcp –destination-port 67 –jump ACCEPT’ failed:
#

interface virbr0 でワーニングメッセージが表示されました。
KVM(Kernel-base Virtual Machine)導入時に作成されるブリッジインターフェース(virbr0)のようです。
今回は使わないので、停止し、無効化しておきます。

# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.52540029ceb3 yes virbr0-nic
#
# virsh net-destroy default
ネットワーク default は強制停止されました

# brctl show
bridge name bridge id STP enabled interfaces
#
# virsh net-autostart default –disable
ネットワーク default の自動起動設定が解除されました

# virsh net-list –all
名前 状態 自動起動 永続
———————————————————-
default 停止状態 いいえ (no) はい (yes)

#

ワーニングが消えたか再度確認。

# systemctl restart firewalld.service
# systemctl status firewalld.service -l
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 土 2016-12-24 21:21:47 JST; 5s ago
Docs: man:firewalld(1)
Main PID: 21681 (firewalld)
CGroup: /system.slice/firewalld.service
mq21681 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid

12月 24 21:21:47 a21-hp.com systemd[1]: Starting firewalld – dynamic firewall daemon…
12月 24 21:21:47 a21-hp.com systemd[1]: Started firewalld – dynamic firewall daemon.
#

・・・とりあえず、ファイアウォールの設定も完了。