【firewalld】特定のIPアドレスのみアクセスを許可する
特定のIPアドレスを拒否する設定方法について、先日の記事で紹介しました。今回はその逆で、特定のIPアドレスのみアクセスを許可する設定を行おうと思います。
作業前の状態
一応、作業前の状態を確認しておきます。
# アクティブゾーン確認
$ firewall-cmd --get-active-zones
-------
public
interfaces: eth0
-------
$ firewall-cmd --list-services --zone=public --permanent
-------
cockpit dhcpv6-client ssh
-------
アクティブなゾーンは、「public」のみ。publicには、「cockpit」「dhcpv6-client」「ssh」の3つのサービスが許可されている状態です。
カスタムゾーンを作成する
まず、次のコマンドでカスタムゾーンを作成します。「myZone」という名前をつけましたが、任意の名前でOKです。
$ firewall-cmd --new-zone myZone --permanent
ゾーンを確認してみます。
$ firewall-cmd --get-zones
-----
block dmz drop external home internal myZone nm-shared public trusted work
-----
→「myZone」が追加されていること
カスタムゾーンの設定を行う
今回は、特定のIPアドレスからのみhttpアクセスを許可する設定をしてみます。
# 許可の設定
$ firewall-cmd --zone=myZone --set-target=ACCEPT --permanent
# IPアドレスの指定
$ firewall-cmd --zone=myZone --add-source=52.198.5.30 --permanent
# サービスの指定(http)
$ firewall-cmd --zone=myZone --add-service=http --permanent
# リロード
$ firewall-cmd --reload
IPアドレスの指定はCIDR値でも問題ありません。それでは「myZone」の設定を確認してみます。
# myZone設定確認
$ cat /etc/firewalld/zones/myZone.xml
-------
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
<service name="http"/>
<source address="52.198.5.30"/>
</zone>
-------
# アクティブゾーン確認
$ firewall-cmd --get-active-zones
-------
myZone
sources: 52.198.5.30
public
interfaces: eth0
-------
こんな感じで設定が追加されていればOK。ゾーンも反映されていますね。
アプリ確認
WEBサーバーを適当にインストールして起動し、アクセスできるか確認してみました。
指定したIPアドレスの場合
それ以外のIPアドレスの場合
無事に、特定のIPアドレスのみhttp通信を許可することが出来ました!