yamasaki0's diary

IT勉強会や技術的なメモなどを書いていきたいと思います。

Ubuntu ufwでのiptablesの設定

ufwについて

ubuntuにはiptablesでの設定を簡単に行えるようにしたufwというツールがあり、
iptablesを生で使うより簡単に設定が行えるようになっている。
また、iptablesで設定する基本的なルールがある程度用意されているようである。
GUIの設定ツールなどもある。

設定ファイル

/etc/ufw:
sysctl.conf    -> IPフォワーディング等のkernelパラメータの設定
ufw.conf        -> ufwの有効化やログレベルの設定
before.rules    -> おそらくカスタムルールの前に評価するチェーンなどの登録設定
before6.rules   -> 上記と同じ、ipv6用
after.rules     -> おそらくカスタムルールの後に評価するチェーンなどの登録設定
after6.rules    -> 上記と同じ、ipv6用
applications.d  -> アプリケーション名に応じた使用ポート等の情報が入っている。
                   おそらくパッケージを入れるとここにファイルが追加される形であろう。

/etc/ufw/applications.d:
openssh-server  -> OpenSSHが利用するポートが書かれている

/lib/ufw:
user.rules      -> ユーザーのカスタムルールが格納される
user6.rules     -> 上記と同じ、ipv6用

ルールの追加

$ sudo ufw allow ssh
とすると、/etc/ufw/user.rulesに

### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -j ACCEPT

と追加された。

/etc/ufw/applications.dに設定が入っているアプリケーションであれば以下のように登録出来る
$ sudo ufw allow OpenSSH

### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 OpenSSH - in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT -m comment --comment 'dapp_OpenSSH'

ルールの削除

追加時に入れたオプション文字列の先頭にを追加するだけ
$ sudo ufw delete allow ssh
$ sudo ufw delete allow OpenSSH

Firewall ON/OFF

$ sudo ufw enable
$ sudo ufw disable
で ON/OFF 出来ます。
sshのルールを追加していることを確認してから実行

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? 

脅しが入ります。yで進むと適用されます。

Firewall is active and enabled on system startup

$ sudo iptables -L -v
するとルールが表示されますが長すぎて読む気になりませんw

$ sudo ufw status verbose
するとわかりやすいです。

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere

しかしこのルールの一覧はufw enableにしていないと見れないので注意


こんな使い方をする
$ sudo ufw allow from 10.0.0.0/8 to any app OpenSSH
と入れると

### tuple ### allow tcp 22 0.0.0.0/0 any 10.0.0.0/8 OpenSSH - in
-A ufw-user-input -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT -m comment --comment 'dapp_OpenSSH'

と設定が追加されるようです。