Edited at

CentOS7,firewalldでhttpとsshだけ許可する設定

More than 1 year has passed since last update.


CentOS7,firewalldでhttpとsshだけ許可する設定

インフラエンジニアインターンが実際にやってみて、苦戦したところ、理解したところまでまとめます。


仕様環境

PCのOS:Windows10

使用したソフト:VMware(仮想環境にCentOS7をインストール)、Tera Term


苦戦したところ

・Firewalldを起動します。その後、次回以降サーバ起動時に自動でfirewalldが起動するよう設定します。

[root@localhost ~]# systemctl start firewalld #サービスを起動するコマンド

[root@localhost ~]# systemctl enable firewalld #自動起動設定
[root@localhost ~]# firewall-cmd --get-default-zone #firewalldのコマンド
FirewallD is not running #firewalldが起動してない!!??

firewalldのコマンドを実行すると、何故だか出来ませんでした。

・firewalldが起動してるか確認しました。

[root@localhost ~]# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 水 2016-11-02 17:59:18 JST; 4min 23s ago
Process: 768 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 768 (code=exited, status=0/SUCCESS)

中程にあるActive: inactive (dead)に注目してほしいのですが、もし起動して

いた場合はActive: active (running)となるはずなので、死んでます。悲しい。

原因は調べてもわからなくてとても長いこと苦戦していましたが、アドバイスを頂き解決出来ました。



[root@localhost ~]# yum update

をサーバ構築してから一回もやっていなかったために、出来なかったようです。

yumはiPhoneでいうApple Storeのようなアプリやサービスを管理するもので、

インストールアンインストールアップデート等ができます

サーバを新しく構築する際は、最初に忘れずにyum updateしましょう。


firewalldの設定

では、気を取り直して再起動して作業再開です。


firewalldの起動確認

firewalldの起動確認をしてみると

[root@localhost ~]# 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 水 2016-11-02 18:46:02 JST; 1min 49s ago
Main PID: 762 (firewalld)
CGroup: /system.slice/firewalld.service
mq762 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Active: active (running)とありましたので、無事起動しています。


デフォルトゾーンの設定

CentOS7からはfirewalldの設定で、firewalld-cmdというfirewalld専用コマンドを用います。

興味がある方は、今回使った他にもいろいろありますので、調べてみて下さい。

firewalldにはゾーンが9つあり、それに振り分けることでサービスを許可したり拒否したり出来るようですね。

今回はhttpとsshだけ許可し、それ以外は拒否する設定をします。

まずデフォルトゾーンをpublicからdropにして、デフォルトでサービスを拒否するようにします。

[root@localhost ~]# firewall-cmd --get-default-zone #今のデフォルトゾーンを表示

public
[root@localhost ~]# firewall-cmd --set-default-zone=drop #デフォルトゾーンの設定
success


httpとsshの許可設定

その後、httpとsshだけ許可のゾーンに入れてあげます。

**注意**--permanentを入れないと再起動したときに設定が戻ってしまうので注意してください。

[root@localhost ~]# firewall-cmd --add-service=http --permanent #httpを許可

success
[root@localhost ~]# firewall-cmd --add-service=ssh --permanent #sshを許可
success
[root@localhost ~]# firewall-cmd --list-all-zones #どのゾーンに何が入ってるか確認
長いので省略
[root@localhost ~]# firewall-cmd --reload #設定を適用するために再起動

これで設定は終わりです。

httpとsshが許可されているか実際に接続して試してみましょう。

読んで頂きありがとうございました。

firewalldのコマンドやゾーン、基本設定で参考にしたサイトも載せておきます。

http://www.unix-power.net/centos7/firewalld.html

https://www.server-world.info/query?os=CentOS_7&p=firewalld