Ubuntuを触るようになったので自分ようにufwの備忘録を作りました。
個人で隔離された環境で好き放題お試しする分には
別に意識せずに systemctl disable ufw してしまって構わないませんが、
外向けに見せるものについてはきちんと設定しましょうということで設定します。
前提条件
毎回毎回 sudo, sudoいうのもアホらしいので、
rootで作業します。
sudo su -
初期状態の確認
sudo su -
root@ubuntu-001:~# systemctl status ufw
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab
Active: active (exited) since 日 2016-08-07 19:33:49 JST; 33min ago
Process: 12007 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/
Main PID: 12007 (code=exited, status=0/SUCCESS)
8月 07 19:33:49 ubuntu-001 systemd[1]: Starting Uncomplicated firewall...
8月 07 19:33:49 ubuntu-001 systemd[1]: Started Uncomplicated firewall.
8月 07 20:05:25 ubuntu-001 systemd[1]: Started Uncomplicated firewall.
起動はしています。
ufw status
状態: 非アクティブ
起動はしていますが特に通信の制御などは行っていない様子。
いきなり有効化するとsshの接続を切断されるので、
ひとまずはdry-runで有効化を試行してみます。
ufwの有効化
ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
少なくとも私が試した範囲では有効化しても
すでに接続している通信が切断されるなどの影響は出ませんでした。
ufwを有効化したりする前などから成立している通信は遮断しないように見えます。
ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新しいプロファイル: skip
ufwを有効化した初期状態でsshの接続を切断すると再接続できなくなるので要注意。
ufw disable
ファイアウォールを無効にし、システム起動時にも無効にします
デフォルトのincomingポリシー
条件に合致しない通信を通過させるか、遮断するかのデフォルト設定を適用します。
実はデフォルトでincomingポリシーはdenyなのでここは不要だったりします...
ufw default deny
デフォルトの incoming ポリシーは 'deny' に変更しました
(適用したい内容に基づいて必ずルールを更新してください)
ファイアウォールの設定を下記のいずれにするかで
denyかallowかが変わる(rejectもあるがここでは割愛)
方式 | 内容 | 選択するポリシー |
---|---|---|
ホワイトリスト方式 | 特定の通信のみ受信を 許可 する | deny |
ブラックリスト方式 | 特定の通信のみ受信を 遮断 する | allow |
通常は ホワイトリスト方式 を選択します。
サーバ上で 動作しているサービスのポートのみを公開 するのが原則です。
さらに条件詳細化
ここで疑問となるのが、sshの通信はどこからでも受け付けるのか ということ
ごくごく小規模のネットワークなので、今回は同一セグメント以外からの通信は許容したくはないので通信元を絞ります。
(どこの馬の骨とも知らないネットワークからsshされても嫌なので)
ufw delete 1
削除:
allow 22
操作を続けますか (y|n)? y
ルールを削除しました
ufw status
状態: アクティブ
この時点でTCP 22番への新規接続ができなくなっている。
この状態でログアウトするとsshでの接続ができなくなるので要注意です。
ufw allow from 192.168.1.0/24 to any port 22
ルールを追加しました
同一ネットワーク内からのみの通信を許可しました。
で、念のためにufwを再読み込みさせます。
ufw reload
ファイアウォールを再読込しました
まとめ
ufwの基本操作として以下の内容を整理しmashita.
コマンド | 意味 | 備考 |
---|---|---|
ufw enable | ufwを有効化 | ルールが設定されない限り新規接続ができなくなるので要注意 |
ufw disable | ufwを無効化 | |
ufw status | ufwの状態とルールを表示 | |
ufw status verbose | ufwの状態とルールを表示 | 各種デフォルトポリシーも表示される |
ufw delete 番号 | ルールを削除する | ルールの番号は ufw status numberedで確認できる |
ufw allow from ネットワークアドレス to ホストアドレス(or any) port ポート番号 | fromで指定したアドレスからtoで指定したアドレスかつポートへの通信を受信する | ネットワークアドレスは192.168.1.0/24などの形で指定 |