Ubuntuのファイヤーウォール「ufw」
Webサーバーを構築するための下準備を進めてみたいと思います。
パッと思いつくところは、こんなものでしょうか?
Ubuntuのファイヤーウォール
CentOSの場合は、ファイヤーウォールとして「iptables」や「firewalld」が用意されています。
Ubuntuの場合は、「ufw」というツールが用意されていました。
ufwとは?
ufwの情報源
英語のページは多分読まないと思いますが、トラブル解決で詳細を調べるときに役立つかも?
Uncomplicated Firewall - Wikipedia
UncomplicatedFirewall - Ubuntu Wiki
ufwの注意点
iptablesを直接いじるツールが他にあると、ufwで行なった設定とは別のフィルターが働いてしまう場合もあるようです。
UFW と docker の両方を使用するサーバで、UFW で許可していないポート番号がいつのまにか空いてしまった問題に遭遇しました。
docker run の -p や -P オプションでコンテナを起動すると、Docker は、その指定されたポート番号について、ファイアーウォールに穴を開ける処理をします。
どうして UFW で確認できなかったのでしょうか? それは … 直接 iptables のルール一覧を確認すれば分かるかもしれません。
UFW が設定したルールには、"ufw-[hogehoge]" という名前が付いています。一方、"DOCKER" で始まるチェーンも見ることができますが、こちらは明らかに Docker によって追加されたルールですね。
UFW は 自分が設定したルール、すなわち “ufw-[hogehoge]” についてのみ管理対象としているようです。従って、Docker など他のプログラムや、手作業で追加したルールについては関与していません。
「ufw」でファイヤーウォールの設定をした後、念のためiptablesのルール一覧を直接目視確認して、他のツールの設定と競合していないか?チェックしておく必要がありそうです。
これは盲点ですね?
まあ、それでも直接iptablesをいじるのは面倒なので、ufwでやれることはufwでやった方が楽そうです。
ufwの使い方
ufwの基本的な使い方が紹介されていました。
ufwのGUI「Gufw」
せっかく便利なGUIが用意されているなら、GUIで使ってみたいです。
ufwのバージョン確認
ufwは、デフォルトでUbuntuにインストールされています。
入っているufwのバージョンを確認してみましょう。
ターミナル画面で、次のコマンドを入力します。
$ ufw version
Ubuntu 16.04 LTSには、ufwのバージョン0.35が入っているようです?
ufwのインストール
ufwがなかった場合はインストール作業を行います。
ufwパッケージをインストールします。
$ sudo apt install -y ufw
$ sudo systemctl enable ufw
$ sudo systemctl restart ufw
Gufwのインストール
ターミナル画面でufwを操作しても良いのですが、ufw用のGUIがあったので使ってみます。
sudo apt-get install gufw
ターミナル画面で上記のコマンドを入力します。
Gufwの起動
ターミナル画面で「gufw」とコマンドを入力すると、Gufwが起動します。
または、「コンピューターの検索」で「gufw」と入力します。Gufwのアイコンが表示されるので、それをクリックします。
次からすぐに呼び出せるように、画面左側のランチャーのアイコンを右クリックして、ランチャーに登録しておきます。
Gufwで「Status」を「オン」に切り替えたら、ファイヤーウォールが有効になります。
- 「ルール」のタブで、必要なフィルターのルールを追加していけばOK。
- 後で、Nignxなどをインストールしたら、ポートを開けて、アクセスを許可します。
まとめ
Ubuntuのファイヤーウォールは、わりと手軽に使えるので助かりました。

絶対つまずかない Linuxサーバー構築ガイド(日経BPパソコンベストムック)
- 作者: 日経Linux
- 出版社/メーカー: 日経BP社
- 発売日: 2016/08/08
- メディア: 単行本
- この商品を含むブログを見る