CentOS / RHEL 7でハードリンクおよびシンボリックリンクを保護する方法


Linuxでは、ハードリンクとソフトリンクはファイルを参照しています。これは非常に重要です。

一般的な脆弱性はシンボリックリンクの競合です。これはソフトウェアのセキュリティ上の脆弱性です。プログラムが安全にファイル(特に一時ファイル)を作成し、悪意のあるシステムユーザーがそのようなファイルへのシンボリックリンクを作成することができます。

これは事実上起こります。プログラムは、一時ファイルが存在するかどうかを確認します。存在しない場合は、ファイルを作成します。しかし、ファイルのチェックから作成までの短時間の間に、攻撃者はファイルへのシンボリックリンクを作成する可能性があり、アクセスを許可されません。

そのため、プログラムが有効な権限で実行されると、攻撃者が作成したファイルと同じ名前のファイルが作成され、攻撃者がアクセスしようとしていたターゲット(リンク先)ファイルが文字通りに作成されます。そのため、これにより、攻撃者はルートアカウントから機密情報を盗み取る、またはシステム上で悪質なプログラムを実行するための経路を手に入れることができます。

そのため、この記事では、 CentOS/RHEL 7 ディストリビューションで悪意のあるユーザーやハッカーからのハードリンクとシンボリックリンクを保護する方法について説明します。

CentOS/RHEL 7 には、以下に説明するようにいくつかの条件が満たされた場合にのみリンクを作成または追跡することを許可する重要なセキュリティ機能があります。

システムユーザーがリンクを作成するには、次のいずれかの条件を満たす必要があります。

  • the user can only link to files that he or she owns.
  • the user must first have read and write access to a file, that he or she wants to link to.

プロセスは、スティッキービットを持つ(他のユーザーが書き込みを許可されている)ディレクトリへの書き込みが許可されているディレクトリの外部にあるリンクのみをたどることが許可されています。

  • the process following the symbolic link is the owner of the symbolic link.
  • the owner of the directory is also the owner of the symbolic link.

ハードリンクとシンボリックリンクの保護を有効または無効にする

重要なことに、デフォルトでは、この機能はファイル /usr/lib/sysctl.d/50-default.conf のカーネルパラメータを使用して有効になっています( 1 の値は有効にすることを意味します)。 )

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

ただし、何らかの理由で、このセキュリティ機能を無効にしたい場合。以下のカーネルオプションで /etc/sysctl.d/51-no-protect-links.conf という名前のファイルを作成します( 0 の値は無効を意味します)。

ファイル名の 51 に注意してください( 51-no-protect-links.conf )。デフォルト設定を上書きするには、デフォルトファイルの後に読み込む必要があります。

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

ファイルを保存して閉じます。次に、以下のコマンドを使用して上記の変更を有効にします(このコマンドは実際には各システム構成ファイルから設定をロードします)。

# sysctl --system
OR
# sysctl -p  #on older systems

以下の記事も読んでください。

  1. How to Password Protect a Vim File in Linux
  2. 5 ‘chattr’ Commands to Make Important Files IMMUTABLE (Unchangeable) in Linux

それで全部です!あなたはあなたの質問を投稿するか、または以下のフィードバックフォームを通してこのトピックに関するどんな考えでも共有することができます。