ファイアウォールの設定 ufw
, iptables
1. UFW: Uncomplicated Firewall
ファイアウォールは何のために必要?
サーバーを家に例えてみて?家には貴重なもの(もちろんデータ)がいっぱいあるよね。もしドアを開けっ放しにしてたら、誰でも入ってきて、君のデータを食い尽くしちゃうかもしれないし、汚れた皿を置いていくかも(もっとひどいこともあり得るけど)。ファイアウォールはそのドアみたいなもので、「誰が」「どの門を通って」「どんな条件で」入れるかをコントロールできる。
Linuxにはファイアウォールを設定するための2つの基本ツールがあるよ:ufw(Uncomplicated Firewall、つまり「シンプルなファイアウォール」って感じ)とiptables。それぞれの仕組みと違いを見ていこう。
UFWって何?
UFWは「簡単にしましょう」ってコンセプトで作られたファイアウォール設定ツールだよ。高度な詳細を気にせずに、基本的なアクセスルールをサクッと設定したい人にはぴったりだよ。
UFWのインストールと有効化
UFWは普通Debian/Ubuntuベースのディストリビューションには最初から入ってる。もし無かったら、インストールしてね:
sudo apt update
sudo apt install ufw
UFWを有効にするには:
sudo ufw enable
ステータスを確認:
sudo ufw status
最初に実行すると、ステータスはたぶん「inactive」だよ。有効化したら「active」に変わるよ。
UFWルールの設定
さて、面白いところに入るよ。どのトラフィックを通して、どれをブロックするかを決めるルールの設定だ!
SSHアクセスを許可する(ポート22):
sudo ufw allow 22
ウェブサーバーへのアクセスを許可する(ポート80):
sudo ufw allow 80
HTTPSを開放する(ポート443):
sudo ufw allow 443
不要なポートを閉じる(例: 8080):
sudo ufw deny 8080
ルールを削除:
もしやり直したくなったら、sudo ufw status numbered
コマンドで番号を確認して、その番号を指定して削除できるよ。例えば:
sudo ufw delete 1
確認とテスト
ちゃんとうまく動いているか確かめるために、もう一度ステータスを見てみよう:
sudo ufw status
全ての有効なルールのリストが表示されるよ。
2. IPTABLES: もっとコントロール、もっと可能性
iptablesとは?
UFW が「簡単なロック付きドア」だとしたら、iptables は「賢い警備員」だね。これを使えばすべてを設定することができるよ。トラフィックの制御、ルーティング、さまざまな基準でのフィルタリング、さらにはパケットの変更も可能だよ。
iptablesの基本概念
- テーブル — ネットワークパケットを処理するための機能のセットだよ。
filter
: パケットの処理とフィルタリング(例: 許可またはブロック)。nat
: アドレス/ポート変換(例えばルーター用)。
- チェーン — パケットに適用されるルール群。
INPUT
: 受信トラフィック用。OUTPUT
: 送信トラフィック用。FORWARD
: 転送されたトラフィック用。
- ターゲット (targets) — パケットに対して実行されるアクション。
ACCEPT
: パケットを許可。DROP
: パケットを破棄。REJECT
: パケットを破棄して通知を送信。
では、iptablesルールを設定する方法を見てみよう。
現在のルールの確認
既に設定されているルールを確認するには、以下を実行してね:
sudo iptables -L
さらに詳細な情報を得るには、-v
や -n
を追加してね。
iptablesでルールを作成
簡単なルール: SSH(ポート 22)を許可:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
ポート8080へのアクセスをブロック:
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
IPアドレスによるアクセス制限:
特定のIPを持つコンピュータだけがサーバーに接続できるようにしたい場合、その他のすべては接続できない:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
ルールの削除
ルールを削除するには、その番号を知る必要があるよ。以下を使って番号を確認してね:
sudo iptables -L --line-numbers
そして削除:
sudo iptables -D INPUT <番号>
ルールの保存
iptablesのルールは通常、システムを再起動すると「忘れられる」よ。これを避けるため、ルールを保存してね:
sudo iptables-save > /etc/iptables/rules.v4
その後、ルールを以下のように復元できるよ:
sudo iptables-restore < /etc/iptables/rules.v4
3. UFW対IPTABLES: どっちを選ぶべき?
UFWとiptablesは同じ機能を果たしてるよ、サーバーを保護するってやつ。じゃあ、どっちのツールを使うべき?
- UFW — これは基本的なセキュリティ設定を簡単にするツールだよ。低レベルな詳細を気にしたくないとか、とにかくさっとファイアウォールを設定したい人向け。
- Iptables — こっちはもっと複雑な設定ができる強力なツールだね。もしインフラが複雑(例えば、NATとかルーティングとか)なら、iptablesが必要だよ。
ちなみにね、UFWは実際にはiptablesの「上で」動いてるんだよ。UFWはiptablesルールをあなたの代わりに生成してくれるわけ。だから、iptablesをマスターしたら、UFWが内部でどう動いてるかも自然とわかるはず。
4. 実践例: サーバー保護
例1: UFWでSSHとウェブサーバーの保護
- UFWがインストールされ、アクティブになっていることを確認しよう:
sudo ufw enable
- SSHとウェブサーバーへのアクセスを許可しよう:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
- アクティブなルールを確認しよう:
sudo ufw status
例2: iptablesで不要なトラフィックをブロック
- SSHアクセスを許可しよう:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- ウェブトラフィックを許可しよう:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 他の全てをブロックしよう:
sudo iptables -A INPUT -j DROP
今日はUFWとiptablesを使ってサーバーを保護する方法を学んだね。どちらのツールも強力で便利だよ。UFWは「普段使いの友達」で、iptablesは「熟練者の手に渡る強力なツール」って感じかな。ファイアウォールを設定して、自分の設定を理解しよう。そうすれば、サーバーはしっかり守られる「要塞」になり、誰でも自由に入れる場所じゃなくなるよ。
GO TO FULL VERSION