環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

【firewalld】特定のIPアドレスのみアクセスを許可する

【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通信を許可することが出来ました!