ウェブサイト検索

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


Linux では、ハード リンクとソフト リンクは非常に重要なファイルを参照しますが、十分に保護されていない場合、その脆弱性が悪意のあるシステム ユーザーや攻撃者によって悪用される可能性があります。

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

こちらもお読みください: Linux でハード リンクとシンボリック リンクを作成する方法

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

したがって、プログラムが有効な権限で実行されると、攻撃者が作成したものと同じ名前のファイルが作成され、文字通り、攻撃者がアクセスしようとしていたターゲット (リンク先) ファイルが作成されます。したがって、これにより、攻撃者に root アカウントから機密情報を盗んだり、システム上で悪意のあるプログラムを実行したりする経路が与えられる可能性があります。

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

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

ハードリンクの場合

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

  • ユーザーは、自分が所有するファイルにのみリンクできます。
  • ユーザーはまず、リンク先のファイルに対する読み取りおよび書き込みアクセス権を持っている必要があります。

シンボリックリンクの場合

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

  • シンボリック リンクに続くプロセスがシンボリック リンクの所有者です。
  • ディレクトリの所有者はシンボリック リンクの所有者でもあります。

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

重要なことに、デフォルトでは、この機能はファイル /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. Linux で Vim ファイルをパスワードで保護する方法
  2. Linux で重要なファイルを IMMUTABLE (変更不可能) にする 5 つの「chattr」コマンド

それだけです!以下のフィードバック フォームから、このトピックに関する質問を投稿したり、意見を共有したりできます。