本記事では、ufwの設定方法について解説します。
Linuxには、不要な通信をフィルタリングするツール「iptables」が使われています。
Ubuntuには、バージョン8.04 LTS以降、ファイアウォールツール「ufw(Uncomplicated FireWall)」が新たに標準でインストールされました。
ufwはiptablesのシンプルなフロントエンドツールで、ufwを使用することでiptablesを簡単に設定することができ、システムのセキュリティを向上させることができます。
その設定方法について、具体的にご説明していきます。
セキュリティを強化するために重要な機能ですので、本記事を参考にぜひ設定方法を理解し、扱えるようにしてください。
2022.10.13
Ubuntuとは。特徴、できること、通常版とLTE版の違いを解説
UbuntuはLinux系のOSであり、多くのLinuxディストリビューションの中でも高い人気を誇ります。非常に扱いやすいた...
UbuntuをVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
ufwの管理
前提条件
今回は、仮想マシン上に構築されたUbuntuを使用しています。
仮想マシンのスペックは以下のとおりです。
- CPU:2vCPU
- Memory:4GB
- Disk:50GB
- Ubuntuのバージョン:Ubuntu 22.04.2 LTS
また、コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。
ufwの管理
最初に、ufwを使用するための基本的なコマンドについて紹介します。
インストールした直後はufwが起動した状態ですが、停止や起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。
操作 | コマンド |
---|---|
ufwの状態確認 | $ sudo ufw status verbose |
ufwの停止 | $ sudo systemctl stop ufw |
ufwの起動 | $ sudo systemctl start ufw |
ufwの再起動 | $ sudo systemctl restart ufw |
設定のリロード | $ sudo systemctl reload ufw |
自動起動の有効化 | $ sudo systemctl enable ufw |
自動起動の無効化 | $ sudo systemctl disable ufw |
ufwの状態確認(デーモン) | $ sudo systemctl status ufw |
ufwの状態確認(設定) | $ sudo ufw status verbose |
ufwの設定の有効化 | $ sudo ufw enable |
ufwの設定の無効化 | $ sudo ufw disable |
ufwは、最初からデーモンが起動している状態ですが、設定としては無効になっています。
ufwデーモンの状態確認
$ sudo su
ufwデーモンの設定確認
$ sudo ufw status verbose
次のコマンドで設定を有効にします。
ufwの有効化
$ sudo ufw enable
起動した直後の状態では、何のルールも設定されていません。
このときの動作は「deny(incoming)」とあるように、外部からのパケットは廃棄する設定になっています。
つまり、必要な通信のみ許可する「ホワイトリスト方式」で設定を追加していきます。
ufwの設定
通信を遮断する設定は、ポート単位、IPアドレス単位、インタフェース単位など複数あります。
ここでは、よく利用される「ポート単位」および「IPアドレス単位」でのルール設定の方法について解説します。
ルールの追加(ポート指定)
ルールは、以下の3つを設定します。
- allow(許可)
- deny(廃棄)
- reject(拒絶)
デフォルトで外部からの通信はすべてdenyとなっているため、今回は外部から特定の通信を許可するルールを追加します。
以下は、全ての送信元ホストからの、ポート22の通信を許可する設定です。
プロトコル(TCP/UDP)を指定しなければ、TCP/UDP両方のポートが許可されます。
$ sudo ufw allow 22
また、連続したポートを指定することも可能です。
以下のコマンドでは、10000~10200ポートの通信を許可しています。
複数のポートを指定する場合は、プロトコル(TCPまたはUDP)どちらかを指定しないとエラーになりますので注意しましょう。
$ sudo ufw allow 10000:10200/tcp
ルールの削除(ポート指定)
追加したルールを削除したい場合は、以下のコマンドを実行します。
$ sudo ufw delete allow 22
このような形で「使用するポートのみ通信を許可」する設定を追加していけば、セキュリティを高めることができます。
また、使用しなくなったらルールを削除して通信を遮断するようにしておきましょう。
運用していくと、1度通信を許可した後、そのままにしてしまうこともあるでしょう。
そのようなポートが増えるとセキュリティのリスクとなりますので、定期的に見直すことが大切です。
ルールの追加(送信元IPアドレス指定)
特定のホストからの通信を全ポート許可したい場合、IPアドレスを指定します。
以下の例では、送信元192.168.0.1/32からの通信を許可しています。
$ sudo ufw allow from 192.168.0.1/32
「/32」はサブネットマスクを指定しています。
/32ですと、そのIPアドレスが設定された特定ホストでルールが設定されますが、「/16」「/24」等設定すれば、そのネットワーク帯に含まれるすべてのホストが対象になります。
つまり、複数のホストからの全ての通信を許可することも可能です。
ルールの削除(送信元IPアドレス指定)
追加したルールを削除したい場合は、以下のコマンドを実行します。
$ sudo ufw delete allow from 192.168.0.1/32
送信元IPアドレスを指定することで、より多くのホストに対して設定を行うことができます。
設定を誤ってしまうと、想定外のホストからの通信を許可してしまうことになるので、設定には十分気をつけましょう。
ufw設定のバックアップとリストア
ufwの設定内容はファイルで管理されています。
そのファイルをバックアップすれば、追加した設定を保存しておくことができます。
IPv4とIPv6は別ファイルに保存されていますので、それぞれのバックアップを忘れないようにしましょう。
設定ファイルの保存場所
/etc/ufw/user.rules ※IPv4の設定
/etc/ufw/user6.rules ※IPv6の設定
逆に、バックアップしたファイルで置き換えれば、設定を戻すことができます。
設定を戻すときは、バックアップしたファイルを置き換えたあと、以下のコマンドで設定をリロードして反映します。
$ sudo ufw reload
まとめ
今回はUbuntuに標準でインストールされているufwの設定方法について解説しました。
特定のポートやIPアドレス、インタフェースのみ通信を許可することによって、外部からの攻撃や不要な通信からサーバーを守ることができます。
セキュリティを強化するために重要な機能ですので、ぜひ設定方法を理解し、扱えるようにしてください。
UbuntuをVPSで利用するならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。