Firewalldで不要なポートを閉じる方法【AlmaLinux・Rocky Linux対応】

開いているポートがサイバー攻撃の入口として狙われる可能性が!

不要なポートを閉じることは、攻撃者の侵入を防ぐ第一歩です。

この記事では、AlmaLinuxやRocky Linuxで不要なポートを閉じる方法を、初心者にもわかりやすく解説します。具体的なコマンドを使って解説していますので、すぐに実践できる内容が満載です。

この記事を読んでわかること
  • 不要なポートを閉じるコマンド(firewalld)
  • 再起動しても設定を継続する方法(永続化)
  • 攻撃者視点でポートの状態を確認(ポートスキャン)

今すぐ実践できるノウハウが満載です!最後までご覧ください。

目次

この記事で使用した検証環境

この記事では、AlmaLinux、及びRocky Linuxを採用しています。この2つのディストリビューションは、CentOSの後継としてエンタープライズ環境で広く採用されており、サーバーとしての運用を前提に設計されています。

検証環境

Nmap実行マシンターゲットマシン
OSKali Linux 2025.1AlmaLinux 9.5Rocky Linux 9.5
IPアドレス192.168.10.11192.168.21.103192.168.21.104
ミドルウェアNmap 7.95Firewalld 1.3.4Firewalld 1.3.4

本記事の検証では、ローカルマシンに構築した仮想ネットワーク内にて、ポートスキャンを実施しています。管理下にないサーバーへのポートスキャンは、法律に反する場合があります。倫理的な問題だけでなく、法的リスクを伴うため、自身が管理している環境内でのみ実施してください。

Kali Linuxやポートスキャンについて、詳しく知りたい方は、下記の記事もあわせてご覧ください。

なぜポートがサイバー攻撃の標的になるのか?

攻撃者は、サーバーに対する攻撃を行う際、まずそのサーバーでどのようなサービスが稼働しているのか、どのような脆弱性が存在するかを調べることから始めます。この最初の調査は、いわゆる「情報収集フェーズ」と呼ばれ、多くの場合、ポートスキャンツールや自動化されたスクリプトを使用して行われます。

この段階で攻撃者が注目するのは、開放されているポートとそれに紐づくサービスのリストです。例えば、21番ポートが開いていればFTPでのファイル転送が許可されていると推測でき、80番ポートが開いていればHTTPサービスが動作していると判断できます。攻撃者はこれらの情報を基に、どのポートやサービスが攻撃の糸口になり得るかを分析します。

攻撃者に狙われやすいポート番号

ポート番号サービス/プロトコル攻撃の例
20, 21FTP (ファイル転送プロトコル)ブルートフォース攻撃:弱い認証情報を狙った侵入。
ディレクトリトラバーサル攻撃:サーバーのファイル構造を不正アクセスされる可能性。
22SSH (Secure Shell)ブルートフォース攻撃:SSHに対するパスワードクラッキング。
SSHトンネリング:セキュリティバイパスに悪用される可能性。
23Telnet平文認証の盗聴:認証情報が暗号化されていないため盗聴されるリスク。
ブルートフォース攻撃:Telnetログイン情報を狙った攻撃。
25SMTP (メール送信)スパムメール送信:オープンリレーとして悪用される。
メールスプーフィング:偽の送信元アドレスで攻撃メールを送る。
53DNS (ドメインネームサービス)DNSアンプ攻撃:増幅されたトラフィックを利用したDDoS攻撃。
DNSポイズニング:偽のIPアドレスを登録し、ユーザーを偽サイトに誘導。
80, 443HTTP/HTTPS (Web)SQLインジェクション:Webアプリケーションの脆弱性を利用した攻撃。
クロスサイトスクリプティング (XSS):悪意のあるスクリプトの挿入。
110, 143POP3/IMAP (メール受信)メールアカウントのハッキング:アカウント情報の盗用。
リプレイ攻撃:古いセッションデータを悪用してアクセスを試みる。
139, 445SMB (ファイル共有)ランサムウェア:ファイル共有プロトコルを利用してランサムウェアを拡散。
エターナルブルー:SMBの脆弱性を突いた攻撃。
1433, 1434MS SQL ServerSQLインジェクション:データベースへの不正アクセス。
ブルートフォース攻撃:SQL Serverの認証情報を標的にする。
3306MySQLデータベース侵害:脆弱性や不正アクセスによるデータ漏洩。
ブルートフォース攻撃:弱いパスワードを狙う。
3389RDP (リモートデスクトップ)ブルートフォース攻撃:RDPアクセスのためのパスワードクラッキング。
RDPセッションハイジャック:リモートデスクトップセッションの乗っ取り。
8080HTTP Proxy中間者攻撃:プロキシ設定を悪用し、通信を傍受。
不正なプロキシサーバの設定:攻撃者によるトラフィックの操作。

攻撃者の目に映るあなたのサーバーの姿は?

ポートスキャンの代表的なツールであるNmapを使用して、Nmap実行マシンからターゲットマシンにポートスキャンすると、以下の実行結果が得られます。

  • 192.168.21.103 : AlmaLinux
  • 192.168.21.104 : Rocky Linux

Kali Linux(Nmap実行マシン)

$ nmap 192.168.21.103-104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-06 08:37 JST
Nmap scan report for 192.168.21.103
Host is up (0.0069s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh

Nmap scan report for 192.168.21.104
Host is up (0.0060s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 2 IP addresses (2 hosts up) scanned in 7.71 seconds
  • 192.168.21.103 : 21(ftp)、22(ssh)
  • 192.168.21.104 : 22(ssh)、80(http)

が動作していることを特定できます。

また、-sVオプションを指定することで、より詳細な情報を収集することができます。

Kali Linux(Nmap実行マシン)

$ nmap -sV 192.168.21.103-104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-06 08:47 JST
Nmap scan report for 192.168.21.103
Host is up (0.0073s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.5
22/tcp open  ssh     OpenSSH 8.7 (protocol 2.0)
Service Info: OS: Unix

Nmap scan report for 192.168.21.104
Host is up (0.0073s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.7 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.62 ((Rocky Linux))

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 2 IP addresses (2 hosts up) scanned in 14.35 seconds

以下では、21番ポート(ftp)、80番ポート(http)を閉じるための具体的な手順を解説します。

サイバーセキュリティの観点から、不要なポートを閉じることは、サーバーのセキュリティ強化において非常に重要な施策です。開いているポートは、外部からの通信を受け付ける入り口となり、不正アクセスやサイバー攻撃のリスクを高めます。

Firewalldで不要なポートを閉じる方法

ここでは、AlmaLinuxやRocky LinuxといったRed Hat系ディストリビューションで推奨されるファイアウォール管理ツール(Firewalld)を用いて、ポート管理を行います。Firewalldは動的なファイアウォール管理を可能にし、特定のポートやサービスの制御を簡素化してくれます。

ファイアウォールの状態を確認

ファイアウォールの状態を確認する目的は、現在の設定内容や有効性を把握し、不要なポートが開放されていないかを確認することです。多くの場合、デフォルトの設定では最低限のセキュリティが確保されていますが、サーバーの運用状況や目的に応じて設定が変更されている場合もあります。特に、意図しないポートが開放されたままになっていると、攻撃者に悪用されるリスクが高まります。

Firewalldは、Linux環境における動的なファイアウォール管理ツールとして広く使用されています。このツールの特徴は、ゾーンと呼ばれる概念を利用し、ネットワークのトラフィックを柔軟かつ効率的に管理できる点です。AlmaLinuxやRocky Linuxを含む多くのRHEL系ディストリビューションでは、デフォルトのファイアウォールツールとして採用されています。

STEP

firewalldサービスの起動状態を確認

まず、firewalldサービスが起動しているかを確認します。

AlmaLinux

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Thu 2025-03-06 08:09:28 JST; 40min ago
       Docs: man:firewalld(1)
   Main PID: 773 (firewalld)
      Tasks: 2 (limit: 10964)
     Memory: 44.9M
        CPU: 814ms
     CGroup: /system.slice/firewalld.service
             └─773 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

 3月 06 08:09:21 Alma systemd[1]: Starting firewalld - dynamic firewall daemon...
 3月 06 08:09:28 Alma systemd[1]: Started firewalld - dynamic firewall daemon.

Rocky Linux

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Thu 2025-03-06 08:12:16 JST; 38min ago
       Docs: man:firewalld(1)
   Main PID: 757 (firewalld)
      Tasks: 2 (limit: 10964)
     Memory: 45.2M
        CPU: 820ms
     CGroup: /system.slice/firewalld.service
             └─757 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

 3月 06 08:12:06 Rocky systemd[1]: Starting firewalld - dynamic firewall daemon...
 3月 06 08:12:16 Rocky systemd[1]: Started firewalld - dynamic firewall daemon.

firewall-cmdコマンドでも確認することができます。

AlmaLinux

# firewall-cmd --state
running

Rocky Linux

# firewall-cmd --state
running
firewalldサービスが起動していない場合

Firewalldは、ネットワークトラフィックを管理し、不正アクセスや攻撃からシステムを保護する役割を果たします。これが起動していないと、外部からの攻撃や悪意のある接続を遮断することができず、データ漏洩やシステム侵害のリスクが大幅に高まります。そのため、直ちにfirewalldサービスを起動していない原因を調査し、起動することを推奨します。

STEP

アクティブゾーンを確認

ファイアウォールの設定内容を確認するには、まず現在使用しているゾーンを特定する必要があります。

ゾーンとは、Firewalldがネットワークインターフェースを分類するための単位であり、異なるゾーンに異なるセキュリティポリシーを適用することで、柔軟なアクセス制御を実現します。

firewall-cmd --get-active-zonesを実行すると、アクティブなゾーンと、それに関連付けられているネットワークインターフェースを確認できます。

AlmaLinux

# firewall-cmd --get-active-zones
public
  interfaces: enp0s3 enp0s8

Rocky Linux

# firewall-cmd --get-active-zones
public
  interfaces: enp0s8 enp0s3
STEP

ゾーンごとの設定内容を確認

指定したゾーンで許可されているサービスやポート、ICMP設定、その他のルールを確認します。

AlmaLinux

# firewall-cmd --permanent --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources:
  services: cockpit dhcpv6-client ftp ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Rocky Linux

# firewall-cmd --permanent --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

不要なポートやサービスが開放されている場合、それらがサイバー攻撃の入口となるため、早急に対応する必要があります。

以下では、21番ポート(ftp)、80番ポート(http)を閉じる具体的な方法を解説します。

ポートを閉じる具体的なコマンド

開いているポートを閉じる場合、--remove-portオプション、または--remove-serviceオプションを使用します。

ファイアウォールのルール設定を実施する際、見落とされがちなのが設定の「永続化」です。永続化を行わないと、サーバーの再起動やファイアウォールサービスの再起動時に、せっかく設定したポートの閉鎖やルールがすべてリセットされてしまい、再び不要なポートが解放される状態に戻ってしまいます。firewalldを使用する場合、設定の永続化は非常に簡単ですが、明示的な操作が必要です。

設定変更を永続化する方法には、「オプションで永続化を指定する方法」と「ランタイム設定を永続化する方法」があります。

この記事では、

  • 前者(オプションで永続化する)の方法を用いて、AlmaLinuxの21番ポート(ftp)
  • 後者(ランタイム設定を永続化する)の方法を用いて、Rocky Linuxの80番ポート(http)

を閉じる方法を解説します。

オプションで永続化を指定する方法

--permanentオプションを指定することで、設定を永続化できます。

AlmaLinux

# firewall-cmd --permanent --zone=public --remove-service=ftp
success

--permanentオプションを指定してサービスを削除した場合、永続化できますが、即時反映されないため、--reloadオプションを用いて、設定内容を再読み込みします。

AlmaLinux

# #永続設定からftpが削除される。
# firewall-cmd --permanent --zone=public --list-services
cockpit dhcpv6-client ssh

# #ランタイム設定からftpは削除されない。(即時反映されない)
# firewall-cmd --zone=public --list-services
cockpit dhcpv6-client ftp ssh

# #設定内容を再読み込み
# firewall-cmd --reload
success

# #ランタイム設定からftpが削除されたことを確認。
# firewall-cmd --zone=public --list-services
cockpit dhcpv6-client ssh

ランタイム設定を永続化する方法

--permanentオプションを指定しない場合、ランタイム設定されます。

Rocky Linux

# firewall-cmd --zone=public --remove-port=80/tcp
success

ランタイム設定は即時反映されるため、設定変更は一時的に有効になりますが、OSを再起動すると設定変更は破棄されます。そのため、--runtime-to-permanentを実行して、設定変更を永続化する必要があります。

Rocky Linux

# #ランタイム設定から80番ポートが削除される。
# firewall-cmd --zone=public --list-ports


# #永続設定から80番ポートは削除されない。
# firewall-cmd --permanent --zone=public --list-ports
80/tcp

# #永続化
# firewall-cmd --runtime-to-permanent
success

# #永続設定から80番ポートが削除されたことを確認。
# firewall-cmd --permanent --zone=public --list-ports
 

攻撃者の視点でポート状態を再確認

Kali Linux(Nmap実行マシン)

$ nmap 192.168.21.103-104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-06 10:55 JST
Nmap scan report for 192.168.21.103
Host is up (0.0071s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for 192.168.21.104
Host is up (0.0071s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 2 IP addresses (2 hosts up) scanned in 7.75 seconds

22番(ssh)以外のポートが閉じられていることを確認できます。

Kali Linux(Nmap実行マシン)

$ nmap -sV -p 21 192.168.21.103
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-06 10:56 JST
Nmap scan report for 192.168.21.103
Host is up (0.0019s latency).

PORT   STATE    SERVICE VERSION
21/tcp filtered ftp

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds

$ nmap -sV -p 80 192.168.21.104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-06 10:56 JST
Nmap scan report for 192.168.21.104
Host is up (0.00073s latency).

PORT   STATE    SERVICE VERSION
80/tcp filtered http

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.82 seconds

ポートが閉じられ、バージョン情報なども表示されなくなります。

ポート管理と一緒に実施しておきたい対策

定期的なポートスキャンとログ監視

  • サービスの追加
  • OSの設定変更
  • ミドルウェアのバージョンアップ

などにより、当初は閉じていたはずのポートが気付かないうちに開放されているケースもあります。こうした状況を放置すると、不正アクセスが容易になり、攻撃リスクが高まります。

定期的なポートスキャンを実施することで、意図せず開放してしまったポートや、新たに導入したアプリケーションによって勝手に開放されたポートを早期に把握できるようになります。

ポートスキャンだけではなくログを含むシステム監視も継続的に行う必要があります。ファイアウォールのログやアクセスログなどを細かくチェックし、普段とは異なる通信パターンや、通常では考えにくい時間帯に発生するアクセスがないかを注意深く監視します。こうした監視によって、攻撃の初期兆候を見逃さずに発見できれば、被害の拡大を防げる可能性が高まります。

ICMPを無効にする

ICMP(Internet Control Message Protocol)は、主にサーバーの到達性確認(ping)などに使われるプロトコルです。ICMPを無防備に許可したままにしておくと、攻撃者によるネットワーク探索を容易にしてしまいます。そのため、必要に応じてICMPを無効にすることは、セキュリティを強化する上で重要な対策の一つです。

しかし、ICMPを完全に無効化すると、運用担当者がネットワークトラブルの原因を切り分けしにくくなるなどのデメリットもあります。

ICMPを無効化するメリット

  • ネットワーク情報の漏洩防止
    • 攻撃者のネットワークスキャンが困難になり、サーバーの存在確認やネットワーク構造の把握を難しくします。
  • DDoS攻撃のリスク軽減
    • ICMP Flood攻撃やSmurf攻撃を防ぎ、サービス停止のリスクを軽減します。

ICMPを無効化するデメリット

  • 障害切り分けが困難になる
    • 運用担当者はpingを用いてサーバーやネットワーク機器の稼働状況を確認することが多いです。ICMPを完全に無効化すると、障害発生時のトラブルシューティングが難しくなる場合があります。
  • サーバー監視も制限される
    • サーバー監視ツールの中にはICMPで稼働確認を行うものがあります。これらの監視が動作しなくなる可能性があるため、運用設計を見直す必要があります。

侵入をリアルタイムで監視

ポート管理だけでは検出できない不審な通信や攻撃を早期に発見するために、以下のようなシステムの導入が効果的です。

侵入検知システム(IDS)ネットワークやシステムのログを監視し、不審なアクセスや通信パターンをリアルタイムで検出します。
侵入防止システム(IPS)IDSの機能に加え、検出した攻撃を自動的にブロックする機能を持つシステムです。

これらの施策を継続的に実施・見直ししていくことで、ポート管理だけでは補いきれない領域をカバーし、より堅牢なセキュリティを実現することができます。ビジネスの継続性や社会的信用を守るためにも、総合的な観点での対策強化を検討しましょう。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次