最近再考虑转型做应用安全,但是一时也不知道怎么下手,不过和CA公司打了近一年的交道还有国家安全部门也掺和了一下以后对安全还是有点小想法的,现在也就我做的这个项目的想法和经验现在跟大家分享一下,也请大家批评指正:
CA安全
说到安全不得不让业内人士想到CA这个名词,其实国内的CA公司不多,具体有哪些大家可以自己去网上GOOGLE一下,但是真正具有资质也就那么几家,虽然我国的CA发展已经有一定年数了,但是由于相关政策不够严谨,所以现在国内的CA应用可以说是相当混乱,想必做过CA的人都应该有这个感受.至少我觉得这些CA公司的技术是不过关的,不是说他们对CA的核心技术理解不过关,而是说将CA技术应用到实际的业务系统不过关,当然,这个是个人看法,有不同意见也不要用砖拍我.
其实CA从业务应用上来分我觉得应该分为两块,一块是高安全级别的企业CA应用,一块是低安全级别的个人CA应用,为什么我要吧他们分成两块而且还有高低级别的区分呢?- 企业的数据不仅是一个企业的数据,还包括广大用户的数据,所以再业务上来看,这个级别比个人的要高很多.
- 现在个人对CA的了解不多,但是现实使用率还是很高的,比如各个银行强制卖给广大人民的USBKEY.但是最终有多少人知道这个KEY的重要性呢.呵呵
从我看到的项目中对CA的应用来说,这两个级别的安全都存在极大的隐患.
首先,企业的CA主要是根证书的管理存在隐患,现有的CA产品有加密卡和Ukey,但是往往会因为硬件不兼容的原因导致这个硬件无法使用,比如,现在的加密卡基本都是串口的(至少我做的项目里面参考的几家CA加密卡是串口的),而服务器上也基本上没有串口了,所以导致需要增加额外的硬件来转换,这样一来不仅降低了工作效率而且再机房还要多占用一个机位来放置这个硬件;再说UKEY,跟证书放在UKEY里面是很安全的一种做法,然后通过USK插再服务后面,但是这样一来就又出现了一个问题,如果有人进到机房把UEKY拔走怎么办,如果我有UKEY厂家的初始化工具,我把里面的根证书换成我伪造的根证书怎么办,最要命的是UKEY的驱动程序大多是给予windiws的,linux下面不能用.最后没有办法了,为了考虑多程序的移植,只有把根证书以文件形式放在服务器下(黑客可以随便拷贝了,呵呵).
其次是个人CA,现在几乎是只要有网银就有UKEY,很多人都有多个银行的网银,那么你就有N多的UKEY了,结果就是UKEY满天飞,自己也不注意保管,给被人拿去了就可以直接登陆网银,据我了解,农行就是这样的,只要插上UKEY,不需要任何操作就可以直接进入网银,这样一旦我的UKEY丢了就意味了我的钱丢了,而且由于我的UKEY经常不用的,丢了也不会知道,呵呵.另外个人CA的证书下载还是很成为问题的,貌似招行银行的证书下载可以选择将私钥证书备份到本地硬盘,忽忽,危险啊,你的机器有不是服务器,这玩意放在硬盘上,你还不如直接备份到什么网盘,什么博客里面去,免得黑客逛一趟你的机器还偷点别的东西去.
当然上面说的是最基础应用方面的东西,从CA技术本身来说他是安全的,如果按照CA的规范来做的话,至少99%是安全的.
所以对于CA再应用方面的建议是:如果你确定要再系统里使用CA就不要怕麻烦,必要的硬件是要有的,相关的规范是要制定的,基础的安全知识是要知道的.- server安全
这个方面网管比我清楚,该封的端口要封掉,需要开放的端口需要有限制,但是作为开发或实施人员需要做什么呢,呵呵,就是管好你的密码.
最近做的一个项目我没有部署,是一个比我技术厉害的人(其实我看不觉得,就是比我多几年开发经验,呵呵)部署的,结果网站已经再运营了大概一个多星期,我无聊的时候想去到去看看,直接端口进去,居然可以看到tomcat界面,然后点了一下manager,要输密码,我下意识的敲了一个默认的admin,admin,结果居然进去了,里面的服务一览无余,哎,高手就是高手,由于我们是做的热备(声明:不是我做的,所有部署我都没有参加),另外一个节点是不对外网开放的,但是我还是进去了,居然那个端口没有封掉(狂晕),而且用户名,密码也是admin.此前我们的服务器还被别人黑掉了,他们分析来分析去都没分析出什么,也没人来问我,毕竟他们不知道我做过安全的,忽忽.(有点发泄的感觉哦,呵呵),还有别的什么漏洞我也没有去查,这都是无疑中遇到的.
通过这件事我想说的是网管也能保证你的server安全,他只能做到服务器的安全,但是应用的安全还是要靠服务器配置来解决的. - 程序自身的安全
虽然有防火墙等安全措施,但是对于高阶SQL注入,或者URL猜测都还是没有办法控制的.
很多公司做的系统都是将URL明文放在GET或者POST里面,而不知道隐藏掉这些URL,我不知道这样做是对他们的系统很自信还是故意留后门,别人一看请求的URL是report.jsp?name=’haha’,那就猜想一下是不是有report.jsp?name=’hehe’,或者是不是有showreport.jsp,这样网站虽然不会被攻破,但是你的信息已经被泄露了,别人看看报表就都知道了,虽然也可以说有身份验证,但是谁敢说他的系统里面全部的请求都有身份验证呢,信息泄露很多或者信息泄露很少,都是泄露了,对于客户来说是不能容忍的,我说的是B/S业务系统,不是网站
Sql注入是个很古老的话题,我了解的不多,但是我觉得总有能注入的地方,这个就需要靠攻防经验来做了,而现在做B/S的广大程序员很多都认为这已经不是一个问题了,框架都能解决,甚至有的程序员还没听过这个名词,我觉得很可悲. 人的安全
一切的安全都需要人来执行,一旦人不安全了,再坚固的系统形同虚设.现在很多老总都很拉风的,说什么我要我的系统安全,我也要装个什么U盾,这样才显得安全.呵呵,恰恰相反,这样更显得不安全,一个不懂安全的人来要安全而不咨询专业人士,也不愿意花钱,那这样只会弄得系统更不安全.
我的建议是,不要跟风,一旦决定要使用高的安全策略一定要找相关的专业人士来,不要怕花钱,要是怕花钱的话损失的更多,我在此声明我现在还不是专业人士,不是为我做广告,呵呵,不过以后就难说了.
关于我的对国内现在的应用安全方面的感想大概就是这些了,要是再想到别的就再以后的日子里补充,欢迎大家来电来函批评指正.PS:今天是2015年5月1日,回头看看七年前这篇文章,有点好玩.