はじめに
備忘録
タイトルの通りです。
実行環境はUbuntu20.04(bash)です。
どなたかのお役に立てれば幸いです。
UFWのステータスを確認
以下のコマンドでUFWが起動しているかどうか確認してみましょう。
$ sudo ufw status
起動していない場合
Status: inactive
UFWを有効化
UFWを起動してみましょう。
$ sudo ufw enable
「コマンドにより、既存のSSH接続が中断される場合があります。操作を続行しますか(y/n)?」
と出てきた場合には、必ず「y」で操作を続行してください。
SSHで接続している場合は、このままログアウトすると再度サーバーにログインできなくなる可能性があります。
サーバーの管理画面などから直接ターミナルを開いている場合(SSHをしていない場合)は関係ありません。
有効化した後にもう一度
$ sudo ufw status
をしてみると、ステータスが「active」になっていることを確認できます。
デフォルトを拒否に設定する
次のコマンドにより、サーバーへのアクセスをデフォルトで拒否することができます。
$ sudo ufw default deny
許可するポート番号を指定
SSH接続でよく使われる22番ポートを解放するためには次のコマンドを実行します。
$ sudo ufw allow 22
プロトコルを指定しない場合にはTCPとUDPがどちらも許可されます。
初期設定では、IPv4だけではなく、IPv6のルールも追加されます。
IPv6の設定を無効にする方法はこちら(この記事の下の方で紹介しています。)
プロトコルを指定
TCPを指定
$ sudo ufw allow 22/tcp
UDPを指定
$ sudo ufw allow 22/udp
許可するIPアドレスを指定
10.255.3.210から22番ポートへのアクセスを許可する場合
$ sudo ufw allow from 10.255.3.210 to any port 22
$ sudo ufw allow from 10.255.3.0/24 to any port 22
のようにサブネットマスクを指定することで、↑の例であれば10.255.3.xxxからのアクセスをまとめて許可することもできます。
さらにプロトコルを指定
$ sudo ufw allow from 10.255.3.210 to any port 22 proto tcp
グローバルIPアドレスを持ったサーバーにローカルのIPアドレスからログインする場合、ルーターによりIPアドレスが書き換えられるため、サーバーに届くパケットの送信元はルーターのIPアドレスに変わっています。
つまり、IPを指定してUFWを設定する際に、ローカルのIPアドレスからのアクセスのみ許可したい場合には、ルーターのIPアドレスを指定する必要があります。
UFWのステータスを確認
これまでに設定したルール一覧を確認してみましょう。
$ sudo ufw status
番号付きで設定したルール一覧を確認
$ sudo ufw status numbered
番号を指定してルールを削除
1番のルールを削除
$ sudo ufw delete 1
UFWをリロード
ルールを追加したり削除したりした後は再読み込みしておきましょう。
$ sudo ufw reload
IPv6の設定を無効にする
/etc/default/ufwを編集
$ sudo nano /etc/default/ufw
- IPV6=yes
+ IPV6=no
UFWを再起動
$ sudo systemctl restart ufw.service
IPv6を無効化できたか確認
$ sudo ufw status
ブログもあります