Ubuntu 標準搭載ソフトウェアファイアウォールの UFW です。前回 VPS の設定をしたときに少し使ったけど、もうちょっと覚えたいのでいろいろいじってみた。
UFW って何?
Ubuntu の中の人が作った iptables/NetFilter のフロントエンドツールです。iptables の設定結構だるいのでそれを簡単にするために作られたのでしょう。UFW は Uncomplicated FireWall の略で、U は Ubuntu じゃないです。間違えて覚えてました。。。
現在の状態を見る
ufw status で現在の設定を見る事ができます。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
10022 LIMIT Anywhere
80 ALLOW Anywhere
9987 ALLOW Anywhere
4949 DENY Anywhere
10022 ALLOW Anywhere (v6)
80 ALLOW Anywhere (v6)
9987 ALLOW Anywhere (v6)
4949 DENY Anywhere (v6)
sshd, WebサーバとTeamSpeakサーバですね。4949 は munin で使ってるポート番号なんだけど間違えて開けたので DENY 設定にしています。delete コマンド今知りました。
ufw の基本
基本的には、「デフォルトでは全て拒否、指定したものだけ許可する」というような動きをします。
$ sudo ufw default DENY
# 全て許可する設定も可能ですが推奨はしません
$ sudo ufw default ALLOW
ufw の有効/無効化
enable, disable をつけるだけです。
enable にするときは ssh を通す設定してないと通信切れるかもしれないという警告出してくれます。マシンが手元にある場合は良いですが VPS などで外部にある場合は通信できなくなると大変ですので気をつけましょう。ちなみにさくらの VPS ではコンソールから入れるのでネットワーク全遮断しても大丈夫、だよね?
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw disable
Firewall stopped and disabled on system startup
許可する通信を設定
ポート番号もしくはサービス名で指定してアクセスを許可できます。
$ sudo ufw allow 22
$ sudo ufw allow ssh
サービス名は /etc/services に記述されているものを使用します。なので使用するポート番号を変えている場合や、ここに無いサービス名の場合はポート番号をそのまま書いたり /etc/services を編集する必要があります。
また、tcpだけ許可するような設定も可能です。
$ sudo ufw allow 80/tcp
ufw ではアプリケーション単位での指定も可能ですがここでは省略します。
接続を拒否
標準では default DENY がついているのであえて指定する必要は無いですが、deny をつけるとその通信を拒否できます。
$ sudo ufw deny 21
設定を削除
引数に delete をつければ設定を削除できます。上記で ufw status して出てきたいらない設定を削除します。
$ sudo ufw delete deny 4949
接続の頻度を制限する
limit コマンドを使用して接続の頻度を指定できます。SSHなどのパスワード認証があるサービスでブルートフォースアタックを防ぐなどの際に便利です。SSHなら公開鍵使ったほうが良いですけどね。
$ sudo ufw limit 22
IPアドレスによる指定を行う
もちろん IP アドレスによる指定もできます。
$ sudo ufw allow from 192.168.0.10
# ネットワークの指定もOK
$ sudo ufw allow from 192.168.0.0/24
IP アドレスとポート番号/サービスの両方を指定
IP アドレスとポート番号/サービスの両方を指定する事も可能です。
$ sudo ufw allow from 192.168.0.l0 to any port ssh
$ sudo ufw allow from 192.168.0.l0 to any port 22
全体的にあんまり細かい設定はできないですが、そういうのが必要無いユーザにはとても便利ですね。