
对于编程开发程序员来说,除了需要完成软件编程工作以外,同时也需要增加一些基础的信息安全措施。今天我们就一起来了解一下,提高服务器安全等级的安全措施都有哪些类型。
深度防范
深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。
深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。
回到编程领域,坚持深度防范原则要求您时刻有一个备份方案。如果一个安全措施失效了,必须有另外一个提供一些保护。例如,在用户进行重要 *** 作前进行重新用户认证就是一个很好的习惯,尽管你的用户认证逻辑里面没有已知缺陷。如果一个未认证用户通过某种方法伪装成另一个用户,提示录入密码可以潜在地避免未认证(未验证)用户进行一些关键 *** 作。
尽管深度防范是一个合理的原则,但是过度地增加安全措施只能增加成本和降低价值。
小权限
我过去有一辆汽车有一个佣人钥匙。这个钥匙只能用来点火,所以它不能打开车门、控制台、后备箱,它只能用来启动汽车。我可以把它给泊车员(或把它留在点火器上),我确认这个钥匙不能用于其它目的。
把一个不能打开控制台或后备箱的钥匙给泊车员是有道理的,毕竟,你可能想在这些地方保存贵重物品。但我觉得没有道理的是为什么它不能开车门。当然,这是因为我的观点是在于权限的收回。我是在想为什么泊车员被取消了开车门的权限。在编程中,这是一个很不好的观点。相反地,你应该考虑什么权限是必须的,只能给予每个人完成他本职工作所必须的尽量少的权限。
一个为什么佣人钥匙不能打开车门的理由是这个钥匙可以被复制,而这个复制的钥匙在将来可能被用于偷车。这个情况听起来不太可能发生,但这个例子说明了不必要的授权会加大你的风险,即使是增加了很小权限也会如此。风险小化是安全程序开发的主要组成部分。
你无需去考虑一项权限被滥用的所有方法。事实上,你要预测每一个潜在攻击者的动作是几乎不可能的。
简单就是美
复杂滋生错误,错误能导致安全漏洞。这个简单的事实说明了为什么简单对于一个安全的应用来说是多么重要。没有必要的复杂与没有必要的风险一样糟糕。
暴露小化
PHP应用程序需要在PHP与外部数据源间进行频繁通信。主要的外部数据源是客户端浏览器和数据库。如果你正确的跟踪数据,你可以确定哪些数据被暴露了。Internet是主要的暴露源,这是因为它是一个非常公共的网络,您必须时刻小心防止数据被暴露在Internet上。
数据暴露不一定就意味着安全风险。可是数据暴露必须尽量小化。例如,一个用户进入支付系统,在向你的服务器传输他的xyk数据时,你应该用SSL去保护它。如果你想要在一个确认页面上显示他的xyk号时,由于该卡号信息是由服务器发向他的客户端的,你同样要用SSL去保护它。
比如前面的例子,显示xyk号显然增加了暴露的机率。SSL确实可以降低风险,但是佳的解决方案是通过只显示后四位数,从而达到彻底杜绝风险的目的。
为了降低对敏感数据的暴露率,天通苑电脑培训认为你必须确认什么数据是敏感的,同时跟踪它,并消除所有不必要的数据暴露。在本书中,我会展示一些技巧,用以帮助你实现对很多常见敏感数据的保护。
当Linux服务器暴露在公网时,不可避免地会受到大量ssh登录请求,这些请求大多是黑客在尝试暴力破解ssh密码。笔者做过实验,将1台服务器暴露在公网,只开放ssh服务的22端口,一晚上收到了 5000多次 来自世界各地不同IP源地址的失败的登录尝试。为了应对SSH暴力破解的威胁,采取一定的防护措施是很有必要的。
在某些应用场景,登录Linux服务器进行 *** 作的只有若干个固定IP地址,例如某公司有固定IP地址的企业专线,大家的电脑就会通过这些固定IP和公网交互,这时部署在公网的Linux服务器收到的ssh登录请求,源地址就是这些固定IP地址,这时就可以设置白名单,只允许特定的IP地址访问,来自其它IP地址的ssh登录请求会被驳回。
一定要再三确认自己使用的客户端计算机的公网IP地址,重启sshd服务后,除了在白名单上的IP,来自其余IP的密码登录均会被屏蔽。
用telnet和nc都可以。
在外网找个windows机器,运行CMD命令提示符。当然linux机器也是可以的。
telnet 8888 80
如果想要指定端口范围或者指定传输协议,可以用外网一台linux机器,装上nc命令工具。运行
nc -v -z -w2 8888 1-100 #扫描8888 的端口 范围是 1-1000nc -u -z -w2 8888 1-1000 #扫描8888 的端口 范围是 1-1000
首先可以明确的告诉大家,即使我们将自己的域名解析至京东的节点IP或域名上,依旧是无法成功访问的,为什么呢?
域名与站点之间须双向绑定
我们访问一个网站一般都是在浏览器中输入域名后回车就行了,看上去我们是通过域名访问到网站的,其实是通过域名绑定的服务器IP找到要访问网站的服务器IP地址后再去请求访问的。
那是不是意味着我们只要把自己的域名解析到某个网站服务器的IP上就能通过自己的域名访问到那个网站了呢?答案是否定的,假设只是这样单方面绑定,那就太不安全了。
一台服务器上可能有多个站点,每个站点对应1个域名,而服务器的IP地址是同一个,那不同域名绑定到此服务器IP上,服务器是无法区别要访问哪个站点的,所以服务器上也要将站点和域名做一个绑定。
综上,正常情况下域名和网站之间是双向绑定的。若服务器上没做其它限制而且只有一个站点时,也可以做单向绑定(即:只做域名解析,而不在服务器上为站点绑定域名)。
你所看到的京东网站的IP并不是源服务器IP
现在的大型网站都会使用CDN加速,所以我们通过某些手段查看到这些网站的IP并不是真实的源服务器IP,而是CDN节点的IP,即使同一个域名,不同地方的人查看这个域名得到的IP地址也是不同的。
所以我们将自己域名解析到这些CDN节点IP上,依旧无法访问,因为CDN厂商对域名接入都是审核通过后才给绑定的。
京东站点会判断来源域名是否合法
除上面所说的2点外,即使你找到了京东的源服务器IP,而且源服也没有主机头的限制,你依旧无法将自己的域名直接解析到此服务器上,因为京东站点也会对来源域名的合法性进行校验。
第三方域名可通过跳转的方式指向京东网站
如果真的想将自己的域名指向京东网站,那只能通过跳转方式来实现了,方案主要有:
1、域名解析时做显性跳转;
2、在你的站点程序中做重定向跳转等。
比如你自己的服务器,不去和别人说就不会暴露别人的服务器你要去玩,就要知道ip,这就得暴露
自己的服务器ip可以变成虚拟的ip,名字可以随便取,但是别人知道了你的虚拟ip,有些会玩电脑的一些人就可你查得出你的电脑ip
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)