俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

UFW (Uncomplicated Firewall) を理解しておく

f:id:ie-kau:20170717174929p:plain


UFWとは?

コマンドラインで簡単に設定出来るfirewall。 Ubuntu 8.04 LTSより新しいバージョンならデフォルトでインストールされているので、Ubuntuを利用している場合はこれを利用してfirewallの設定をするのが一般的。

解説

例えば以下の設定があったとする。

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
Anywhere                   DENY IN     192.168.1.1
80/tcp                     ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)

初期設定は、

  • 起動中
  • 内向きのパケットは全て禁止
  • 外向きのパケットは全て許可

フィルタリングルールは上から順に適応されているくので、

  • port 22(ssh目的)は許可
  • 192.168.1.1からのアクセスは禁止
  • port 80(http目的)は許可

という読み方になる。

よく使うコマンド

確認

ルール表示

sudo ufw status

ルール + ステータス

sudo ufw status

設定

ポートで許可 / 禁止

# sudo ufw allow <port>/<optional: protocol>
sudo ufw allow 80/tcp
sudo ufw deny 80/tcp

IP adressで許可 / 禁止

# sudo ufw allow from <ip address>
sudo ufw allow 192.168.1.1
sudo ufw deny  192.168.1.1

編集

連番付きルール表示

sudo ufw status numbered

特定の番号が付いたルールを消す

sudo ufw delete 4

番号指定でルールを追加する

sudo ufw insert 1 allow from <ip address>

ネットワークアドレスでフィルタリングする

sudo ufw deny  192.168.1.0/24

HOST部分を変えながらDOS攻撃してくる場合などの対応のためネットワークアドレスでフィルタリングすることも出来る。

To                         Action      From
--                         ------      ----
Anywhere                   DENY IN     192.168.1.0/24

※サブネットマスクで言うと255.255.255.0なので192.168.1.0〜192.168.1.255

設定手順

sudo ufw allow 22
sudo ufw enable
sudo ufw deny from 192.168.1.1
sudo ufw allow 80/tcp

22番ポートが閉じたまま接続が切れたらマジ厄介なので先に許可設定したまま ufw を enable にする。

参考