【tech】centos7のfirewallにzoneを追加するメモ

CentOS7を使用していて、publicのzoneを残したままfirewallにオリジナルのfirewallのzoneを追加する方法を調べたメモです。CentOS7からfirewalldになっているのでCetOS6で使い慣れている人には少し使いづらいですね、

以下、CentOSのFirewalldで独自のゾーンを追加する方法です。

環境


CentOS7.5
追加するfirewallのZONE:Manage


・ゾーンの確認
firewall-cmd --get-zones
→ここに独自の「manage」というzoneを追加しようと思います。

・全てのzoneとzone毎の設定内容を確認
firewall-cmd --list-all-zones

・既存のzoneファイルディレクトリへ移動
cd /etc/firewalld/zones/

・既存ファイルを確認
ls

・punbicファイルをコピーして独自のzoneを定義する。
cp -p public.xml manage.xml
(-pオプションは権限なども丸ごとコピーみたいな感じです。詳しくはググってください笑)

・ファイルが作られたことを確認
ls

・viで開いて編集します
vi manage.xml

以下はサンプルです。
編集した所は
「short」タグ「description」タグのところです

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Manage</short>
  <description>Custom Zone. Only allow ssh connection from Manage.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
</zone>

・編集内容を確認します
cat manage.xml

・編集後はfirewalldを再起動すればzoneが追加されます。
systemctl restart firewalld

・作成したゾーンが追加されているか確認
firewall-cmd --get-zones

以下作業ログです


[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:

home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

internal
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

trusted
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

work
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# cd /etc/firewalld/zones/
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# ls
public.xml
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# cp -p public.xml manage.xml
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# ls
manage.xml public.xml
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# vi manage.xml

"manage.xml" 7L, 315C<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers  on networks to not harm your computer. Only selected incoming connections aree accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
</zone>

[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# cat manage.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Manage</short>
  <description>Custom Zone. Only allow ssh connection from Manage.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
</zone>

[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# systemctl restart firewalld
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# firewall-cmd --get-zones

block dmz drop external home internal manage public trusted work
[root@localhost zones]#
[root@localhost zones]#
[root@localhost zones]# exit

【tech】CentOS7のfirewalld設定まとめメモ



※2018/12/13更新!

プライベートで使っているワークステーションのインターフェースに新しくfirewallのzone追加やIPアドレスを指定して許可などの設定を入れてみたかったので色々と調べた事をメモしています。

そういえば、新しくCentOS7.6もリリースされたようなので、早いうちに触っておこうと思います!

Redmine4もリリースされたし早く触りたいんだけど、、、
Redmine4インストールしました!
この浮気癖、いいかげん治さなきゃまずいのかな・・泣


環境

ワークステーション:HP z800
ホストOS:CentOS7.5
interface1:enp0s3(192.168.100.1)
interface2:enp0s8(192.168.200.1)
firewallへ追加したZONE:manage
manageZONEへ割り当てたインターフェース:enp0s3




CentOSのFirewalldで独自のゾーンを追加する方法。

・ゾーンの確認
firewall-cmd --get-zones
→ここに独自の「manage」というzoneを追加しようと思います。

・全てのzoneとzone毎の設定内容を確認
firewall-cmd --list-all-zones

・既存のzoneファイルディレクトリへ移動
cd /etc/firewalld/zones/

・punbicファイルをコピーして独自のzoneを定義する。
cp -p public.xml manage.xml
(-pオプションは権限なども丸ごとコピーみたいな感じです。詳しくはググってください笑)

・viで開いて編集します
vi manage.xml

以下はサンプルです。
編集した所は
「short」タグ「description」タグのところです


<?xml version="1.0" encoding="utf-8"?> <zone> <short>Manage</short> <description>Custom Zone. Only allow ssh connection from Manage.</description> <service name="dhcpv6-client"/> <service name="ssh"/> </zone>



・編集後はfirewalldを再起動すればzoneが追加されます。
systemctl restart firewalld

・作成したゾーンが追加されているか確認
firewall-cmd --get-zones


補足

・下記コマンドでもzone追加できます。
firewall-cmd --permanent --new-zone=manage2

※削除するとき
firewall-cmd --permanent --delete-zone=manage2

・追加の反映
systemctl restart firewalld

・作成したゾーンが追加されているか確認
firewall-cmd --get-zones


サービスの追加

・新規で作ったzoneにsshサービスの許可を追加
firewall-cmd --permanent --add-service=ssh --zone=manage

・targetをacceptへ変更
firewall-cmd --permanent --zone=manage --set-target=ACCEPT
#(このコマンドだと全て許可になってしまう・・?もう少し調べる。)

・ZoneへIPアドレス指定で許可
firewall-cmd --permanent --add-source=192.168.100.101 --zone=manage

・NW単位で指定も可能
firewall-cmd --permanent --add-source=192.168.200.0/24 --zone=manage

・firewallのリロード(このコマンドでも作成した設定の反映が可能)
firewall-cmd --reload

・全てのzoneとzone毎の設定内容を表示させる
firewall-cmd --list-all-zones



サービス追加・port追加


・FTPの追加
firewall-cmd --add-service=ftp --permanent

・port指定して追加(FTPサービスで使用するport追加)
firewall-cmd --add-port=4000-4020/tcp --permanent


参考(削除の場合)

・サービスの削除(FTPサービスを削除)
#firewall-cmd --remove-service=ftp --permanent

・port指定して削除(FTPサービスで使用するport削除)
firewall-cmd --remove-port=4000-4020/tcp --permanent


・firewallのリロード(作成した設定の反映)
firewall-cmd --reload

・interface「enp0s3」に適用されているzoneを確認する
firewall-cmd --get-zone-of-interface=enp0s3
→public

・interface「enp0s3」アクティブゾーンをmanageへ変更
firewall-cmd --zone=manage --change-interface=enp0s3 --permanent
→The interface is under control of NetworkManager, setting zone to 'manage'.
success
が出たらOKです。

指定のIPアドレスからのみSSHアクセスを許可したい場合




rich-ruleを使う。

・設定状況の確認
firewall-cmd --list-all

・sshを削除
firewall-cmd --permanent --remove-service=ssh

・設定の反映
firewall-cmd --reload

・IPアドレスを指定してssh接続を許可
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.100.101" port protocol="tcp" port="22" accept"

・設定の反映
firewall-cmd --reload

・設定状況の確認
firewall-cmd --list-all

firewallのzoneリストメモ




zone名:block
許可サービス:なし
外部からの接続はすべて遮断 設定変更不可
遮断時は「ICMP Pohibited」を返し、内部からの通信時は戻りの通信も許可される

zone名:dmz
許可サービス:ssh
dmz用に定義されたゾーン

zone名:drop
許可サービス:なし(外部からの通信はすべて遮断)
設定変更不可
内部からの通信は送信できるが、外部からの戻りの通信は遮断されるため、結果的にすべての通信が出来ない

zone名:external
許可サービス:ssh
IPマスカレード有効でルータなど外部ネットワークとの接続で使用するために定義されたゾーン

zone名:home
許可サービス:dhcpv6-client・ipp-client・mdns・samba-client・ssh
自宅などで使用するために定義されたゾーン

zone名:internal
許可サービス:dhcpv6-client・ipp-client・mdns・samba-client・ssh
内部ネットワークで使用するために定義されたゾーン

zone名:public
許可サービス:dhcpv6-client・ssh
公共の場所で使用するために定義されたゾーン

zone名:trusted
許可サービス:すべての通信を許可
設定変更不可

zone名:work
許可サービス:dhcpv6-client・ipp-client・ssh
職場などの業務エリアで使用するために定義されたゾーン



楽天トラベル

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)



【tech】CentOS7のfirewallへ指定IPアドレスのみSSH接続許可するメモ

centos7から導入されたfirewalldへIPアドレスを指定してSSH接続するコマンド投入サンプルです。


環境

許可したいIPアドレス:192.168.100.101


rich-ruleを使います。

・設定状況の確認
firewall-cmd --list-all

・sshを削除
firewall-cmd --permanent --remove-service=ssh

・設定の反映
firewall-cmd --reload

・設定状況の確認
firewall-cmd --list-all

・IPアドレスを指定してssh接続を許可
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.100.101" port protocol="tcp" port="22" accept"

・設定の反映
firewall-cmd --reload

・設定状況の確認
firewall-cmd --list-all


firewallの設定で調べた事をまとめてみました。

以下作業ログです


[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --permanent --remove-service=ssh

success
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --reload

success
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

[root@localhost ~]#
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ip v4" source address="192.168.100.101" port protocol="tcp" port="22" accept"
success
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --reload

success
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.100.101" port port="22" protocol="tcp" accept
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#