AlmaLinux9.2にファイアーウォールを設定

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

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

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

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

環境

実施日2023-09-07
サーバさくらのVPS 2G
OSAlmaLinux9.2
cat /etc/redhat-release
AlmaLinux release 9.2 (Turquoise Kodkod)

よく使うコマンド

まずはお約束の systemctl です。

# 起動状態を確認する
systemctl status firewalld

# 起動する
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 --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