回答:
Ubuntuのコミュニティドキュメントでは、実稼働サーバーシステムでGUIを実行することが推奨されない本当の理由を説明しています。
ほとんどのUbuntu Server開発者は、サーバーにXをインストールすることをお勧めしません。GUIをインストールしない理由はいくつかあります。
GUIをインストールしない理由には次のものがあります。
- セキュリティの脆弱性の対象となるコード、更新が必要なパッケージ、サーバーのダウンタイムが増加します。
- X11およびデスクトップパッケージは、LTSサーバーリリースの5年間のライフサイクル全体ではサポートされていません。
- リソース(メモリ、ハードディスク容量、CPUなど)がGUIによって消費されるため、パフォーマンスが低下する可能性があります。
- 実稼働サーバーに必要なソフトウェアのみをインストールすることをお勧めします。
- GUIには、サーバーには不適切な他のネットワークサービスが含まれる場合があります。
- Ubuntu Desktop Editionの目標の1つは、ユーザーがLinuxを使いやすくすることです。一部のデスクトップ環境をインストールすると、特に必要のないサービスがインストールされます。たとえば、ネットワークの構成に役立つavahi-daemonは、別の開いているポートを追加し、.localドメインとの不要なDNS競合を引き起こす可能性があります。
したがって、最も安全なサーバーでは、GUIをインストールしないことが最善です。
「Ubuntuドキュメンテーションwikiへの貢献者」による「ServerGUI」。CC -BY- SA3.0で許可されているようにここに再現されています。
多少一般的な誤解とは異なり、X11がサーバーであることは、実稼働サーバーでGUIを実行することがセキュリティの観点から理想的ではないと見なされる理由とはまったく関係ありません。X11は、デフォルトでは、どのオペレーティングシステムでも、ネットワークを介してアクセスできるように設定されることはほとんどありません。Ubuntuのどのバージョンも、X11がデフォルト構成でネットワークアクセス可能なサーバーを実行したことはありません。(TCP経由でUbuntuのX11にアクセスするには、SSHを使用して転送するか、サーバーを手動で再構成する必要があります。)
さらに、X11がネットワークアクセス可能なサーバーを実行したとしても、実稼働サーバーシステムにインストールしない理由はありません。本番サーバーを実行している人は誰でも、必要に応じて構成し、監査して望ましくないサービスが実行されていないことを確認することができます。(彼らは、することができない場合、それは GUIがインストールされたことにより、作成されるよりも、セキュリティにはるかに大きな脅威を与えるでしょう。)X11があっても持っていた(物理ネットワークインタフェース上のポートのリスニングを持っている場合ではないとする)、ポートを(またはのような上位レベルのフロントエンド)netfilter
を使用してビルトインを再設定することで簡単にブロックできます。iptables
ufw
対照的に、上記の問題は、再構成によって簡単に克服することはできません。
実行中のプロセスはすべてセキュリティリスクです。特に、ネットワークポートでリッスンするもの(X11はそうします)。
一般的に良い方法は、絶対にそこにある必要のないサーバー上で何も実行しないことです。X11は確かに、SSHに接続するサーバー上にある必要はありません。
あなたが読んだ記事がX11の特定の脆弱性について語っていたのではないか(もしそうなら、脆弱性は修正されずに長い間放置されない傾向があります)、むしろ単に一般的な良い実践です。
-nolisten tcp
デフォルトで使用します
これは、X Window Systemが適切に保護されていない場合、深刻なセキュリティリスクが生じるためです。X11「ディスプレイ」は、デスクトップで実行されているX11サーバーであり、画面、キーボード、およびマウスが含まれます。X11ディスプレイが安全でない場合、インターネット上の任意の場所で実行されているプログラムがX11ディスプレイに接続できるようになり、接続が完全に見えなくなる可能性があります。接続すると、そのプログラムはディスプレイに完全にアクセスできます。つまり、次のことが可能です。
経験則は使用すべきではありませんxhost +
-ディスプレイのセキュリティを完全に無効にします。
良い方法は、Xを転送することです ssh
から取得:http : //www2.slac.stanford.edu/computing/security/xwindow/
xhost +
コマンドを持っているので
xhost +
-nolisten tcp
ただし、オーバーライドすることはできません。ローカルホストからの接続を開くだけです。