web-dev-qa-db-ja.com

なぜunameしないのですか-aは有用な識別子を返します

私はコマンドuname -aを大学のサーバーに入力し、これを取得しました。

2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:14:03 EDT 2011 i686 i686 i386 GNU/Linux

サーバーが実行されているLinuxのバージョンを非表示にしようとしていますか?それとも、その表示がそうではないことを意味するカーネルですか? Linuxボックスでuname -aと入力すると、Ubuntuを実行していることが表示されるためです。私は、セキュリティ上の理由から、それが秘密にしておきたいものかどうかを判断しようとしています。

4
Sean

unameの出力は、不可解になるようには設計されていません。有用な情報が表示されない理由は、その目的がマシンとカーネルのIDを表示することであり、オペレーティングシステムのIDを表示することではないためです。カーネルをコンパイルする人はカーネルリリース名にいくつかの情報を含める傾向があるため、一般的にLinuxディストリビューションを推測することができます(uname -r)またはバージョン(uname -v)サポート担当者が、公式カーネルを実行しているかどうか、およびどれを実行しているかを判断できるようにします。たとえば、ここでは、.elはRHELによって使用され、バージョンにはコンパイル日が含まれています。

ほとんどのユニスにはカーネルバージョンとオペレーティングシステムバージョンの間に1対1のマッピングがあるため、 [〜#〜] posix [〜#〜] レベルのオペレーティングシステムIDはありません。これは、同じカーネルが複数のディストリビューション間、さらには複数のオペレーティングシステム間で共有されるLinuxには当てはまりません( GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv 、一般的に知られています略して「Linux」としてだけでなく、 Android および 他のあまり知られていないシステム )。

Linux Standard Base 指定 lsb_release 配布に関する情報を返すコマンド。 lsb_release -irまたはlsb_release -dは、あなたが求めている配布情報を示しています。

ほとんどのLinuxディストリビューションにはlsb_release最近のコマンド。そうでない場合、それはセキュリティ目的ではありません。ディストリビューションを非表示にしようとしても意味がありません。システム上のファイルを見ることができれば、さまざまな方法で知ることができます(インストールされているパッケージを調べたり、システムファイルを既知の値と比較したりするなど)。攻撃者にとって特に役立つ情報は、どのセキュリティホールが存在するかを知ることだけです。これは実際にはディストリビューションの機能ではなく、セキュリティ更新プログラムが適用されているかどうかの関数です(これも、エクスプロイトを起動して機能することを期待するなど、あらゆる種類の方法があります。そのため、エクスプロイトを非表示にしようとしても意味がありません。の欠如 lsb_releaseは、標準化の欠如が原因です。各ディストリビューションは、バージョン番号を異なる方法で保存します。

彼らがLinuxのバージョンを隠そうとしているのなら、彼らはひどい仕事をしている。これはおそらく、カーネルバージョンに基づくRedHat Enterprise Linuxです(「el5」はそれを提供します)。

ディストリビューターの名前をunameに隠しても、セキュリティを向上させることはできません。特定のバージョンを提供する/ etc/rehat-versionファイルがあるに違いありません。

3
Jason H