〜 Linuxのネットワークセキュリティを守る鉄壁の盾 〜
目次
📌 概要
Linuxでのパケットフィルタリングとは、ネットワークを通過するパケットを条件に応じて許可・拒否する技術です。
iptables(または ip6tables)や、よりモダンなfirewalld、初心者向けのufwなどがあり、NATやポートリダイレクトによる構成も可能です。
🧱 iptablesの基本構造
iptablesはパケットの通過点ごとに「チェーン」へルールを設定して管理します。
| チェーン | 役割 |
|---|---|
INPUT | 自ホストに届くパケットに対する処理 |
OUTPUT | 自ホストから出るパケットに対する処理 |
FORWARD | 他ホストへ転送されるパケットの処理(ルータ用途) |
PREROUTING / POSTROUTING | NAT用(DNAT/SNAT) |
🔧 基本操作コマンド
# ルールの確認(IPv4)
sudo iptables -L -n -v
# ルール追加(例:SSHを許可)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# デフォルトポリシーの設定(全拒否にする)
sudo iptables -P INPUT DROP
# 設定の保存
sudo iptables-save > /etc/iptables/rules.v4
# 設定の復元
sudo iptables-restore < /etc/iptables/rules.v4
IPv6の場合は ip6tables を使います。
🌐 IPパケットの転送設定(ルータとして使う)
以下のファイルを有効にすることで、パケット転送が可能になります:
# IPv4
echo 1 > /proc/sys/net/ipv4/ip_forward
# IPv6
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
永続化には /etc/sysctl.conf に以下を追記:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
🔁 NAT・ポートリダイレクト(例)
# IPマスカレード(ローカル→インターネットへの変換)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 外部80番 → 内部192.168.1.100:8080に転送(ポートフォワード)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
📄 /etc/servicesの役割
- 各ポート番号に対応するサービス名の定義が記述されています。
- 読みやすさ・保守性向上のためにiptablesルールでサービス名指定が可能。
# 例:HTTPポートをサービス名で指定
iptables -A INPUT -p tcp --dport http -j ACCEPT
🧯 firewalldの特徴と操作
特徴:
iptablesよりも抽象度が高く、ゾーンベースの管理iptablesを内部的に使っている(nftables対応も進行中)
主なコマンド(firewall-cmd):
# 現在のゾーン確認
firewall-cmd --get-active-zones
# SSHを許可
firewall-cmd --add-service=ssh --permanent
# ポート追加(HTTP)
firewall-cmd --add-port=80/tcp --permanent
# 変更の適用
firewall-cmd --reload
設定ファイルは通常 /etc/firewalld/ 以下に格納されます。
🛡️ ufw(Uncomplicated Firewall)
- Ubuntu系に多く採用されている簡易ラッパー
- 内部的にはiptablesを利用
例:
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw deny 80
sudo ufw status verbose
⚠️ 攻撃回避のテクニック例
| 攻撃例 | 対策方法 |
|---|---|
| ポートスキャン | 必要最小限のポートのみ許可(デフォルトDROP) |
| SYN Flood | iptablesで --syn -m limit を使用 |
| DNS Amplification | INPUTでUDP53制限、FORWARD拒否 |
| 不正IP | iptables -s 192.168.0.0/24 -j DROP などで遮断 |
🧠 試験・実務ポイントまとめ
| 項目 | 理解ポイント |
|---|---|
| iptables | チェーンとターゲットの理解(DROP/ACCEPTなど) |
| NAT・マスカレード | -t nat を使用、PREROUTING/POSTROUTINGの使い分け |
| firewalld | firewall-cmdでの永続設定とゾーンの活用 |
| ufw | 初心者向け簡易管理ツール、Ubuntu系でよく使われる |
| 設定の保存 | iptables-save, firewall-cmd --permanentの違いに注意 |
✅ まとめ
| 用途 | ツール | コマンド例 |
|---|---|---|
| パケットフィルタ | iptables, firewalld, ufw | iptables -A INPUT, firewall-cmd |
| NAT | iptables -t nat | MASQUERADE, DNAT, SNAT |
| 設定保存 | iptables-save, iptables-restore | 永続化に重要 |
| 転送設定 | /proc/sys/net/ipv4/ip_forward | sysctl.confで設定 |
コメント