Linuxサーバをリモートデスクトップみたいに操作するソフト(モジュール)。
他にはRealVNCやらVNCServer等がある。
x11vncの特徴としては、複数のユーザが同時ログインした際に、
“それぞれのVNCクライアントに同じ(Linux)画面”が出力出来る。
今回検証した環境はこちら
1. インストール
ソースからmakeするのが筋なのだろうが、面倒だったのでyumでインストール。
apt-getでも同様に行ける。筈
# yum install x11vnc
2. パスワードファイルの作成
デフォルトのままだと、パスワード認証が掛かってないので、パスワードのマップ(ファイル)を作成する。
なお、パスワードファイル6文字以上・8文字以下にする事。
(今回の設定方法の)x11vncではパスワードにDESを利用しているので、最大8文字しか認識出来ない。
もし、9文字以上を入力しても、8文字目までしか認識を行わないので意味が無い。
# x11vnc -storepasswd --- Enter VNC password: Verify password: Write password to /root/.vnc/passwd? [y]/n Password written to: /root/.vnc/passwd
さすがに、rootのフォルダに置いておくのはどうかと思うので、お好みにより移動させる。
# mv /root/.vnc/passwd /etc/passwdvnc
3. xinetd - x11vncの自動起動
xinetdからx11vncを起動させる為に設定を追記していく。
自分の環境では、vncの応答ポート番号に5920を使用している。
デフォルトは5900番なのだが、良く攻撃対象ポートになるので変更する事を推奨。
各オプションの詳細については以下参照
# vi /etc/xinetd.d/x11vnc --- service x11vnc { port = 5920 protocol = tcp disable = no socket_type = stream wait = no user = root server = /usr/bin/x11vnc server_args = -display :0 -geometry 1024x768 -rfbauth /etc/passwdvnc b-allow 192.168.1.11 -o /var/log/x11vnc.log -auth guess -inetd -noncache -xkb -repeat -forever -bg -shared -enablehttpproxy -nolookup }
4. server_argsの設定
server_argsの設定が結構厄介。x11vncを構築する各環境に合わせて調整していく事になる。
gdm: -auth /var/gdm/:0.Xauth gdm: -auth /var/lib/gdm/:0.Xauth kdm: -auth /var/lib/kdm/A:0-crWk72 kdm: -auth /var/run/xauth/A:0-crWk72 xdm: -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk dtlogin: -auth /var/dt/A:0-UgaaXaが推奨らしいが、殆どの場合で違うので書き換え必須。
/var/run/gdm/auth-for-[UserName]-***なのだが、[UserName]はユーザ毎に変わり、***の中はランダムなので、
5. ポートとサービスの対応付
ポート5920はx11vncという事を設定する。
# vi /etc/services --- ※最下行に追記 x11vnc 5920/tcp # X11 VNC Server x11vnc 5920/udp # X11 VNC Server
必要に応じて、iptablesの設定も変更する事。
上記が全て完了したらLinux機の再起動をする
適当なVNCクライアントを使用して、Linux機に接続をする。接続する際には
[Linux機のIPアドレス]::[ポート番号]
を指定する(クライアントによって変化)。
1度目→[Linux機のIPアドレス]::5920 ※接続しに行くと必ず落ちる。 2度目→[Linux機のIPアドレス]::[-rfbportで指定したポート番号] ※接続が出来る。