LoginSignup
49
47

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-11-08

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

49
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
47