2020年6月22日月曜日

Ubuntuサーバに最低限やっておくべきセキュリティ対策 ~ufw編~

前回の記事ではiptablesを用いたファイアウォールの設定を紹介した。
今回はufwというツールを用いたファイアウォールの設定方法を紹介する。

そもそもufwとは何かというと、Ubuntu独自のiptablesのフロントエンドツールであり内部的にはiptablesを利用している。

iptablesコマンドを用いた方法では複数のコマンドをターミナル打ち込んだり、systemdによる自動起動の設定を行わなければならないなどの面倒な手続きが多かった。
しかし、ufwを用いればそれらの煩雑な手続きを必要とせずにファイアウォールの設定ができる。

1. ufwが利用可能かどうかを確認する


  $ systemctl status ufw
上記コマンドを入力して下記のような表示が出たらufwの利用が可能な状態である。

サービスが見つからないと出てきたらaptを使ってインストールする。
$ sudo apt install ufw

ufwのサービスが見つかった、またはインストールが完了したら
$ sudo ufw status
のコマンドを実行してufwが機能しているかどうかを確認。
何もいじっていない状態では

状態:非アクティブ

と出てくるはず

2. サーバで提供するサービスの通信を許可

ufwを有効な状態にする。
$ sudo ufw enable
下記コマンドで現在のufw設定を確認できる
$ sudo ufw status verbose
デフォルトで入ってくる通信が遮断されて、出てゆく通信はフリーパス状態。内部での転送は使用不可の状態になっているはず
(上記コマンド実行結果の"Default"で始まる行に書かれている)。

あとはサーバで提供するサービスが使用するポートへの通信を許可してゆけばよい。

sshの場合
$ sudo ufw allow in ssh
上記を実行するとufwのステータスに
22/tcp      on enp3s0           ALLOW IN    Anywere
22/tcp (v6) on enp3s0           ALLOW IN    Anywere
が追加されるはず。
ipv6向けのファイアウォール設定も追加されている。便利。

sshの接続元ネットワークセグメントを制限したい場合は
$ sudo ufw allow in from 192.168.10.0/24 to any port 22/tcp
とすると、192.168.10.~ のセグメントの端末からのsshしか受け付けなくなる。
書式は下記で覚えておけばよい
sudo ufw allow in from [ネットワークセグメント/ネットマスク] to any port [ポート番号/プロトコル]

http(80)等も同様にすればよいだろう。設定が終わったら
$ sudo ufw reload
を実行すると設定が反映される。

3. 出てゆく通信の一部を制限

蛇足かもしれないが内輪でやり取りされるべき通信が外部向けのインターフェイスから出てゆかないようにするための設定も施しておく。
$ sudo ufw deny out on eth0 from any to 10.0.0.0/8
$ sudo ufw deny out on eth0 from any to 176.10.0.0/12
$ sudo ufw deny out on eth0 from any to 127.0.0.0/8
$ sudo ufw deny out on eth0 from any to 192.168.0.0/16
$ sudo ufw deny out from any to fe80::/10
上記の各IPアドレスは内部やローカルセグメント用のIPアドレスであり基本的に外部ネットワークへと出てゆくことがないものである。
入力と違ってinの部分がoutになっているほか、outの後に"on [インターフェイス]"で外部ネットワークに繋がっているインターフェイスを指定している。

4. 起動時に自動的に反映されるようにする

iptablesの設定はシャットダウンのたびに消えるためiptables-restoreとsystemdを組み合わせる等して再起動時に自動的に再設定されるように工夫しなければならない。
ではufwではどうすればよいかというと
不要
である。便利。

設定方法も煩雑ではないし、特に何もしなくても再起動時の再反映をしてくれるため、ファイアウォールについてはよくわからないけど何もしないよりは安心できるから何か設定しておきたい。という場合はufwを使うようにすることをお勧めする。

ただ、ufwの場合は同じIPアドレスからの新規アクセス試行数に制限を加える(所謂brute force対策)など柔軟(あるいは複雑な)設定を行うのに向いていない。
もっと複雑な設定を施したい場合はiptablesコマンド直打ちで頑張る方がよいだろう。

0 件のコメント:

コメントを投稿

Ubuntuサーバに最低限やっておくべきセキュリティ対策 ~ufw編~

前回の記事ではiptablesを用いたファイアウォールの設定を紹介した。 今回はufwというツールを用いたファイアウォールの設定方法を紹介する。 そもそもufwとは何かというと、Ubuntu独自のiptablesのフロントエンドツールであり内部的にはiptablesを利...