ファイアーウォールを設定 / Rocky Linux9.4 on さくらのVPS

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

さくらのVPSにRocky Linux9.4をインストールした覚書です。

今回はファイアーウォールの設定を行っていきたいと思います。

※さくらのVPSではコントロールパネルに「パケットフィルタ―設定」があるのでファイアーウォール不要説がありますが、公式のマニュアルにあるとおり完璧なものではないので、パケットフィルターとOSのファイアーウォールの併用がオススメです。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2024-05-13
サーバさくらのVPS 2G
OSRocky Linux9.4
cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)

よく使うコマンド

まずはお約束の systemctl です。

起動状態を確認する

systemctl status firewalld

起動する

SSHのポート変更を行っている場合は設定が完了していることを確認してください

systemctl start firewalld

停止する

systemctl stop firewalld

自動起動を有効にする

systemctl enable firewalld

自動起動の状態を確認する

systemctl is-enabled firewalld

設定の再読込み

firewall-cmd --reload

現在のゾーンを確認する

firewall-cmd --get-active-zones

デフォルトゾーンを確認する

firewall-cmd --get-default-zone

ゾーンのルールを確認する

firewall-cmd --list-all

許可しているサービスを確認する

firewall-cmd --list-services

サービスを追加する

サービスとして追加した場合は、そのサービスのデフォルトのポートが開くことになります。
httpなら80、httpsなら443、sshなら22

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-service=smtps
firewall-cmd --permanent --add-service=smtp-submission
firewall-cmd --permanent --add-service=pop3
firewall-cmd --permanent --add-service=pop3s
firewall-cmd --permanent --add-service=imap
firewall-cmd --permanent --add-service=imaps

不要になったものを外す場合

firewall-cmd --permanent --remove-service=〇〇

解放しているポートを確認する

firewall-cmd --list-ports

接続元のIPアドレスを許可する

firewall-cmd --add-source=192.168.11.5 --zone=public --permanent

ポートを開ける

firewall-cmd --permanent --zone=public --add-port=22/tcp

設定ファイルを直接編集する

vi /etc/firewalld/zones/public.xml
<?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 are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>
  <service name="http"/>
  <service name="https"/>
  <service name="ssh"/>
  <rule family="ipv4">
    <source address="123.123.123.123"/>
    <port port="22000" protocol="tcp"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="124.124.124.124"/>
    <port port="22000" protocol="tcp"/>
    <accept/>
  </rule>
</zone>

IPアドレス 123.123.123.123 と 124.124.124.124 のポート 22000 を許可する設定例です。

自分の環境が固定IPでないので、プロバイダのホスト名で設定したかったのですが、やり方が分からなかったので、今のところはとりあえずIPアドレス指定にしました。
まだやってないですがプロバイダのIPアドレス範囲で設定する方法もあります。

ついでに http https も加えておきます。

SSHを細かく設定する

独自のSSHの設定ファイルを作成します。

# ファイルを新しく作成
vi /etc/firewalld/services/ssh-alt.xml

▼ ★の数字を変更します。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22★"/>
</service>

ssh を ssh-alt に書き換え

vi /etc/firewalld/zones/public.xml
 こちらは削除
  <service name="ssh"/>

  こちらを書き加える
  <service name="ssh-alt"/>

設定を再読み込みして確認します。

設定を再読み込み

firewall-cmd --reload

設定の確認

firewall-cmd --list-all