CentOS 8 / RHEL 8サーバーをインストールしたら、不正アクセスや侵入を防ぐためにサーバーを保護します。格言が進むにつれ、「予防は治療よりも優れている」ので、ハッキングの防止は修復を試みるよりも優れています。
CentOS 8 / RHEL 8サーバーを強化および保護し、ハッキングの試みを阻止するために実行できるいくつかの手順を見てみましょう。
1)ファイアウォールを設定する
セキュリティを重視するLinuxユーザーは、セキュリティ上の理由から、CentOS 8 /RHEL8システムへのトラフィックを許可するだけではありません。実際、ファイアウォールの設定は、システム管理者が特定のポートのみを開き、現在使用中のサービスを許可するために実行する必要があるサーバーの初期設定タスクの1つです。
デフォルトでは、CentsO8 /RHEL8システムにはfirewalldが付属しています。 コマンドを実行することにより、起動時に起動および有効化できるファイアウォール:
$ sudo systemctl start firewalld $ sudo systemctl enable firewalld
ファイアウォールで許可されているサービスを確認するには、次のコマンドを実行するだけです。
$ sudo firewall-cmd --list all
ファイアウォールのポート(ポート443など)を開くには、次のコマンドを実行します。
$ sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
sshなどのサービスを許可するには、次のコマンドを使用します:
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
ポートとサービスを削除するには、 –remove-portを使用します および–remove-service それぞれ属性。
変更を有効にするには、常に図のようにファイアウォールをリロードしてください。
$ sudo firewall-cmd --reload
2)未使用/望ましくないサービスを無効にする
サーバー上の未使用または不要なサービスをオフにすることを常にお勧めします。これは、実行中のサービスの数が多いほど、システムで開いているポートの数が多くなり、攻撃者がシステムに侵入するために悪用する可能性があるためです。さらに、プレーンテキストでトラフィックを送信するtelnetのような古くて安全でないサービスの使用をやめます
セキュリティのベストプラクティスでは、未使用のサービスを無効にし、システムで実行されている安全でないサービスをすべて削除することをお勧めします。 nmapツールを使用できます システムをスキャンして、開いていてリッスンされているポートを確認します。
3)重要なファイルを保護する
誤って削除または編集しないように、重要なファイルをロックダウンすることが不可欠です。このようなファイルには、ハッシュ化されたパスワードを含む/ etc/passwdおよび/etc/gshadowが含まれます。ファイルを不変にする(つまり、変更や誤った削除を防ぐ)には、chattrコマンドを使用します。 示されているように:
$ sudo chattr +i /etc/passwd $ sudo chattr +i /etc/shadow
これにより、ハッカーがユーザーのパスワードを変更したり削除したりして、システムへのログインを拒否することができなくなります。
4)セキュアSSHプロトコル
SSHプロトコルは、リモートログインに広く使用されているプロトコルです。デフォルトでは、プロトコルにはハッカーが悪用できる固有の弱点があります。
デフォルトでは、SSHはrootユーザーによるリモートログインを許可します。これは潜在的な抜け穴であり、ハッカーがシステムへのルートのパスワードを入手できる場合、サーバーはほとんど彼らに翻弄されます。これを防ぐには、リモートrootログインを拒否し、代わりにsudo権限を持つログイン通常ユーザーを作成することをお勧めします。これを行うには、SSH構成ファイル/ etc / ssh / sshd_configを変更し、次のようにルートログインを無効にします。
PermitRootLogin
SSHを保護するもう1つの方法は、sshキーを使用してSSHパスワードなし認証を設定することです。ブルートフォース攻撃を受けやすいパスワード認証を使用する代わりに、SSHキーが推奨されます。これは、sshキーを持つユーザーのみがリモートサーバーにログインし、他のユーザーをブロックできるためです。パスワードなしの認証を有効にする最初のステップは、次のコマンドを使用してキーペアを生成することです。
$ ssh-keygen
これにより、公開鍵と秘密鍵のペアが生成されます。公開鍵がリモートシステムまたはサーバーにコピーされている間、秘密鍵はホスト上に存在します。 ssh-keyペアがコピーされると、パスワードの入力を求められることなく、リモートシステムに簡単にログインできます。次に、/ etc / ssh / sshd_config構成ファイルを変更し、次の値を設定して、パスワード認証を無効にします。
PasswordAuthentication no
変更を加えたら、変更を有効にするためにSSHサービスを再起動してください。
$ sudo systemctl restart sshd
5)パスワードの試行の制限を定義します
サーバーをさらに強化するために、ブルートフォース攻撃を阻止するために、SSH経由でログを記録するときのパスワードの試行回数を制限することを検討してください。ここでも、SSH構成ファイルに移動し、スクロールして「MaxAuthTries」パラメータを見つけます。コメントを外し、値を設定します。たとえば、図のように3に設定します。
MaxAuthTries 3
これは、誤ったパスワードを3回試行した後、セッションが閉じられることを意味します。これは、システムにアクセスしようとするロボットスクリプト/プログラムをブロックする場合に特に便利です。
6)侵入防止システム(IPS)を設定する
これまで、CentOS 8 /RHEL8サーバーを強化するために実行できる基本的な手順について説明してきました。別のレイヤーを追加するには、侵入検知システムをインストールすることをお勧めします。 IPSの完璧な例はFail2banです。
Fail2banは、構成ファイルで指定できる一定回数のログイン試行後にIPアドレスを禁止することにより、ブルートフォース攻撃からサーバーを保護する無料のオープンソース侵入防止システムです。ブロックされると、悪意のあるユーザーまたは許可されていないユーザーは、SSHログインの試行を開始することさえできなくなります。
7)サーバーを定期的に更新します
この記事は、サーバーを定期的に更新することがいかに重要であるかを強調しなければ完成しません。これにより、サーバーは、既存のセキュリティ問題に対処するために不可欠な最新の機能とセキュリティ更新を確実に取得できます。
他の多くのタスクも実行するGUIベースのサーバー管理ツールであるコックピットユーティリティを使用して、自動更新を設定できます。これは、サーバーにアクセスせずに長期滞在や休暇を過ごす場合に特に理想的です。