ufwとは
Ubuntuなどで標準的に使われるファイアウォールアプリケーション。
外部からの通信を許可/ブロックするルールを記述し、それに従って通信を制御します。
シェルからコマンドラインで操作します。
記事の趣旨
本記事は、個人で管理しているマシンの範疇で、接続元や公開するポートを制御したいときのための簡単な覚書です。シェルは使えるけど、何からやれば良いかわからない人、多数のコマンドを羅列されても困る人向けに、設定手順の概要と必要なコマンドに絞ってまとめました。
★不特定多数からの通信を受け付けるサーバなどには適さない内容なので、必ずその用途の記事を見てください!
また、以下のようなこともできるようなので、必要に応じて別の記事を探してください。
- ログ設定
- 通信回数の制限(不特定多数にポート公開する場合のセキュリティ対策)
- 通信を遮断し、"Connection Refused"を返す
設定の流れ
1つ1つのポートに対して設定を書いていくのは困難なので、以下の手順で設定。
~~ 初期設定 ~~
- デフォルト状態(全ブロック/全許可)を設定
- 特定の ポート/接続元/プロトコル に対する許可ルールを追加
- ufwを有効化
~~ 運用 ~~
- 必要に応じて新たにルールを追加
- ufwをリロード
特定の接続元だけを想定するのであれば、特定のポート、接続元、プロトコルのみを通す設定(ホワイトリスト登録的な感じ)で大概OKなので、デフォルト全ブロック → 必要なものを許可リストに追加という流れで設定できる。
コマンド一覧
- root権限がいるので、su状態かsudoで実行
動作状態、許可/ブロックルールリストの確認
ufw status
有効化/無効化
- 有効化
ufw enable
default deny 状態にしてenableすると全ブロックになる。ssh接続中に設定するときは要注意。接続元のIPに許可を出してからenableが安心… - 無効化
ufw disable
- 設定変更後のリロード
ufw reload
デフォルト状態の変更
- 全ブロック
ufw default DENY
- 全許可
ufw default ALLOW
許可
本記事で追加するのは、許可ルールのみです。
基本コマンドは、ufw allow [内容]
で、内容の中身を用途に合わせて変えます。
以下、よく使うものです。
- ポートに対して許可
ufw allow [port]
- ポート&プロトコルに対して許可
ufw allow [port]/[protocol]
- アプリケーションに対して許可
ufw allow [app]
- 特定の接続元&ポートに対して許可 ★この記事のケースでは、一番よく使うと思います
ufw allow from [IP] to any port [port]
- 全盛り設定
ufw allow from [IP] proto [protocol] to any port [port]
app:ssh, httpなど
protocol:udp, tcp
IP:IPアドレス xxx.xxx.xxx.x/xxみたいな指定もOK
port:解放対象のポート番号 min:maxで範囲指定も可能
ブロック
ホワイトリスト登録であれば、基本使わないです。
基本コマンドは、ufw deny [内容]
です。
内容は、上記の許可方法のallowをdenyに変えるだけなので割愛。
ルールの削除
不要になったルールを削除します。基本コマンドは、ufw delete [内容or番号]
です。
-
ルールの内容を指定して削除
許可ルールの記述と同様でOK。IPごとのルールは、1or2番目の方法でまとめて消せないので3or4番目を使用
ポートufw delete allow [port]
ポート&プロトコルufw delete allow [port]/[protocol]
IP&ポートufw delete allow from [ip] to any port [port]
IP&ポート&プロトコルufw delete allow from [ip] proto [protocol] to any port [port]
-
番号で指定して削除
ufw delete allow [番号]
statusで出てくる順番に従って指定
まとめ
とりあえず単純な設定であれば、大体これだけでなんとかなります。
参考文献
ある程度理解しておきたいときに、iptableとの関係も含めて解説つき。
大元のマニュアル。
本記事も含めてユースケース特化の記事は、状況にぴったり合うものがあれば非常に便利です。しかし閲覧者と編集者が少ない分、記載ミスの可能性も高まるので、怪しいと思ったときは大元と照合するのが安心安全です。