イージスEW
AEGIS-EW
PORT(ポートスキャン攻撃)
ポート脆弱性と対策
サービスポートとは
サービスポートとは、ネットワーク上で特定のサービスやアプリケーションがクライアントからの接続を待ち受けるために使用するポート番号のことです。これらのポートは、クライアントとサーバ間の通信のエントリーポイント(入り口)として機能します。
- サービスポートの特徴
識別子としての役割:
特定のネットワークサービスを識別するために使用される
例:HTTP は通常ポート 80、HTTPS は 443 を使用
プロトコルとの関連:
特定のプロトコル(TCP, UDP など)と関連付けられる
同じポート番号でも、TCP と UDP で異なるサービスに使用可能
標準化:
多くの一般的なサービスは標準のポート番号を持つ
IANA(Internet Assigned Numbers Authority)によって管理される
カスタマイズ可能:
必要に応じて標準以外のポート番号を使用可能
セキュリティ強化や競合回避のために変更されることがある
サービスポートの種類
サービスポートは、一般的に以下の3つのカテゴリーに分類されます:
- ウェルノウンポート (0-1023):
特定のサービスに対して慣習的に割り当てられている0から1023までのポート番号です。
例えば、HTTP は80番、SSH は22番、FTP は21番などが該当します - レジスタードポート (1024-49151):
IANAに登録された、または一般的に使用されるアプリケーション用のポート
例:MySQL (3306), PostgreSQL (5432), RDP (3389) - ダイナミック/プライベートポート (49152-65535):
一時的な接続や私的な用途に使用される
クライアントアプリケーションが一時的に使用することが多い
ポートに対する脆弱性とは
標準ポート番号の使用を避け、非標準ポートを使用することで、多くの自動化された攻撃やスキャンからシステムを保護することができます。ただし、これはセキュリティ対策の一部に過ぎません。強力な認証方法、最新のセキュリティアップデート、適切なファイアウォール設定など、総合的なセキュリティアプローチを採用することが重要です。標準ポートで運用するサービスは、以下の脆弱性リスクがあります。
- 予測可能性:攻撃者が特定のサービスの存在を容易に推測できる
- 自動化された攻撃:ボットやスキャンツールによる標的になりやすい
- 権限の問題:これらのポートは通常、root権限で実行する必要がある
標準ポートに対する具体的対策
- ポート番号の変更
非標準のポート番号を使用する - ファイアウォールの設定
必要最小限のポートのみを開放する - ポートノッキング
特定のシーケンスのポートアクセスがあった場合のみ、実際のサービスポートを開く - VPN の使用
重要なサービスへのアクセスをVPN経由に限定する - 最新のセキュリティアップデートの適用
既知の脆弱性に対するパッチを常に適用する - 強力な認証方法の導入
多要素認証や公開鍵認証の使用
AEGIS-EWにおけるポート脆弱性診断
上記の例から、既知のポートが開いていることが確認できる。
ポート脆弱性対策の一例
例1: OpenSSH のリッスンポート番号変更
OpenSSH のリッスンポート番号を変更するには、以下の手順を実行します:
- `/etc/ssh/sshd_config` ファイルを編集します:
sudo nano /etc/ssh/sshd_config - 以下の行を探し、コメントアウトを解除して新しいポート番号を指定します
その後、sshd_configを保存します
Port 2222 - SSHデーモンを再起動します:
sudo systemctl restart sshd - ファイアウォールの設定を更新します(例:UFWの場合):
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
例2:vsftpd のリッスンポート番号変更
vsftpd のリッスンポート番号を変更するには、以下の手順を実行します:
- `/etc/vsftpd.conf` ファイルを編集します:
sudo nano /etc/vsftpd.conf - 以下の行を追加または修正します:
listen_port=21222 - vsftpd サービスを再起動します:
sudo systemctl restart vsftpd - ファイアウォールの設定を更新します:
sudo ufw allow 21222/tcp
sudo ufw deny 21222/tcp
## vsftpd の OpenSSL による FTPs 実装
vsftpd で FTPs(FTP over SSL/TLS)を実装するには、以下の手順を実行します:
- SSL証明書を生成します:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem - `/etc/vsftpd.conf` ファイルを編集し、以下の行を追加または修正します:
# 基本設定
listen=YES
listen_port=21222 # 明示的FTPSの場合
listen_port=990 # 暗黙的FTPSの場合
# SSL/TLS設定
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=YES
ssl_tlsv1=NO
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1_1=NO
ssl_tlsv1_2=YES
ssl_tlsv1_3=YES
# パッシブモード設定
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# セキュリティ設定
anonymous_enable=NO
local_enable=YE
write_enable=YES
chroot_local_user=YES
# ログ設定
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES
# その他のセキュリティ設定
allow_writeable_chroot=NO - vsftpd サービスを再起動します:
sudo systemctl restart vsftpd - FTPs用のポート(通常は990)をファイアウォールで開放します:
sudo ufw allow 990/tcp
※注意点
OpenSSH と vsftpd の設定変更、および FTPs の実装は、これらのサービスのセキュリティを向上させる効果的な方法です。ただし、これらの変更を行う際は、既存のシステムやユーザーへの影響を十分に考慮し、適切にテストを行ってから本番環境に適用することが推奨されます。
結論
既知の運用ポート番号を変更することによって、攻撃者が特定のサービスの存在を容易に推測しにくくなります。これにより、サーバがボットやスキャンツールによる攻撃の標的になる可能性を減少させます。
運用ポートの管理は、システムの堅牢性を高める上で有効な手法とされています。