COJ内幕<3>

我其实是怕如果我不把服务器中各项服务的关系写下来,过段时间之后,连我都不记得COJ的各项服务的具体配置。

“内幕”这东西嘛,就像工程图纸。外行看热闹,内行看门道。多写点没关系,就怕写得太详细了,内行人把这工程图纸一摊开,立马就看出其薄弱环节,然后定点突破,节节深入。

所以呢,我还是用点比较飘渺的概念,关键之处,略微含糊其词。就像爱情动作片,关键部位打个码,大家看得模模糊糊朦朦胧胧便恰到好处。

好,言归正传。

Apache、Serv-U和MySQL按常规,使用特别用户限定服务启动。MySQL按需要对只对需要的IP进行监听。而Apache由于提供web服务,Serv-U提供FTP服务,所以对所有IP监听相应端口。

Tomcat提供OJ应用,所以要重点保护。与Serv-U不同,Serv-U提供的服务很简单,所以权限限制也很简单,普通的读写限制,取消除程序目录外的执行权限就可以了。相比而言,OJ的要求就高得多,既要读写权限,也要运行权限,而且还需要运行不可预测的代码。且不说黑客专门攻击,就是一些平时不严谨的提交代码的内存泄露,就可能导致机器崩溃。针对这个情况,要进行虚拟和抽象。所以OJ的Tomcat运行在一层抽象和一层虚拟上。虚拟提供了有保护的Judge程序评判运行环境,抽象则限制OJ系统及其程序只能进行web服务,数据库连接,运算和简单的输入输出。所以,最坏的情况现在变为,重启OJ的运行环境和系统。这就可以彻底避免服务器崩溃,我跑到新校区重启服务器的杯具发生。

昨天上线了一个新模块,简称PJ,内部使用Tomcat解析,外部传输通过Apache。这就相当有意思了。由于这个系统不提供代码评测,所以没有进行那一层虚拟。但是权限控制这玩意,什么时候都会有的。

如果黑客的攻击?

说实话,在服务器开通外网访问的短短半个月里,这种事情也不是没发生过。第一次就是某个韩国棒子想破我FTP密码,从而一举入侵。不过这种未开化的人所使用的原始野蛮进攻方式,毫无悬念地以失败告终。第二次是前几天,睡醒觉后,顺便巡视服务器,结果惊奇地发现,某通过局域网传播的ARP病毒,居然在里面踩了个脚印!但当我继续寻找它的踪迹时,再次惊奇地发现,原来它只是匆匆而过,留下个倩影,连门都没进。但是,这也提醒我一点,就是网络中心的机房也是坑坑洼洼千疮百孔的,里面肯定有不少电脑成了病毒集中营,比如那数X建X的主页,当天不就杯具了么。因此,OJ的服务器身处其中,还是要多多留心。

Leave a comment