Help us understand the problem. What is going on with this article?

ufwの基本操作

More than 3 years have passed since last update.

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の状態確認
ufw status
状態: 非アクティブ

起動はしていますが特に通信の制御などは行っていない様子。
いきなり有効化するとsshの接続を切断されるので、
ひとまずはdry-runで有効化を試行してみます。

ufwの有効化

ufwの有効化
ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。

少なくとも私が試した範囲では有効化しても
すでに接続している通信が切断されるなどの影響は出ませんでした。

ufwを有効化したりする前などから成立している通信は遮断しないように見えます。

ufw有効化後の初期状態
ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新しいプロファイル: skip

ufwを有効化した初期状態でsshの接続を切断すると再接続できなくなるので要注意。

ufwの無効化
ufw disable
ファイアウォールを無効にし、システム起動時にも無効にします

デフォルトのincomingポリシー

条件に合致しない通信を通過させるか、遮断するかのデフォルト設定を適用します。

実はデフォルトでincomingポリシーはdenyなのでここは不要だったりします...

ufwのデフォルトポリシー設定
ufw default deny
デフォルトの incoming ポリシーは 'deny' に変更しました
(適用したい内容に基づいて必ずルールを更新してください)

ファイアウォールの設定を下記のいずれにするかで
denyかallowかが変わる(rejectもあるがここでは割愛)

方式 内容 選択するポリシー
ホワイトリスト方式 特定の通信のみ受信を 許可 する deny
ブラックリスト方式 特定の通信のみ受信を 遮断 する allow

通常は ホワイトリスト方式 を選択します。
サーバ上で 動作しているサービスのポートのみを公開 するのが原則です。

さらに条件詳細化

ここで疑問となるのが、sshの通信はどこからでも受け付けるのか ということ

Kobito.iJ7WMw.png

ごくごく小規模のネットワークなので、今回は同一セグメント以外からの通信は許容したくはないので通信元を絞ります。
(どこの馬の骨とも知らないネットワークからsshされても嫌なので)

既存のルールを削除する
ufw delete 1
削除:
 allow 22
操作を続けますか (y|n)? y
ルールを削除しました
ステータスを確認
ufw status
状態: アクティブ

この時点でTCP 22番への新規接続ができなくなっている。
この状態でログアウトするとsshでの接続ができなくなるので要注意です。

TCP22番の通信の通信元を制限する
ufw allow from 192.168.1.0/24 to any port 22
ルールを追加しました

同一ネットワーク内からのみの通信を許可しました。
で、念のためにufwを再読み込みさせます。

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などの形で指定
RyoMa_0923
インフラエンジニア? 記事の内容、およびそのなかで述べられている見解は個人のものであり、所属組織とは関係ありません。また、記事内容の正しさは必ずしも保証されるものではありません。
https://note.com/ryoma_0923
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away