Raspberry Pi 4のFedora 37で自宅サーバ構築 ファイアウォール設定編

Raspberry Pi 4で、自宅サーバを作りたいと思います。

microSDカードは使用せず、USBストレージにFedora 37 Serverをインストールしました。

Raspberry Pi 4でFedora 37 Serverを起動してみました
Raspberry Pi 4で。 64ビット版Fedora 37 Serverを起動してみました。 起動用microSDカードの作成...

自宅のインターネットは、IPv6 IPoE環境のため、通常はサーバを公開できませんが。

Raspberry PiからPPPoE接続することで、サーバとして公開が可能です。外出先からインターネット経由で、Raspberry PiのFedora 37 Serverにアクセス可能になります。

Raspberry Pi 4のFedora 37でPPPoE接続するには
先日、Fedora 37 Serverのサポート対象として、Raspberry Pi 4が正式サポートされました。 またRaspber...

安全にサーバを運用できるように、ファイアウォールは基本的に有効な状態で。

必要なサービスのみアクセスできるよう、ファイアウォール設定を調整する覚書を記録させて頂こうと思います。


ICMP(ping)応答の有効化

まずは、ファイアウォールが有効であり、icmp-blocksが空であるか確かめてみました。

sudo firewall-cmd --state
sudo firewall-cmd --list-icmp-blocks
sudo firewall-cmd --permanent --get-icmptypes

icmptypesが、ファイアウォールに設定(追加)可能な設定値のようです。

ICMP応答を有効にするため、次の3つのルールを追加します。

  1. echo-reply追加
  2. echo-request追加
  3. icmp-block-inversion有効化
sudo firewall-cmd --permanent --add-icmp-block=echo-reply
sudo firewall-cmd --permanent --add-icmp-block=echo-request
sudo firewall-cmd --permanent --add-icmp-block-inversion
sudo firewall-cmd --reload

設定後、–reloadで有効にしました。

これでPPPoE側から、Fedora Serverにpingを行うと、応答が返るようになりました。


IPv4(PPPoE)等、ppp0インタフェースの管理

IPv4(PPPoE)接続した場合ですが、「external」ゾーンにppp0インタフェースを割り当てました。

ppp0側でサービスを公開したい場合、このexternalゾーンを対象にfirewalldの設定を行います。

不特定多数の方に、サーバとして公開する場合は、externalゾーンに直接サービスを追加します。

自宅LAN内のサーバにアクセスしたい場合は、ipsec(VPN)で認証・暗号化します。ipsecサービスのみ追加し、他のサービスは削除しておきましょう。

# externalゾーンにppp0を割り当て
sudo firewall-cmd --zone=external --change-interface=ppp0
sudo firewall-cmd --zone=external --change-interface=ppp0 --permanent 
# 確認
sudo firewall-cmd --list-all --zone=external
# externalゾーンのsshサービス削除
sudo firewall-cmd --zone=external --remove-service="ssh"
sudo firewall-cmd --zone=external --remove-service="ssh" --permanent
# ipsecサービス追加
sudo firewall-cmd --zone=external --add-service="ipsec"
sudo firewall-cmd --zone=external --add-service="ipsec" --permanent 
# 確認
sudo firewall-cmd --list-all --zone=external
# 設定反映
sudo firewall-cmd --reload

こちらの画像では、externalゾーンはppp0インタフェースが割り当てられており。

サービスはipsecのみ通す設定です。

セキュリティ上のリスクが大変大きいため。ppp0側のsshサービスは必ず削除しておきましょう。

ちなみに外出先からiPhoeやPCで自宅LANにアクセスできるように、VPNサーバを構築する手順はこちらになります。

Raspberry Pi 4でVPNルータを作成するには Fedora 37 + IKEv1 XAUTH PSK版
現在、わたしの自宅LANは、IPv6(IPoE)でインターネット接続しております。具体的にはtransixサービスになります。 IPv...

httpd等、通常のサービスの有効化

httpdやnginx等、80/TCPを使用するサービスを公開する場合、httpを追加します。

sudo firewall-cmd --add-service="http"
sudo firewall-cmd --add-service="http" --permanent
sudo firewall-cmd --reload

前述のppp0側に公開する必要がない場合は、デフォルト設定のゾーンFedoraServerに追加し、ppp0側からアクセスできないことを確認しておきます。

確認の方法は、後述のログ記録を有効にすることで、リクエスト/レスポンスを確認することが出来ます。


IPSecの有効化

こちらの資料より

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/securing_networks/installing-libreswan_configuring-a-vpn-with-ipsec

ipsecサービスは、IKEプロトコル、ESPプロトコル、AHプロトコルで使用される500/UDPと4500/UDPを表すそうです。

sudo firewall-cmd --permanent --add-service="ipsec"
sudo firewall-cmd --reload

上述の、外出先からppp0インタフェースでVPN接続する場合、firewalldにサービスを追加する必要があります。


ファイアウォールのログの確認

# ログの取得状態確認
sudo firewall-cmd --get-log-denied
# ログ取得開始
sudo firewall-cmd --set-log-denied=all
sudo firewall-cmd --reload
sudo tail -f /var/log/messages
# ログ取得終了
sudo firewall-cmd --set-log-denied=off
sudo firewall-cmd --reload

ログの取得を開始後。

サービスにアクセスして、どのパケットがリジェクトされているか調べる感じでしょうか。

ログから、ファイアウォールの設定をどうすればよいか考える感じです。


覚書

# 状態確認
sudo firewall-cmd --list-all
# ゾーンの確認
sudo firewall-cmd --get-zones
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all-zones
sudo firewall-cmd --permanent --list-all-zones
# ポート追加
sudo firewall-cmd --add-port=80/tcp
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
# サービス追加
sudo firewall-cmd --get-services
sudo firewall-cmd --list-all-services
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
# サービスのブロック
sudo firewall-cmd --remove-service=https
# ホワイトリスト
sudo firewall-cmd --permanent --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --remove-source=192.168.1.0/24
# サブネット
sudo firewall-cmd --zone=internal --add-source=192.168.1.0/24 --permanent
sudo firewall-cmd --zone=internal --remove-source=192.168.1.0/24 --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
# 
sudo firewall-cmd --get-policies
sudo firewall-cmd --list-all-policies
sudo firewall-cmd --list-interfaces
sudo firewall-cmd --list-sources

この記事は、随時項目を追加する予定です。

Raspberry Piをインターネットに直接接続して公開するにあたり。

セキュリティの面から、Fedora Serverは十分に実用的であると考えています。(個人的見解

実用性を維持するには、きっちりとセキュリティを確保しながら運用する必要があると思います。

何かサービスを追加して、ファイアウォールを解除する必要がある場合、この記事に追記させて頂こうと思います。

スポンサーリンク

フォローする

スポンサーリンク