オペレーティングシステムの要の1つは、完全なシステムセキュリティのために適切に構成されたファイアウォールです。 UFW(Uncomplicated Firewall)は、Ubuntuオペレーティングシステムのデフォルトにインストールされています。ただし、有効になっていません。 UFWの大きな利点の1つは、そのシンプルさ、ユーザーフレンドリーで使いやすいコマンドラインであり、Linuxの初心者から最先端のパワーユーザーに最適です。
次のチュートリアルでは、コマンドターミナルを使用して、Ubuntu 20.04 LTSFocalFossaデスクトップまたはサーバーにUFWファイアウォールをインストールしてセットアップする方法を学習します。
- 推奨OS: Ubuntu 20.04
- ユーザーアカウント: sudoのユーザーアカウント またはルートアクセス。
オペレーティングシステムの更新
Ubuntuを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo apt update && sudo apt upgrade -y
チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定 。
アカウントのsudoステータスを確認するには:
sudo whoami
sudoステータスを示す出力例:
[joshua@ubuntu ~]$ sudo whoami
root
既存または新規のsudoアカウントを設定するには、UbuntuでSudoersにユーザーを追加する方法のチュートリアルにアクセスしてください。 。
rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。
su
UFWを有効、インストール、または削除する方法
UFWファイアウォールを設定する最初のステップは、ファイアウォールを有効にすることです。
sudo ufw enable
出力例:
Firewall is active and enabled on system startup
デフォルトでは、すべての着信トラフィックが自動的にブロックされ、ファイアウォールが有効になるとすべての発信が許可されます。これにより、だれもがシステムにリモート接続するのを防ぐことができ、システムが即座に保護されます。
以前にUFWが削除されていて、次のコマンドを使用してファイアウォールを再インストールする場合。
sudo apt install ufw -y
次に、UFWのステータスを確認して、UFWがアクティブでエラーがないことを確認します。
sudo systemctl status ufw
出力例:
今後、UFWを一時的に無効にする必要がある場合は、次のコマンドを使用してください。
sudo ufw disable
UbuntuシステムからUFWを完全に削除するには。
sudo apt autoremove ufw --purge
特にパブリックに接続されたサーバー環境を実行している場合は、確実なオプションがあるか、IPTablesの使用方法を知らない限り、UFWを削除しないでください。これは悲惨なことになります。
UFWステータスを確認する方法
UFWを有効にしたら、ファイアウォールルールのステータスを表示し、アクティブなものを以下を使用して表示します。
sudo ufw status verbose
出力例:
上記の例では冗長フラグを使用しました。別のオプションとして、ルールを番号順に一覧表示します。これは、後でルールを削除するときにはるかに管理しやすくなります。
sudo ufw status numbered
出力例:
これで、 [1]、[2]ができました 上記の出力にあるように、識別のためのUFWルールの番号ラベル。
UFWデフォルトポリシーを設定する方法
UFWファイアウォールのデフォルトのポリシーは、すべての着信接続を拒否し、システムへの発信接続のみを許可することです。通常、IPアドレス/範囲、プログラム、ポート、またはすべての組み合わせを許可しない限り、誰もサーバーに到達できない最も安全なデフォルトの方法です。デフォルトでは、システムは外部にアクセスできますが、特定のセキュリティ要件がない限り、調整しないでください。
参考までに、デフォルトのUFWファイアウォールポリシーは / etc / default / ufwの場所にあります。 。
次のコマンドを入力してルールを調整するには:
すべての着信接続を拒否するには:
sudo ufw default deny incoming
すべての発信接続を許可するには:
sudo ufw default allow outgoing
これは、有効にするとデフォルトのルールとしてすでに設定されていますが、同じ原則を使用して、目的に合わせてルールを変更できます。
たとえば、すべての着信通信はデフォルトでブロックされていますが、すべての発信をブロックし、承認された接続のみを発信に許可する場合は、次のコマンドを使用します。
すべての発信接続をブロックするには:
sudo ufw default deny outgoing
これは極端な手段です。通常、平均的なサーバーとデスクトップでは着信接続をブロックするだけで十分ですが、特定の環境では、追加のセキュリティ対策の恩恵を受けることができます。欠点は、すべての発信接続をメインにする必要があることです。これには時間がかかり、新しいルールを継続的に設定する可能性があります。
UFWアプリケーションプロファイルを表示する方法
すべてのアプリケーションプロファイルを表示するには、次のように入力します。
sudo ufw app list
出力例:
上記は単なる例であり、同じアプリケーションがインストールされている人はいないため、リストは人によって異なります。
アプリケーションプロファイルの便利な機能は、UFWアプリケーションリストにリストされているサービスの詳細を調べることです。
これを行うには、次のコマンドを入力して、既存のプロファイルに関する詳細情報を検索します。
sudo ufw app info CUPS
出力例:
上記のように、アプリケーションの一般的な説明とそれが使用するポートのプリントアウト。これは、開いているポートを調査していて、それらがどのアプリケーションに関連していて、アプリケーションが何をしているのかわからない場合に便利な機能です。
UFWでIPv6を有効にする方法
UbuntuシステムがIPv6で構成されている場合は、UFWがIPv6およびIPv4サポートで構成されていることを確認する必要があります。デフォルトでは、これは自動的に有効になります。ただし、確認し、必要に応じて変更する必要があります。これは次の方法で実行できます。
デフォルトのUFWファイアウォールファイルを開きます。
sudo nano /etc/default/ufw
設定されていない場合は、次の行をyesに調整します。
IPV6=yes
CTRL + O 新しい変更をファイルに保存するには、 CTRL + Xを押します。 ファイルを終了します。
次に、UFWファイアウォールサービスを再起動して、変更をアクティブにします。
sudo systemctl restart ufw
UFWSSH接続を許可する方法
デフォルトでは、UFWはSSH接続を許可していません。すでにファイアウォールをリモートで有効にしていた場合は、自分がロックアウトされていることに気付くでしょう。
これを修正するには、特にリモートサーバーに接続している場合は、UFWファイアウォールを有効にする前に次のSSH構成を設定する必要があります。
まず、SSHアプリケーションプロファイルを有効にします。
sudo ufw allow ssh
デフォルトのポート22以外のSSH接続用のカスタムリスニングポート(ポート3541など)を設定した場合は、次のように入力してUFWファイアウォールのポートを開きます。
sudo ufw allow 3541/tcp
すべてのSSH接続をブロックするか、ポートを変更して古い接続をブロックする場合。
すべてのSSH接続をブロックするには(ローカルアクセスが可能であることを確認してください) 、次のコマンドを使用します。
sudo ufw deny ssh/tcp
カスタムSSHポートを変更する場合は、新しいポートを開き、既存のポートを閉じます。チュートリアルの例はポート3541です。
sudo ufw deny 3541/tcp
UFWポートを有効にする方法
UFWを使用すると、ファイアウォールで特定のポートを開いて、特定のアプリケーションに指定された接続を許可できます。アプリケーションにカスタマイズされたルールを設定できます。このルールの優れた例は、ポート 80(HTTP)でリッスンするWebサーバーを設定することです。 および443(HTTPS) デフォルトで。
HTTPポート80を許可する
アプリケーションプロファイルによる許可:
sudo ufw allow 'Nginx HTTP'
サービス名で許可:
sudo ufw allow http
ポート番号で許可:
sudo ufw allow 80/tcp
HTTPSポート443を許可する
アプリケーションプロファイルによる許可:
sudo ufw allow 'Nginx HTTPS'
サービス名で許可:
sudo ufw allow https
ポート番号で許可:
sudo ufw allow 443/tcp
次のコマンドを使用して、デフォルトですべてのルールをまとめて有効にできることに注意してください。
sudo ufw allow 'Nginx Full'
UFW許可ポート範囲
UFWはポート範囲へのアクセスを許可できます。ポート範囲を開くときは、ポートプロトコルを特定する必要があることに注意してください。
TCPとUDPでポート範囲を許可する:
sudo ufw allow 6500:6800/tcp
sudo ufw allow 6500:6800/udp
または、1回のヒットで複数のポートを許可することもできますが、上記のようにレンジングを許可する方がアクセスしやすい場合があります。
sudo ufw allow 6500, 6501, 6505, 6509/tcp
sudo ufw allow 6500, 6501, 6505, 6509/udp
UFWでリモート接続を許可する方法
UFWは特定のIPアドレスを許可します
たとえば、指定されたIPアドレスを許可するには、内部ネットワークを使用していて、システムが相互に通信する必要がある場合は、次のコマンドを使用します。
sudo ufw allow from 192.168.55.131
UFWは特定のポートで特定のIPアドレスを許可します
定義されたポート(ポートの例「3900」)でIPがシステムに接続できるようにするには 、次のように入力します。
sudo ufw allow from 192.168.55.131 to any port 3900
指定されたポートへのサブネット接続を許可する
IP範囲サブネットから特定のポートへの全範囲の接続が必要な場合は、次のルールを作成することでこれを有効にできます。
sudo ufw allow from 192.168.1.0/24 to any port 3900
これにより、192.168.1.1から192.168.1.254までのすべてのIPアドレスがポート3900に接続できるようになります。
特定のネットワークインターフェースを許可する
たとえば、特定のネットワークインターフェイス「eth2」への接続を指定されたポート3900に許可します。これは、次のルールを作成することで実現できます。
sudo ufw allow in on eth2 to any port 3900
UFWでリモート接続を拒否する方法
UFWのデフォルトのセットアップポリシーに従って、インストールすると、すべての着信接続が「拒否」に設定されます。 これにより、接続の通過を許可するルールを作成しない限り、すべての着信トラフィックが拒否されます。
ただし、ログで特定のIPアドレスが攻撃を続けていることに気づきました。次のようにブロックします。
sudo ufw deny from 203.13.56.121
ハッカーは、同じサブネットの複数のIPアドレスを使用してあなたをハッキングしようとしています。ブロックするには、以下を作成します。
sudo ufw deny from 203.13.56.121/24
特定のポートへのアクセスを拒否する場合は、特定のルールを作成できます。次の例を入力します。
sudo ufw deny from 203.13.56.121/24 to any port 80
sudo ufw deny from 203.13.56.121/24 to any port 443
UFWルールを削除する方法
ルールを作成して拒否しましたが、ルールが不要になったため、ルールを削除する必要があります。これは、2つの異なる方法で実現できます。
まず、ルール番号を使用してUFWルールを削除するには、次のように入力してルール番号を一覧表示する必要があります。
sudo ufw status numbered
出力例:
この例では、上記で強調表示されているIPアドレス1.1.1.1の4番目のルールを削除します。
端末に次のように入力します。
sudo ufw delete 1
次に、実際のルール自体を使用してUFWルールを削除できます。
sudo ufw delete allow 80/tcp
ルールが削除されて成功すると、次の出力が得られます。
Rule deleted
Rule deleted (v6)
UFWログにアクセスして表示する方法
デフォルトでは、UFWロギングは低に設定されています。これは、ほとんどのデスクトップシステムで問題ありません。ただし、サーバーはより高いレベルのロギングを必要とする場合があります。
UFWロギングを低(デフォルト)に設定するには:
sudo ufw logging low
UFWロギングを中程度に設定するには:
sudo ufw logging medium
UFWロギングを高に設定するには:
sudo ufw logging high
最後のオプションは、ロギングを完全に無効にすることです。これに満足し、ログチェックを必要としないことを確認してください。
sudo ufw logging off
UFWログを表示するために、それらはデフォルトの場所 /var/log/ufw.logに保持されます 。
ライブログを表示する簡単で迅速な方法は、tailコマンドを使用することです。
sudo ufw tail -f /var/log/ufw.log
または、 -n
sudo ufw tail /var/log/ufw.log -n 30
これにより、ログの最後の30行が出力されます。 GREPやその他の並べ替えコマンドを使用してさらに微調整できます。
UFWルールをテストする方法
非常に重要なシステムは、ファイアウォール設定をいじるときに適したオプションであり、 –ドライランフラグを追加できます。 。これにより、発生したであろう変更の例を確認できますが、処理は行われません。
sudo ufw --dry-run enable
–ドライランフラグを無効にするには 、次のコマンドを使用します。
sudo ufw --dry-run disable
UFWルールをリセットする方法
すべての着信がブロックされ、発信が許可されるように設定された状態でファイアウォールを元の状態にリセットするには、次のように入力してリセットします。
sudo ufw reset
リセットを確認し、次のように入力します:
sudo ufw status
出力は次のようになります:
Status: inactive
UFWファイアウォールをリセットしたら、ファイアウォールを再度有効にして、ルールを追加するプロセス全体を開始する必要があります。可能であれば、resetコマンドは慎重に使用する必要があります。
開いているすべてのポートを見つける方法(セキュリティチェック)
ほとんどのシステムは、ポートを開くことができることを認識していません。インターネット上のすべてのIPアドレスが毎日スキャンされる時代では、舞台裏で何が起こっているかを監視することが重要です。
最良のオプションは、Nmapをインストールしてから、この有名なアプリケーションを使用して、開いているポートを一覧表示することです。
sudo apt install nmap
次に、システムの内部IPアドレスを見つけます。
hostname -I
出力例:
192.168.50.45
次に、サーバーのIPアドレスで次のNmapコマンドを使用します。
sudo nmap 192.168.50.45
出力例:
上記のように、ポート9090と80は開いています。ポートをブロックする前に、不明な場合はまずポートが何であるかを調べてください。
この時点から、チュートリアルで学習したカスタムUFWルールを作成して、開いているポートを閉じたり制限したりできます。