ufw(Uncomplicated FireWall)と言えばUbuntuに最初からインストールされている「ファイアウォール」ソフトウェアであり、Gufwはそのグラフィカルフロントエンドです。今回は14.04から14.10にかけて大きく機能が追加されたGufwについて紹介します。
ufwの新機能
デスクトップ版もサーバー版もufwは最初からインストールされてはいるのですが、初期設定では無効化されています。ufwを使いたい場合は、その設定方法を確認したうえで自分で適切に設定する必要があります。
ufwもGufwも既に5年以上前の第76回 や第77回 で詳しく紹介しています。基本的な機能や仕組み、コマンド体系についてはそれほど変わってはいませんので、まずはそちらを一通り読むようにしてください。
変更点は少ないものの、便利な機能がいくつか追加されています。5年前からUbuntu 14.04 LTSで使われているバージョン0.34-rcまでのufwの変更点のうち、主だった部分を挙げておきましょう。
egress filteringのサポート
前述の記事では「( 今のところ)ufwはあくまでインバウンド通信の制御に特化しています」とありましたが、その2ヵ月後にはingressだけでなくegress filteringのサポートが追加されました。
具体的には「allow、deny、reject、limit」の後ろにホストに入ってくるパケットを制御するなら「in」 、ホストから出て行くパケットを制御するなら「out」を追加します。
$ sudo ufw reject out smtp
上記の場合、ホストから外に出て行くSMTPパケットを遮断することになります。なおin/outどちらも指定しなかった場合は、従来どおりインバウンドのみの操作となります。
インターフェースの指定が可能に
to/fromによる宛先や上記のようなin/outに加えて、「 on eth0」といった形でルールを適用するインターフェースを指定できるようになりました。
$ sudo ufw allow in on eth0 from 192.168 . 0.0 / 16
たとえば上記の場合、eth0のみ192.168.x.xからのパケットを許可します。さらに「on eth+」のように「+」を利用することで複数のインターフェースにマッチさせることも可能です。指定しない場合は、すべてのインターフェースにルールが適用されます。
IPフォワードの設定が可能に
14.04以降には、routeコマンドという形でIPフォワードの設定方法が追加されました[1] 。
[1] ただしまだstateを見ると言った細かい設定はできないようです。PREROUTINGなどの設定ができるわけではないため、ポートフォワードをしたい場合は/etc/ufw/before.rulesを編集する必要があるという点も変わっていません。
$ sudo ufw route allow in on eth0 out on eth1 to 10.0 . 0.1 port 80 from 192.168 . 0.1 port 80
$ sudo ufw status
Status : active
To Action From
-- ------ ----
22 ALLOW Anywhere
22 ( v6 ) ALLOW Anywhere ( v6 )
10.0 . 0.1 80 on eth1 ALLOW FWD 192.168 . 0.1 80 on eth0
上記のようなコマンドは以下のルールに変換されます。
- A ufw - user - forward - i eth0 - o eth1 - d 10.0 . 0.1 -- dport 25 - s 192.168 . 0.1 -- sport 25 - j ACCEPT
ただしこれを利用するためにはsysctlのIPフォワードに関する以下の設定を有効にしておく必要があります。
net / ipv4 / ip_forward = 1
net / ipv6 / conf / default / forwarding = 1
net / ipv6 / conf / all / forwarding = 1
一般的には/etc/sysctl.confや/etc/sysctl.conf.d/で設定しますが、ufwを使用している場合は/etc/uwf/sysctl.confの中にある設定を有効にするだけでもかまいません。
その他
ufw resetで設定をすべて初期状態に戻せるようになりました
IPv6が最初からサポートされるようになりました
ufw delete時もuwf status numberdの番号を指定できるようになりました
Gufwの新機能
Gufwは5年前と比べると、見た目も機能もかなり大きく変わっています。とくに「プロファイル」機能が付いたため、自宅・会社・公衆Wi-Fiといったシーンに合わせてファイアウォールルールを一発で切り替えられるようになりました。
図1 プロファイルは自分でカスタマイズできる
初期状態のプロファイルは「Home」です。これはufwが無効化された、何も保護しない状態となります。他にプリセットなプロファイルとして「Office」と「Public」があります。どちらもの外向きの通信は許可し、外から来る通信はブロックするのですが、ブロック時にOfficeの場合はDeny、Publicの場合はRejectになるという違いがあります。
「Rules」を選び下のプラスボタンを押せばフィルタリングルールを追加できます。サービスタブはufwでいうところの「app」と似たような機能で、アプリケーションごとに設定されたフィルタリングルールを一括で指定できます[2] 。かなりの種類がありますので、カテゴリー・サブカテゴリーで絞り込んでから選ぶと良いでしょう。
図2 プリセットから選べるサービスタブ
簡易タブはufwの基本機能と同じ、ポート番号・プロトコル・通信の向きとポリシーだけで設定できる項目です。どのような通信をブロックすべきかあらかじめわかっている場合に使うことになります。
図3 基本的なルールを作成できる簡易タブ
詳細タブはその名のとおり、詳細なルールを作成できるタブです。インターフェースの指定やログのオン・オフ、FROM/TOの指定、ルールの挿入場所など、ufwでできる設定のほぼすべてを網羅しています。
図4 コマンドが苦手な人向けの詳細タブ
図5 ルールを追加した状態。ルールを選択して歯車ボタンを押せばカスタマイズできる
Gufwの特徴的な機能の1つは、「 Report」から通信中のネットワーク情報を使ってルールを作成できるということです。「 Report」を開くとlisten中のポート番号とアプリケーションの一覧が表示されますので、ルールを作成したいカラムを選択し、左下のプラスボタンを押してください。あとは詳細タブと手順は同じです。
図6 TCP/UDPのlisten中のポート一覧が表示されている
routeコマンド相当の機能はIPフォワードが有効になっている環境のみ表示されます。たとえば前述のIPフォワードの説明を元に/etc/ufw/sysctl.confを切り替えたうえで、Gufwを再起動してください。メイン画面に「Routed」の、詳細タブに「Forward」入力画面がそれぞれ追加されることがわかるはずです。
図7 IPフォワード有効時設定画面
このようにGufwは最近になってufwのGUIフロントエンドとして申し分ない機能を備えるようになりました。ちなみにGufwのドキュメントには サーバーにGufwをインストールした上で、X over ssh経由でローカルのLinuxやWindowsでGufwを使う方法が掲載されています。サーバーにXやGTKのライブラリをインストールしなくてはいけないものの、どうしてもグラフィカルに設定したい場合は参考にしてみると良いでしょう。
Ubuntu 10周年記念オフラインミーティング
既にUbuntu Weekly Topicsでは告知しています ように、今週末の12月13日(土)にUbuntu Japanese TeamはGREE( 株) 主催のもと10周年記念のイベントを開催します。本連載でお馴染みの執筆陣も居たり居なかったりしますので、ぜひ読者の皆様も参加をお待ちしております。なお参加にはATNDからの事前申し込み が必要です。イベントまで日がありませんので、これを読んだらすぐにでも予定を確認して申し込みを!