開いているポートがサイバー攻撃の入口として狙われる可能性が!
不要なポートを閉じることは、攻撃者の侵入を防ぐ第一歩です。
この記事では、AlmaLinuxやRocky Linuxで不要なポートを閉じる方法を、初心者にもわかりやすく解説します。具体的なコマンドを使って解説していますので、すぐに実践できる内容が満載です。
- 不要なポートを閉じるコマンド(firewalld)
- 再起動しても設定を継続する方法(永続化)
- 攻撃者視点でポートの状態を確認(ポートスキャン)
今すぐ実践できるノウハウが満載です!最後までご覧ください。
この記事で使用した検証環境
この記事では、AlmaLinux、及びRocky Linuxを採用しています。この2つのディストリビューションは、CentOSの後継としてエンタープライズ環境で広く採用されており、サーバーとしての運用を前提に設計されています。
検証環境
Nmap実行マシン | ターゲットマシン | ||
---|---|---|---|
OS | Kali Linux 2025.1 | AlmaLinux 9.5 | Rocky Linux 9.5 |
IPアドレス | 192.168.10.11 | 192.168.21.103 | 192.168.21.104 |
ミドルウェア | Nmap 7.95 | Firewalld 1.3.4 | Firewalld 1.3.4 |
本記事の検証では、ローカルマシンに構築した仮想ネットワーク内にて、ポートスキャンを実施しています。管理下にないサーバーへのポートスキャンは、法律に反する場合があります。倫理的な問題だけでなく、法的リスクを伴うため、自身が管理している環境内でのみ実施してください。
Kali Linuxやポートスキャンについて、詳しく知りたい方は、下記の記事もあわせてご覧ください。
- Kali Linux
- ポートスキャン
なぜポートがサイバー攻撃の標的になるのか?
攻撃者は、サーバーに対する攻撃を行う際、まずそのサーバーでどのようなサービスが稼働しているのか、どのような脆弱性が存在するかを調べることから始めます。この最初の調査は、いわゆる「情報収集フェーズ」と呼ばれ、多くの場合、ポートスキャンツールや自動化されたスクリプトを使用して行われます。
この段階で攻撃者が注目するのは、開放されているポートとそれに紐づくサービスのリストです。例えば、21番ポートが開いていればFTPでのファイル転送が許可されていると推測でき、80番ポートが開いていればHTTPサービスが動作していると判断できます。攻撃者はこれらの情報を基に、どのポートやサービスが攻撃の糸口になり得るかを分析します。
攻撃者に狙われやすいポート番号
ポート番号 | サービス/プロトコル | 攻撃の例 |
---|---|---|
20, 21 | FTP (ファイル転送プロトコル) | ブルートフォース攻撃:弱い認証情報を狙った侵入。 ディレクトリトラバーサル攻撃:サーバーのファイル構造を不正アクセスされる可能性。 |
22 | SSH (Secure Shell) | ブルートフォース攻撃:SSHに対するパスワードクラッキング。 SSHトンネリング:セキュリティバイパスに悪用される可能性。 |
23 | Telnet | 平文認証の盗聴:認証情報が暗号化されていないため盗聴されるリスク。 ブルートフォース攻撃:Telnetログイン情報を狙った攻撃。 |
25 | SMTP (メール送信) | スパムメール送信:オープンリレーとして悪用される。 メールスプーフィング:偽の送信元アドレスで攻撃メールを送る。 |
53 | DNS (ドメインネームサービス) | DNSアンプ攻撃:増幅されたトラフィックを利用したDDoS攻撃。 DNSポイズニング:偽のIPアドレスを登録し、ユーザーを偽サイトに誘導。 |
80, 443 | HTTP/HTTPS (Web) | SQLインジェクション:Webアプリケーションの脆弱性を利用した攻撃。 クロスサイトスクリプティング (XSS):悪意のあるスクリプトの挿入。 |
110, 143 | POP3/IMAP (メール受信) | メールアカウントのハッキング:アカウント情報の盗用。 リプレイ攻撃:古いセッションデータを悪用してアクセスを試みる。 |
139, 445 | SMB (ファイル共有) | ランサムウェア:ファイル共有プロトコルを利用してランサムウェアを拡散。 エターナルブルー:SMBの脆弱性を突いた攻撃。 |
1433, 1434 | MS SQL Server | SQLインジェクション:データベースへの不正アクセス。 ブルートフォース攻撃:SQL Serverの認証情報を標的にする。 |
3306 | MySQL | データベース侵害:脆弱性や不正アクセスによるデータ漏洩。 ブルートフォース攻撃:弱いパスワードを狙う。 |
3389 | RDP (リモートデスクトップ) | ブルートフォース攻撃:RDPアクセスのためのパスワードクラッキング。 RDPセッションハイジャック:リモートデスクトップセッションの乗っ取り。 |
8080 | HTTP 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サービスの起動状態を確認
まず、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がネットワークインターフェースを分類するための単位であり、異なるゾーンに異なるセキュリティポリシーを適用することで、柔軟なアクセス制御を実現します。
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
ゾーンごとの設定内容を確認
指定したゾーンで許可されているサービスやポート、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オプション
を使用します。
設定変更を永続化する方法には、「オプションで永続化を指定する方法」と「ランタイム設定を永続化する方法」があります。
この記事では、
- 前者(オプションで永続化する)の方法を用いて、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の機能に加え、検出した攻撃を自動的にブロックする機能を持つシステムです。 |
これらの施策を継続的に実施・見直ししていくことで、ポート管理だけでは補いきれない領域をカバーし、より堅牢なセキュリティを実現することができます。ビジネスの継続性や社会的信用を守るためにも、総合的な観点での対策強化を検討しましょう。