• ベストアンサー

VNCへのアクセス制限

WindowsXP(192.168.1.12)からSuSE Linux(192.168.1.5)に対してVNCでログインしています。 この192.168.1.12以外からはVNCでログインできないようにするために、hosts.allowとhosts.denyを以下のように書き換えました。 ・/etc/hosts.deny ALL : ALL ・/etc/hosts.allow ALL : 192.168.1.12 この状態でWindows(192.168.1.12)からVNCでアクセスすると、エラーメッセージが表示されてログインできません。 The connection closed unexpectedly Do you wish to attempt to reconnect to 192.168.1.5:5901? hosts.allowを以下のように書き換えると、VNCでログインできるようになります。 ・/etc/hosts.allow ALL : ALL 192.168.1.12からだけのアクセスを許可させるには、どのようにすればよいのでしょうか? ■環境 SuSE Linux10.0 WindowsXP SP2 VNC Viewer Free Edition 4.1.1

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

>もしよろしければ、理由を教えていただけませんでしょうか? 当方もSuseLinux10でVNCを動かしています。 理由、と言うほどでもありません。 VNCの起動スクリプトとログファイルのエラーをみればすぐに分かることです。 理由1 vnc本体(Xvnc)を起動するオプションで、XDMCPプロトコルの接続元がlocalhostになっている。 # cat /etc/xinetd.d/vnc service vnc1 {   server_args = :42 -inetd -once -query localhost } # Xvnc -help -query host-name    contact named host for XDMCP 理由2 VNCクライアントから接続エラーの時の、/var/log/messagesファイルを確認すると、    localhost(127.0.0.1)からの接続が拒否されている。 Apr 9 00:11:01 sv gdm[4714]: ホスト ::ffff:127.0.0.1 の XDMCP 要求を拒否しました 結論 VNCを使うには、/etc/hosts.allow で127.0.0.1からのXDMCP接続を許可する必要がある。

ps5550
質問者

お礼

理解はできてないですが、勉強していきます。 ログの保存先も知らなかったくらいなので。 ありがとうございます。 助かりました。

その他の回答 (3)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

自分自身(127.0.0.1)を許可したらどうなりますか? /etc/hosts.allow ALL : 192.168.1.12 127.0.0.1

ps5550
質問者

お礼

教えてもらった方法で、できました。 この設定で、192.168.1.12からはログインでき、192.168.1.14からはエラーになります。 想定どおりの動作をしています。 もしよろしければ、理由を教えていただけませんでしょうか?

noname#17215
noname#17215
回答No.2

参考になりますかどうか。 -------------- 「自宅サーバーであそぼ」より引用。 inetd経由サービスへのアクセスを制限 in.qpopperとsshd,swat,VNCへのアクセスはローカルホスト(127.0.0.1), サブネット内(例えば192.168.0.0/255.255.255.0)からのみ許可とする。それ以外のサービス、ホストからのアクセスは拒否。 (sshdは、inetdから起動させているわけではないが、host.allow,host.denyを参照している。) [/etc/hosts.deny] swat:ALL → ALL:ALL [/etc/hosts.allow] swat:localhost 192.168.0.0/255.255.255.0 in.qpopper:localhost 192.168.0.0/255.255.255.0 sshd:localhost 192.168.0.0/255.255.255.0 Xvnc: localhost 192.168.0.0/255.255.255.0 (注意) 行に改行がないとその行は無効になってしまうので注意! tcpdchkでhost.allow,host.denyにミスがないか確認。ただしsshdはないといわれるが、このメッセージは無視。 tcpdmatchで指定IPアドレスからのアクセス(許可:granted,拒否:denyed)を確認。 (例) # tcpdmatch in.qpopper 192.168.0.1 間違いがなければinetdをリスタート # /etc/rc.d/init.d/inet restart

ps5550
質問者

補足

ありがとうございます。 教えていただいた情報を参考に色々試行錯誤してみましたが、やはり駄目です。 で、今まではSuSE10.0でしたが、別PCにSuSE9.3を導入して同じことやってみると、あっけなく指定IPだけを通す設定ができました。 最悪はSuSE9.3にバージョンダウンしょうと考えてます。しかし、SuSE9.3では別の問題が発生して、別件で質問しています。

noname#17215
noname#17215
回答No.1

VNCの種類が解りかねますが、 hosts.allowに「Xvnc:許可したいPCのIP」の行を追加してみてください。

ps5550
質問者

補足

回答ありがとうございます。 すみません、種類を確認する方法がわかりません。 SuSE LinuxのYaSTから導入したVNCです。 hosts.allowには、「Xvnc:192.168.1.12」も、「Xvnc:192.168.1.12:ALLOW」も「ALL:192.168.1.12/255.255.255.0」も試してみましたが、エラー(上の質問参照)になります。 エラーにならない組み合わせは、「ALL:ALL」だけです。 これだと、ほかのPCからもVNCでログインできてしまうので困っています。

関連するQ&A