COJ的服务器的首要问题是安全。
记得网络中心一位老师说过,这个服务器在高性能科学集群式服务器中,如果被攻击,那责任可天大了去了。
所以,以安全为首,稳定压倒一切。
我也问了些人,结果一致认为,如果要在安全和易用性中选择,首选安全。
于是,变有了下面的一系列安全措施。其中不少是以牺牲易用性换取的。不过我会尽量保证,越前端的用户,对因安全限制而造成的不便的阻碍越少。
首先,是文件的传输。使用FTP,几乎是必然的。虽然有想过用SSH的SFTP代替,但是这Windows的系统有几个好用的SSH服务器啊……且不说这个,就是一个好用的FTP客户端都几乎找不到,要不大家也不会还在用老掉牙的缝缝补补还千疮百孔的Serv-U了。虽然M$有自己的FTP服务器,但是连Web都不用IIS,FTP还指望用M$的么……结果,还是Serv-U王道,我也成为大家中的一员……
既然Serv-U当道,这个漏洞出了名的多的东西,就不能不认真考虑一下安全了。权限控制是一个比较好的方法。用专门的用户启动Serv-U服务,它只对程序根目录有只读执行权限,对Web目录有读写不可执行权限。这样一来,使用Serv-U管理端管理FTP都要临时给程序加个可写权限才能修改FTP,对想通过Serv-U入侵服务器的基本就别想了。可以保证,最坏的情况只是Serv-U密码泄漏而被更改Web文件,而这又跟FTP的明文传输有关了。所以啊,我又加了个安全限制,即把FTP改为FTPS。连接是加密的,无法对FTP数据进行嗅探,把因用户操作不慎而导致的密码泄漏几率降到的最低。
结果FTP搞好的第二天,我一看系统日志,居然发现一个韩国棒子(而且还是韩国某大学的IP)企图通过弱口令及溢出来攻击FTP,怎料服务器一声“雅蠛蝶”,就把棒子的种种不轨企图挡得严严实实。不管怎么说,这还真是惹人厌……
然后说到OJ了。学长透露,新版的OJ会有较大改进。但服务器上的OJ还是旧版的,这个安全问题就显得比较突出了。所以还是使用权限控制,用专用用户来运行服务,能改的不能运行,能运行的不能改。结果我发现这样一来,Pascal无法正常编译……看看几乎没人用Pascal,便先作罢,等到新版OJ上线再调吧。
最后,Apache、MySQL、Tomcat这些开源软件,用起来都比较放心,也比较舒心。没什么漏洞,还有很多官方的非官方的文档可以参考。稀里哗啦配置好,就可以上线了。其实真的是这样,Windows不适合做服务器,虽然软件安装很方便,但入侵更方便啊。