今天折腾了半天,把 Bad Apple 折腾到了我 VPS 的 Telnet 里面,用的就是我早些时候发的命令行动画版。
如果大家想看,telnet xuyh0120.tk 或 telnet 5.175.156.249
Round 1. 移植到 SSH
因为本来和同学说好我要在 SSH 下折腾出一个,所以就先用这个了。首先把 Bad Apple 传到 VPS 上,我存在 /opt/badapple。这个文件夹里两个文件:badapple 和 badapple.in(资源文件,我改过扩展名)。
useradd badapple
passwd badapple
# 密码我设的badapple
su badapple
# 切换过去
chsh
# 输入/opt/badapple/badapple
exit
SSH 登录看效果,结果 Error 2,找不到资源文件。我就在本地重新编译一遍(VPS 上没 FPC),把路径从相对改成绝对,上传,再次登录,就成功出现了 Bad Apple 的动画。
下一个要解决的问题是放完片子自动把用户 T 出去,我的一同学给我的建议居然是 pkill -9 sshd…… 这样效果不错,但是你对得起另外在看的人吗…… 不过我发现,片子放完,我用 pascal 写的这个程序结束之后,openssh 自动断掉了链接。
但是 SSH 功能过分强大,会有安全隐患,比如 SSH 自带的 SFTP 文件传输协议,可以直接跳过 sh。所以需要在 /etc/ssh/sshd_config 里找到这么一段:
Subsystem sftp /usr/libexec/openssh/sftp-server```
具体内容有所差异,但是开头就是 Subsystem,前面加 #号注释掉就可以。
第二个要禁用的就是 TCP/IP 端口转发,这个功能强大,必须得封掉。还是在上面那个文件里加上:
AllowTcpForwarding no```
但是在后来的研究中,我又发现了 SCP 文件传输,而且居然和 SSH 深度绑定,无法禁用。于是我只好悲剧的放弃了 SSH,删除了用户。
Round 2. 移植到 Telnet
大家在自己机器里执行一下 telnet towel.blinkenlights.nl 试试。放心,不会搞坏你的机器,但是 Vista 及以上用户一般看不到效果。
这是国外一家网站提供的星球大战 ASCII 艺术,可以在 telnet 里看。所以我也准备试试。
apt-get install telnet telnetd xinetd
cd /etc/xinetd.d
nano telnet
#输入:
#service telnet
#{
# disable=no
# flags=REUSE
# socket_type=stream
# wait=no
# user=root
# server=/usr/sbin/in.telnetd
# log_in_failure+=USERID
#}
service xinetd restart
当时我还没有删除 badapple 用户,所以 telnet 过去,输用户名密码就进了。但是输密码麻烦,而且在那个星球大战里面也无需输密码。所以我只好研究一下 telnetd 了。执行 man telnetd,发现有一个 - L 参数,可以自己设定登录用的程序,也就是 Login Shell。我在 xinetd 里加了参数,没用。结果 man 里还有一句:默认使用 /usr/lib/telnetlogin。高级!
cd /usr/lib
mv telnetlogin telnetlogin_backup
ln -sf /opt/badapple/badapple telnetlogin
service xinetd restart
以上就是用 Bad Apple 替代原有 Login Shell,在登录阶段就开始显示动画。和 SSH 一样,动画放完 telnet 也会自动断掉。
效果非常爽,除了出来动画前还有一句 Debian GNU Linux 6.0 什么的,但是我要的效果已经达到了,收工。
演示地址:telnet xuyh0120.tk 或 telnet 5.175.156.249
预览: