Linuxホスティングについて非常に基本的な質問があります。
このusers
コマンドは、ホストのすべてのユーザーに指示するように保証されていますか?それとも、ユーザーがその時点でホスト上でアクティブであるという事実を隠す方法はありますか?
後者の場合、ユーザーコマンドの出力からユーザーを隠すためにユーザーが使用できる技術が何であるかを知っている人はいますか?
この問題について他の人が提供できる考えは非常に役立ちます。
答え1
読んでいるファイルには表示されず、システムで「システムコマンドを実行してシステムファイルにアクセスできる」ことは/var/run/utmp
簡単ですusers(1)
。
$ ssh testhost sh
たとえば、Centos 7では、誰かが実行中であるというusers
指示はありませんが、システムコマンドを実行してシステムファイルにアクセスできます。testhost
sh
# users
root
# pstree | grep -3 'sh$'
|-sshd-+-sshd---sshd
| |-sshd---bash-+-grep
| | `-pstree
| `-sshd---sshd---sh
|-sssd-+-sssd_be
| `-sssd_nss
|-systemd-journal
socat
別の方法は、高いポートでシェルまたは他のものを実行することです。別のアプローチ:コマンドを受け入れて実行し、結果を返すWebサーバーを実行します。別のアプローチは、事前にコマンドをスケジュールしてからat(1)
ログアウトすることです。
答え2
このusers
ユーティリティはCで書かれた非常に小さなプログラムで、コードは約150行です。部分だからGNUコアユーティリティ、あなたダウンロード可能users.c
ユーティリティを使用し、ファイルからコードを読みます。
実際、デフォルトでは、このユーティリティはおよびのラッパーにすぎませんusers
。ユーザーがログインしているという事実を隠す2つの明確な基本的な方法があります。utmp
wtmp
users
最初の方法は、ユーティリティのコードを変更してバイナリを変更することです/usr/bin/users
。
2番目の方法は、* nixシステムに存在できるutmp
、、wtmp
などlastlog
のutmpx
ログファイルからトレースを消去することです。wtmpx
この方法で使用できるいくつかのログ削除ツールがありますcloak
。zap
clear
セクション3.4を注意深く読んでください。Hacking UNIXの「侵入後」から抜粋した。
もちろん、特定のアプリケーションやユーザーのためのファイルの書き込みを防ぐ他の方法もたくさんありますutmp
。wtmp
この例を読んでくださいのためのssh
。
login
いくつかの追加のデフォルトおよび一般的なログ記録オプションをファイルで構成できます。
/etc/login.defs
users
ユーティリティが管理者とユーザーの観点から情報を解析する場所をより深く理解するには、次のファイルを参照してください。
utmpdump /var/run/utmp
utmpdump /var/log/wtmp
sudo utmpdump /var/log/btmp
ファイルを削除してutmpロギングを無効にできる他のさまざまなシステムとは異なり、Linuxではutmpが常に存在する必要があります。 who(1) を無効にするには、utmp の世界を読めるようにしないでください。
ファイルの種類はシステムによって異なります。ファイルが作成されたシステムのアーキテクチャでのみ処理することをお勧めします。
users
したがって、質問に対する答えは、「ユーザーがユーティリティからログインしたことを隠すことは可能ですか?」です。はい、可能です。決定方法は決定状況によって異なります。 *nix システムなどへのアクセスレベルによって異なります。