在Android中运行Linux实现了将Kali Linux运行在一台小小的Nexus 5手机中,接下来我们要通过远程访问方式来使用Kali Linux的图形桌面,方便探索安全工具。
不要问我为何要这么折腾在手机中运行一个安全黑客发行版本的Kali Linux,而且还要通过远程图形方式访问。为何不简简单单在电脑上安装一个操作系统,甚至最低端的计算机硬件性能也远好于Nexus 5这个几年前发布的手机。不为什么,就是为了好玩,为了探索不可能。。。
在树莓派Zero W上运行Kali Linux可以实现随插随用的安全扫描Linux系统,也是一个非常好玩的应用场景。
其实,VNC远程访问Linux服务器是非常古老的技术,但是这个技术一直有着简单实用的价值,直到今天依然是远程访问 Linux/Unix 服务器图形系统的利器。在虚拟化平台,也使用远程访问VNC来访问虚拟机的控制台桌面。
此外,另外一种适合Linux/Mac客户端的远程图形桌面访问方式是使用X Window原生的远程访问模式,例如从mac上访问远程X window,甚至都不需要使用vnc客户端,只需要客户端和服务器都是相似架构的X Window系统就可以了。
- Kali Linux的服务器上应运行ssh服务,以便实现通过ssh tunnel方式访问VNC服务器端口
- 安装TightVNC server软件包:
apt-get install tightvncserver
- 安装
autocutset
以便在开户端和服务器之间激活cut&paste
功能
apt-get install autocutsel
- 首先给自己的账号设置vnc密码:
vncpasswd
- 启动vnc服务,监听5901端口(
:1
)
vncserver :1
此时可以通过ps
检查到服务端的vnc进程
Xtightvnc :1 -desktop X -auth /home/huatai/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 120000 -rfbauth /home/huatai/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
可以配置VNC启动脚本来激活cut & paste
编辑~/.vnc/xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
autocutsel -fork
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
前述的vnc服务器启动参数实际上是监听了所有端口,存在一定的安全隐患。
可以设置VNC服务启动回环地址
vncserver :1 -geometry 1280x800 -depth 16 -localhost -nolisten tcp
-nolisten tcp
参数启动后,可以看到只监听127.0.0.1:5901
在客户端使用以下ssh命令
ssh -L 5901:localhost:5901 -N -f <distant_user>@<server_ip>
此时vnc客户端就可以访问自己本地的回环地址来访问服务器
xtightvncviewer localhost:1 -compresslevel 9 -quality 4 -depth 8
- 启动脚本
/etc/init.d/vncboot
#!/bin/sh
### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO
USER=root
HOME=/root
export USER HOME
case "$1" in
start)
echo "Starting VNC Server"
/usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -localhost -nolisten tcp
;;
stop)
echo "Stopping VNC Server"
/usr/bin/vncserver -kill :1
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac
exit 0
- 激活启动
chmod 755 /etc/init.d/vncboot
update-rc.d vncboot defaults