Help us understand the problem. What is going on with this article?

Docker : firewalldでssh, http, httpsのみ許可する。(CentOS 7)

More than 1 year has passed since last update.

CentOSでfirewallを設定して、ポート制御をしてみます。
許可するのは、ssh,http,httpsの3でつです。

■ env

docker container内で作業します。環境は以下です。

centos
[root@1669e8191ed0 /]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) 

[root@1669e8191ed0 /]# uname -a
Linux 1669e8191ed0 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

■ Docker起動時の注意

firewallの起動確認などの際に、systemctlコマンドを多用するのですが普通に起動すると使えないので以下のコマンドのように--privilegedコマンドをつけて起動してください。

$ docker run --privileged --name centos -d centos /sbin/init
e510cafea520e0688bbf6ed7b9525229fb6f5d873f080af73e711d324a19be32
$ docker exec -ti centos bash

参考 : https://qiita.com/setouchi/items/6bfa116fc5a266856177

■ fiewwallをインストールします。※入っていない場合

通常どおり、yum installでインストールします。

[root@e510cafea520 etc]# yum -y install firewalld
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net

~中略~

■ 起動確認

ステータスの確認は、以下のコマンドで可能です。
$ systemctl status firewalld

[root@e510cafea520 etc]# 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 Mon 2018-09-24 04:20:16 UTC; 2s ago
     Docs: man:firewalld(1)
  Process: 178 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 178 (code=exited, status=0/SUCCESS)

Sep 24 04:20:00 e510cafea520 systemd[1]: Starting firewalld - dynamic firewall daemon...

firewalldをサーバ起動時に自動実行させておくとSSHができなくなるため一度停止しておきます。

$ systemctl stop firewalld
$ systemctl list-unit-files | grep firewalld

[root@e510cafea520 etc]# systemctl stop firewalld
[root@e510cafea520 etc]# systemctl list-unit-files | grep firewalld
firewalld.service                      disabled //停止中

■ デーモン起動 & 利用可能な『Service』と『Port』を確認する。

では、設定していきますので、一度firewalldを起動します。

$ systemctl start firewalld.service

[root@e510cafea520 etc]# systemctl start firewalld.service //起動
[root@e510cafea520 etc]# systemctl list-unit-files |grep firewalld
firewalld.service                      disabled
[root@e510cafea520 etc]# systemctl start firewalld.service
[root@e510cafea520 etc]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-09-24 04:26:18 UTC; 14s ago
     Docs: man:firewalld(1)
 Main PID: 250 (firewalld)
   CGroup: /docker/e510cafea520e0688bbf6ed7b9525229fb6f5d873f080af73e711d324a19be32/system.slice/firewalld.service
           └─250 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
           ‣ 250 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Sep 24 04:26:18 e510cafea520 systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 24 04:26:18 e510cafea520 systemd[1]: Started firewalld - dynamic firewall daemon.

利用可能サービスとポート確認
以下のコマンドで、現状利用可能なServiceとPortが確認できます。

Service
$ firewall-cmd --list-services

Port
$ firewall-cmd --list-ports

[root@e510cafea520 etc]# firewall-cmd --list-services
ssh dhcpv6-client
[root@e510cafea520 etc]# firewall-cmd --list-ports

[root@e510cafea520 etc]#

■ http, httpsを追加していきます。

では、現状は上のコマンドでsshは開放されているのでhttp,httpsを追加していきます。

# Service add
$ firewall-cmd --add-service=http
$ firewall-cmd --add-service=https
# 再起動時にも自動実行されるように設定
$ firewall-cmd --permanent --zone=public --add-service=http
$ firewall-cmd --permanent --zone=public --add-service=https
[root@kusanagi71 ~]# firewall-cmd --add-service=http
success
[root@kusanagi71 ~]# firewall-cmd --add-service=https
success

[root@kusanagi71 ~]# firewall-cmd --list-services
dhcpv6-client http ssh https

# 再起動して再度確認
[root@kusanagi71 ~]# systemctl restart firewalld.service
[root@kusanagi71 ~]# firewall-cmd --list-services
dhcpv6-client http ssh https

以上です。無事、設定できました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした