安全知识
SSL证书
SSL证书都可分为三大类,即DV、OV与EV:
DV SSL证书的中文名称是域名型证书
因为整个申请流程由系统自动完成,不需人工,所以DV证书往往价格很低,甚至是免费的。
DV证书虽然便宜,但安全性和局限性太大
所以只有个人网站和博客才适合此类证书。
OV型,即组织型或机构型证书
适用于企业、政府等机构。因为申请OV证书时,域名所有者的身份必须通过人工验证,否则无法申请。
光看地址栏里面的链接分不出DV与OV证书的区别,因为都是HTTPS开头。
EV证书的中文名称是高级或增强型证书
EV证书也是安全级别最高的SSL证书。其强大主要体现在两方面:
首先是直观,地址栏变绿,网站身份和证书颁发机构信息也会醒目的展示。 在申请EV证书时,企业信息要求非常详细,包括具体营业地址等信息也需要提供,还必须出具有法律效力的存在证明(比如律师函),以证明域名所有者身份的真实可靠。
价格较高,所以它主要适用于以下网站:
· 金融、电商等需要强大公信力和良好用户体验度的网站; · 对网络安全有较高需求的网站; · 对品牌展示、推广有一定要求的网站。
网络攻击原理
DDOS攻击
DDOS攻击原理:
* 通过发送大的数据包堵塞服务器带宽造成服务器线路瘫痪; * 通过发送特殊的数据包造成服务器TCP/IP协议模块耗费CPU内存资源,最终瘫痪; * 通过标准的连接建立起连接后发送特殊的数据包造成服务器运行的网络服务软件耗费CPU内存最终瘫痪(比如WEB SERVER、FTP SERVER、游戏服务器等)。
常见的攻击方法:(由于肉鸡的木马可以随时更新攻击的数据包和攻击方式,所以新的攻击更新非常快)
* SYN变种攻击(TCP连接的第一个包,非常小的一种数据包。) 发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节,这种攻击会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。 * TCP混乱数据包攻击 发送伪造源IP的TCP数据包,TCP头的TCP Flags 部分是混乱的可能是syn,ack,syn+ack,syn+rst等等,会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。 * 针对UDP协议攻击 很多聊天室,视频音频软件,都是通过UDP数据包传输的,攻击者针对分析要攻击的网络软件协议,发送和正常数据一样的数据包,这种攻击非常难防护,一般防护墙通过拦截攻击数据包的特征码防护,但是这样会造成正常的数据包也会被拦截, * 针对WEB Server的多连接攻击 通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种攻击和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封 * 针对WEB Server的变种攻击 通过控制大量肉鸡同时连接访问网站,一点连接建立就不断开,一直发送发送一些特殊的GET访问请求造成网站数据库或者某些页面耗费大量的CPU,这样通过 限制每个连接过来的IP连接数进行防护的方法就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种攻击非常难防护,后面介绍防火墙的解决方案 * 针对WEB Server的变种攻击 通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析攻击数据包前三个字节是GET字符然后来进行http协议 的分析,这种攻击,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M ,所以大量的肉鸡攻击数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种攻击也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的 数据包,会错误的封锁很多正常的数据包造成正常用户无法访问,后面介绍防火墙的解决方案 * 针对的攻击 因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口 7200,7300,7400等,因为游戏自己的协议设计的非常复杂,所以攻击的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的攻击种类,这 里介绍目前最普遍的假人攻击,假人攻击是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游 戏数据包来分析出哪些是攻击哪些是正常玩家。
CC攻击
CC攻击原理:
攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。 CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是 需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
高防服务器
- 高防服务器怎么进行防御
高防服务器定期进行扫描,解除安全隐患:
多数网络恶意攻击都是对骨干节点进行攻击,因而Idc服务商会定期扫描骨干节点,寻找可能存在的安全隐患并及时清理,不给攻击者可乘之机。
高防服务器在骨干节点都会配置防火墙:
防火墙能够过滤网络恶意攻击,极大提高网络安全而降低由于网络恶意攻击带来的风险。在骨干节点上采用了3D立体防御体系,能够无视CC攻击、防御480G DDOS攻击,基本上能够实现无视网络任意攻击。
高防服务器所在机房带宽冗余充足:
带宽消耗型攻击是网络恶意攻击主要的形式之一,大量的攻击数据包会导致服务器带宽堵塞,这就需要高防服务器所在机房带宽冗余充足。
高防服务器能够过滤不必要IP和端口:
在路由器上过滤掉假的IP,并在高防服务器上只开放服务端口将其余端口关闭。
隐藏服务器的真实IP地址:
服务器防御DDOS攻击最根本的措施就是隐藏服务器真实IP地址。在资金充足的情况下,可以选择高防服务器,且在服务器前端加CDN中转,所有的域名和子域都使用CDN来解析。
- 正确辨别高防服务器
机房带宽
很多的网络攻击都是带宽消耗型攻击,所以高防服务器最大的特点之一是有着足够的带宽应对带宽消耗型攻击。作为高防服务器载体的高防机房需要有足够大的机房带宽才能承受住攻击。
服务器品牌
有些网络攻击是资源消耗型攻击,通过大量攻击数据包导致服务器内存或是CPU等出现崩溃,所以高防服务器会采用DELL品牌服务器而不是组装或其他服务器,从而保证高防服务器的稳定运行。
防火墙
能够被称为高防机房的机房防火墙设备起码要在100G以上,如今最高的高防机房集群防火墙已经能达到480G防御了。在提供单机防御中,有10G—480G的实打实的防御选择。在游戏、金融等对网络安全较高的领域,随着业务的增长对网络安全要求会随着增高,要选择能够升级防御的idc服务商。
服务器线路
在国内几大线路中,电信线路的防护实力是最强悍的,其他线路即使说是自个防护有多好也无法与电信线路相比,所以在选择国内高防服务器时,毋容置疑电信线路高防服务器防护实力最强悍。
测试高防IP段
是不是高防服务器测测就知道。在租用高防服务器之前可以找到idc服务商高防ip段亲自测测就知道是不是真实防御了,这是最实在、最直接的方法了。
高防服务器租用为什么那么贵
高防服务器租用需要大量的带宽,主要是带宽贵。
方案
公有云运维安全常见四大难题及解决方案
https://www.toutiao.com/i6251874499126379009/
- 风险主要来自以下四个方面:
运维流量被劫持:
公共云场景下运维最大的变化就是运维通道不在内网,而是完全通过互联网直接访问公共云上的各种运维管理接口。很容易被嗅探或中间人劫持攻击,造成运维管理账号和凭证泄露。
运维管理接口暴露面增大:
原来黑客需要入侵到内网才能暴力破解运维管理接口的密码,而现在公共云上的用户一般都是将SSH、RDP或其它应用系统的管理接口直接暴露在互联网。只能依靠认证这一道防线来保证安全,黑客仅需破解密码或绕过认证机制就能直接获取管理员权限。
账号及权限管理困难:
多人共享系统账号密码,都使用超级管理员权限,存在账号信息泄露和越权操作风险。
操作记录缺失:公共云中的资源可以通过管理控制台、API、操作系统、应用系统多个层面进行操作。如果没有操作记录,一旦出现被入侵或内部越权滥用的情况将无法追查损失和定位入侵者。
- 加强运维安全工作可以采取的具体措施如下:
使用VPC网络,选择自有IP地址范围、划分网段、配置路由表和网关等。
一般建议分为三个网段:互联网应用组、内网应用组、安全管理组。
搭建从运维工作地到云的加密运维通道,用专业的VPN设备来搭建加密运维通道,保证运维流量不被劫持。
Linux使用密钥登录,不要使用账号密码登录,一劳永逸的解决账号暴力破解问题。
使用集中的特权及账号管理系统统一管理运维账号和权限,比如专业堡垒机。
过载保护
概念
过载,即当前负载已经超过了系统的最大处理能力。
过载后果
根据“墨菲定律”,通常对后果的判断不应过于乐观,谨慎行事、考虑充分才能够做到胸有成竹。
过载原因
1、处理能力的下降; 2、请求量的上升。
保护行为
1、 发生前,预防; 2、 发生时,处置; 3、 发生后,恢复。
- 过载预防
- 优化服务处理流程,降低处理资源消耗,提升自身处理能力;例如CPU消耗型服务,是否可以考虑优化算法,提升处理能力。
- 分离处理模块;将负载分担到不同的模块或者服务器;例如IO是瓶颈的服务,考虑是否可以将IO模块进行分离。
- 负载均衡;将请求量分流,降低单服请求量。
- 轻重模块分离;重要模块单独部署和处理,防止模块之间的互相影响。
- 前端防御;在前端控制请求频率,缓解后端压力;例如客户端可以做保护措施,控制聊天频率,点击操作失败,可以延时一段时间,才允许用户继续点击;前端服务发现后端出现过载问题,可选择性拒绝服务,降低后端压力。
使用缓冲区;缓冲区的使用,可以帮我们抵挡请求量的抖动,但缓冲区的使用同样也有很多技巧,并非越大越好。首先需要考虑内存,cpu等资源的开销,业务的模型是否需要这么大的缓冲区。
例如缓冲区过大,处理完整个缓冲区,都需要几十秒,而前端等待超时则为几秒,那么每次处理缓冲区的内容,都是旧的,前端认为都是超时,服务完全不可用。另外是后端却又处理成功,会导致系统信息不对称,从而导致更为严重的问题,例如,在游戏中购买道具的场景,前端扣用户的钱,认为超时失败而不给用户发对应的物品,后端却又执行成功了,严重运营问题就此产生。
做好监控,及时告警;例如当CPU达到80%时,当处理请求超出一定阈值时,及时告警,做好扩容,优化等其他准备。
- 过载保护
请求量阈值控制
在系统部署上线之前,预估好系统的处理能力,限定最大同时能够处理的请求量、流量或者链接数。当请求量快接近于最大处理能力时,则告警,超过范围,则触发拒绝请求机制。由此可见对于阈值的设置是一个很关键的环节,阈值过高,依然可能导致过载,阈值过低,则又导致负载上不去。阈值的设置也会是一个不断调优的过程。该方法的优点和缺陷都很明显。
优点:识别和处理简单;
缺点:阈值的设定需要一定的经验,会有一定的难度,同时如果处理能力发生变化时,阈值就很难动态发生变化。
监控系统资源
服务器监控CPU,内存等资源的使用情况,设定阈值,超出阈值,则可以认为过载,从而触发拒绝请求机制。
优点:使用动态的资源数据,从相对根本的原因上识别过载,而无需过多关心具体的业务处理;
缺点:
一是处理相对复杂; 二是在某些场景下,资源数据的耗尽并不意味着出现过载的情况。例如服务开了较大的内存池,看起来内存资源耗尽了,实际上负载是足够的,又如现在都是多核服务器跑着多进程或者多线程的服务,单一的CPU耗尽也不能够代表服务就出现过载,但又可能产生过载,这就和具体业务有关; 三是在某些场景下,出现过载的情况,也不一定会耗尽资源,例如当前所有的服务都在等待之中(可能是后端的回复或者其他),同样也不会对CPU、内存、io、网络等资源造成影响,但依然进入了过载。总体来说该方式适合的场景相对会简单点。
检测请求到达时间
依据请求处理的时延来判断是否过载。记录请求到达的时间戳,和处理请求结束的时间戳,得到请求到达自身服务器处理的时延,超出阈值,则可判定为超时失效,可以直接丢弃。使用独立模块读取系统缓冲区中数据,打上时间戳,存入消息缓冲区,在处理时,超过一定时延的请求,则拒绝处理,因为可以认为即使处理了也是无用的。
== 从中可以看出时间戳很关键(为啥会单独提出这个问题,因为在后续的方案设计中,时间戳依然是解决过载问题的关键点,此处先卖个关子)。==
A、 时间戳如果使用本地读取时刻调用系统的时间函数获取,就没有考虑消息包到达系统缓冲区的时间,因此是万万不能这样做。
B、 到可以通过ioctl调用SIOCGSTAMP的接口,获得时间戳,但这会加大系统开销,原因是每次recv完,都需要重新设置一下ioctl一次。并且不是线程安全的。
C、 使用socket选项SO_TIMESTAMP(数据链路层的接收时间戳),通过带外数据获取到数据到达系统缓冲区的时间。
通过这种方式已经能够很好地解决负载问题,通过如此,并不需要设置过于繁琐的配置或者去识别过载的问题,目前此方法在SPP的框架中在使用。
可能存在的一些问题在于:
1、 完全使用时间戳过期的方式来判断,并不一定适合所有场景,假设处理耗时过长,而在缓冲区中也呆了较长时间,但请求量并不大,服务器未过载,在处理一些需要强写入的情况下,单靠该机制也会稍许欠妥。但如果加入一些协议上层机制,告诉该消息务必执行,也是可避免的。
2、 在出现过载的情况之下,很可能会导致整体的服务都会产生一个固定的延时,因为每次抛弃到可执行的范围内,至少会有一个超时时间范围内的延时,如果是较长的服务链的话,最前面的等待服务很可能会出现超时,因此其延时的设置相对也很困难,过小就太过灵敏,过大就会出现刚所述的问题。
3、 该方式只是管理了到达本服务器缓冲区之后的问题,并没有考虑整条服务链上的延时,很可能到达本服务器缓冲区时,就已经过期了,并且有可能这些数据在对端缓冲区已经产生了堆积,但到本端,并不会判断其过期。
4、 剩下还有一些内容可以做更多优化:另外SO_TIMESTAMP使用的是系统时间,会受系统时间修改的影响,但这个问题也不大,因为即使修改了,影响的只是本次系统缓冲区的数据。其他可以考虑业务的轻重程度,做按服务来丢弃。
过载识别
当请求量超过处理能力的80%,则判定为过载,触发过载处理。80%只是个经验值,触及到这个量,就应该告警,考虑优化扩容事宜。
过载处理
- 可每条协议中都带上请求的过期时间戳,过期了就直接将该包丢弃。
*
过载恢复
前提
1、 请求量低于处理能力; 2、 所有链接都不处于丢包状态;因为如果处于过载丢包状态,其处理数据量的速度是十分快的,如果单用条件1进行判断,一般都能够满足,但此时还是处于过载状态。
测试
部署了多个发包工具,通过多个接入服务器向测试服务器发消息。
该消息就是命令测试服务器等待一定的时间,使用等待时间的变化来模拟处理能力的变化。 包中也有生成包的时间戳,处理时,会判断该时间戳是否过期,使用该方法来统计执行的是否有效包。 所有包间隔为1秒,过高,则有效包执行较低,过低,则粒度过细,需要判断的次数较多。从后续效果上看,1秒的时间间隔是一个较好的选择,但依据业务的不同,可以设置不同的时间间隔。
由此来测试服务器的过载识别,处理能力,及恢复能力。
在测试中关注两个重要的数据:
1、 有效处理额定比率;即发生过载之后,能够处理的有效包,占理论处理能力的比率。比率越高,效果越好。 2、 拥塞恢复时间;即过载停止后,从过载状态恢复到正常的时间。时间越短,效果越好。
下面是测试的一些详细数据:
实战
如何判断Linux服务器是否被入侵
https://www.toutiao.com/i6498487603812106766/
当前都有谁在登录
对应的命令是 w,查看ip是否异常
whois 命令可以接一个 IP 地址然后告诉你该 IP 所注册的组织的所有信息,当然就包括所在国家的信息
谁曾经登录过
last 命令
如果没有登录历史的话,请一定小心,继续留意入侵的其他线索
回顾命令历史
history 命令,命令历史存储在 ~/.bash_history 文件中
一定留意有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件
若你运行 history 命令却没有输出任何东西那就表示历史文件被删掉了
哪些进程在消耗 CPU
运行 top 然后看最前的那几个进程就行了
strace -p PID // 这会显示出该进程调用的所有系统调用。它产生的内容会很多,但这些信息能告诉你这个进程在做什么。
lsof -p PID // 这个程序会列出该进程打开的文件。通过查看它访问的文件可以很好的理解它在做的事情。
检查所有的系统进程
命令 ps auxf 就能显示足够清晰的信息,需要检查一下每个不认识的进程。经常运行 ps (这是个好习惯)能帮助你发现奇怪的进程。
检查进程的网络使用情况
iftop ,它会排列显示收发网络数据的进程以及它们的源地址和目的地址。类似 DoS 攻击或垃圾机器人这样的进程很容易显示在列表的最顶端。
哪些进程在监听网络连接
通常攻击者会安装一个后门程序专门监听网络端口接受指令
lsof 和 netstat 命令都会列出所有的联网进程
lsof -i netstat -plunt
需要留意那些处于 LISTEN 和 ESTABLISHED 状态的进程,这些进程要么正在等待连接(LISTEN),要么已经连接(ESTABLISHED)。如果遇到不认识的进程,使用 strace 和 lsof 来看看它们在做什么东西。
被入侵之后该怎么办
需要在攻击者警觉到你已经发现他之前夺回机器的控制权。如果他发现你已经发觉到他了,那么他可能会锁死你不让你登陆服务器,然后开始毁尸灭迹。
需要以此创建并启用下面两条规则
* 只允许从你的 IP 地址登录 SSH * 封禁除此之外的任何东西,不仅仅是 SSH,还包括任何端口上的任何协议
不要试着修复这台服务器,然后接着用。你永远不知道攻击者做过什么,因此你也永远无法保证这台服务器还是安全的。
最好的方法就是拷贝出所有的数据,然后重装系统。你的程序这时已经不可信了,但是数据一般来说没问题。
竞品公司恶意攻击
可能比较彻底解决的方法
那就是找靠山,移动,联通,电信都有相应的服务器挂载业务,而且价格和阿里云相比可以说是非常便宜,把公司的服务器挂到联通的省级线路下后,任竞品公司怎么攻击,都没有用了。
服务器基础安全策略
修改ssh登录端口
修改iptables文件,打开新的ssh登录端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3822 -j ACCEPT
重启防火墙
service iptables restart
进入目录/etc/ssh/修改文件sshd_config里面的端口22
重启sshd服务
service sshd restart
修改root登录
新建用户
useradd john.zhang passwd john.zhang
进入目录/etc/ssh/修改文件sshd_config里面的
PermitRootLogin no
重启sshd服务
service sshd restart
SSH 密钥登录linux
首先得生成一对密钥,一把私有密钥和一把公用密钥,公用密钥用于对消息进行加密,只有拥有私有密钥的人才能对该消息进行解密。把公钥放到我们要远程登录的主机(remote)上(~/.ssh/authorized_keys),专用密钥放置到本地机(local)或是U盘。
首先我们创建属于你自己的公钥和私钥:
(1)SSH Secure Shell的Edit菜单Setting菜单,找到Keys,然后Generate New..开始生成新密钥;
(2)下一步(全部默认即可),选择DSA吧(RSA也可以,但RSA和DSA差不多,DSA耗资源少点,其实这点资源消耗可以忽略不计);
(3)下一步,File,取个文件名:zx-ssh,别的可以不填直接点“完成”,Passphrase写了则每次连接时需要输入,我喜欢连密码都不输;为了实现自动登录,passphrase为空,但这样不安全,还是设置一个passphrase吧
(4)找到密钥存放的目录:windows7,在C:\Users\ZX\AppData\Roaming\SSH\UserKeys,有2个文件:zx-ssh(私钥,与公钥一起存放到本地或复制到U盘,在没有使用该过密钥的机器上要访问服务器,则需要导入密钥。
(5)服务器端(我以freebsd为例),修改配置文件:vi/etc/ssh/sshd-config
启用ChallengeResponseAuthentication no #启用此项才可以真正取消密码验证 启用UsePAM yes
重启sshd服务
service sshd restart
(6)将生产的公钥(zx-ssh.pub),上传到服务器用户主目录,复制到用户主目录下的.ssh目录中,然后进行格式转换(转换为openssl格式):
cd ~/.ssh/
如果没有.ssh目录建立一个
ssh-keygen -X -f zx-ssh.pub>>authorized_keys
#转换格式openss格式,并将公钥导入到authorized_keys文件中
chmod 0640 authorized_keys #设置权限,使该文件仅允许属主读写
rm zx-ssh.pub#删除上传的公钥,要不然留住也没用
这里要注意一个问题,就是这个linux主机如果有多个公钥,要注意每个公钥后面需要有个回车或是换行,不能将多个公钥直接罗列在一行。
应该重新检查一下你的authorized_keys的权限(640)。也可能要检查.ssh目录的权限,.ssh目录应该对“组用户”(group)和“其它用户”(other)没有写的权限。运行下面的命令来取消“组用户”(group)和“其它用户”(other)对于.ssh目录的写权限(740):chmod go-w ~/.ssh(也可以chmod 740 ~/.ssh,一样的)
chmod 740 ~/.ssh
mobaXterm里使用私有钥匙连接服务器
(1)选择advanced ssh settings标签(勾选Specify username输入root用户)
(2)勾选Use private key 并选择私有钥匙文件
(3)连接服务器并输入passphrase那里设置的密码
通用命令
查看最近登录用户
last | more
查看全部进程的详细信息,包括父进程、程序目录等信息
ps -ef
查看定时器启动的程序,看是否有可疑定时启动
crontab -l
查看系统启动服务
chkconfig --list
正常应该是
aegis 0:off 1:off 2:on 3:on 4:on 5:on 6:off agentwatch 0:off 1:off 2:on 3:on 4:on 5:on 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
有问题的类似
xbevzvbnld 0:off 1:on 2:on 3:on 4:on 5:on 6:off xpihwrmiip 0:off 1:on 2:on 3:on 4:on 5:on 6:off zshixgubiz 0:off 1:on 2:on 3:on 4:on 5:on 6:off
进入目录 cd /etc/rc.d/init.d/ /etc/rc.d/rc0.d/ 等 删除可疑启动项
进入 /tmp /lib 目录查看可疑lib文件并删除
进入 /etc/cron.d/ /etc/cron.hourly/ 等目录查看可疑文件并删除
打开 /etc/crontab 文件删除里面可疑内容
进入目录 /usr/bin/ /usr/sbin/ 根据日期排序,查看最近生成的可以文件并删除
进入目录 /var/spool/cron 查看可疑文件并删除
查看端口占用情况
netstat -apn
服务器被暴力破解的解决办法
邮件服务器的进程数超过阀值
分析的过程:
1.既然说进程数超过阀值,肯定先查看进程:ps -ef; 2.如果不能即时看到问题,那就动态显示:top,看看究竟是哪个程序占用这么多进程; 3.最后确定了应该是courier-imap,但还不知道是什么原因导致; 4.查看ip连接,确认是否是其存在问题:netstat -ant,发现有大量的110连接; 5.既然是收信服务,那就赶紧追踪查看邮件日志:tail -f /var/log/maillog; 6.发现问题:日志里有大量的登录错误信息,发现是同一个 ip,并在用不同的用户名密码来暴力破解
解决方案:
防火墙语句:
iptables -A INPUT -p tcp --dport 22 -m recent --name ROUTER-SSH --update --seconds 300 --hitcount 3 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name ROUTER-SSH --set -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/hour --limit-burst 3 -j ACCEPT
服务器加固三个方案:
1、密码足够复杂:密码的长度要大于8位最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成。
建议可以使用公司固定密码加个人密码结合的方式,每两周换一次密码。
2、修改默认端口号 sshd 默认端口号: 22
黑客平时可以使用nmap工具扫描到端口号的
演示:
yum install nmap #安装nmap扫描工具 nmap 192.168.1.63 #扫描服务开放了哪些端口
扫描结果:
Starting Nmap 5.51 ( http://nmap.org ) at 2016-05-13 17:50 CST Nmap scan report for 192.168.1.238 Host is up (0.000010s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql 3690/tcp open svn
将默认端口号22改为:8099
vim /etc/ssh/sshd_config #在ssh服务的配置文件里修改端口号 改Port 22 为:Port 8099 /etc/init.d/sshd restart #改完之后重启服务
测试:
ssh root@192.168.1.63 -p 8099 # 使用root用户登陆的时候必须使用端口才可以登陆
注:改端口号的目的是为了迷惑黑客,不容易判断端口号和系统。
3、不使用root用户名登录
不使用用户名为root的帐号登录系统,但是要获得root超级管理员权限。 注:判断一个用户是不是超级管理员,看的是用户的ID是否为0。
例:创建一个普通帐号
useradd xinsz08 #创建一个用户 echo 123456 | passwd --stdin xinsz08 vim /etc/passwd 改:root:x:0:0:root:/root:/bin/bash 为:root:x:0:0:root:/sbin/nologin #不让root登录系统 改:xinsz08:x:500:500::/home/top:/bin/bash 为:xinsz08:x:0:0::/home/top:/bin/bash #改ID500为0,xinsz08就成root身份
测试:
ssh xinsz08@192.168.1.63 -p 8099
使用工具fail2ban防止暴力破解
fail2ban是一款实用软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作
工具
免费开源分布式系统日志收集框架 Exceptionless
https://www.cnblogs.com/savorboard/p/exceptionless.html
流量监控——bwm-ng
下载地址:https://www.gropp.org/?id=projects&sub=bwm-ng
下载后编译,安装
终端执行
bwm-ng
sqlmap注入利器之post注入
https://www.toutiao.com/i6509330822233850372/
免费DDOS攻击测试工具大合集
==千万别做坏事!==
https://www.toutiao.com/i6276160782820442626/
- 卢瓦(LOIC) (Low Orbit Ion Canon)
LOTC是一个最受欢迎的DOS攻击工具。 这个工具被去年流行的黑客集团匿名者用于对许多大公司的网络攻击。
它可以通过使用单个用户执行DOS攻击小型服务器,工具非常易于使用,即便你是一个初学者。 这个工具执行DOS攻击通过发送UDP,TCP或HTTP请求到受害者服务器。 你只需要知道服务器的IP地址或URL,其他的就交给这个工具吧。
下载: http://sourceforge.net/projects/loic/
- XOIC
XOIC是另一个不错的DOS攻击工具。它根据用户选择的端口与协议执行DOS攻击任何服务器。XOIC开发者还声称XOIC比上面的LOIC在很多方面更强大呢。
一般来说,该工具有三种攻击模式,第一个被称为测试模式,是非常基本的; 第二个是正常的DOS攻击模式; 最后一个是带有HTTP / TCP / UDP / ICMP消息的DOS攻击模式,。
对付小型网站来说,这是一个很有效的DDOS工具。 但是从来没有尝试的要小心点,你可能最终会撞自己的网站的服务器。
下载: http://sourceforge.net/projects/xoic/
- HULK (HTTP Unbearable Load King)
HULK是另一个不错的DOS攻击工具,这个工具使用某些其他技术来避免通过攻击来检测。它有一个已知的用户代理列表,且使用的是随机请求。
下载: http://packetstormsecurity.com/files/112856/HULK-Http-Unbearable-Load-King.html
- DDOSIM-Layer
DDOSIM是另一种流行的DOS攻击工具。 顾名思义,它是通过模拟控制几个僵尸主机执行DDOS攻击。所有僵尸主机创建完整的TCP连接到目标服务器。
这个工具是用c++写的,并且在Linux系统上运行。
这些是DDOSIM的主要特点:
- 模拟几个僵尸攻击
- 随机的IP地址
- TCP-connection-based攻击
- 应用程序层DDOS攻击
- HTTP DDos等有效的请求
- 与无效请求HTTP DDoS(类似于直流+ +攻击)
- SMTP DDoS
- TCP洪水连接随机端口
下载: http://sourceforge.net/projects/ddosim/
阅读更多: http://stormsecurity.wordpress.com/2009/03/03/application-layer-ddos-simulator/
- R-U-Dead-Yet
R-U-Dead-Yet是一个HTTP post DOS攻击工具。它执行一个DOS攻击长表单字段,通过POST方法提交。 这个工具提供了一个交互式控制台菜单,检测给定的URL,并允许用户选择哪些表格和字段应用于POST-based DOS攻击。
下载: https://code.google.com/p/r-u-dead-yet/
- Tor's hammer
Tor'hammer是另一个不错的DOS测试工具。 它是用Python编写的。 这个工具有一个额外的优势:它可以通过TOR匿名网络执行攻击。 这是一个非常有效的工具,它可以在几秒内杀了Apache和IIS服务器。
下载: http://packetstormsecurity.com/files/98831/
- PyLoris
据说PyLoris是服务器的测试工具。它也可以用来执行DOS攻击。 这个工具可以利用 SOCKS代理和SSL连接服务器上执行DOS攻击。它可以针对各种协议,包括HTTP、FTP、SMTP、IMAP,Telnet。不像其他传统DOS攻击工具一样,其最新版本的软件添加了一个简单易用的GUI。
下载: http://sourceforge.net/projects/pyloris/
- OWASP DOS HTTP POST
这是另外一个很好的工具。您可以使用这个工具来检查您的web服务器能否够捍卫得住别人的DOS攻击。当然,不仅对防御,它也可以用来执行DOS攻击哦。
下载: https://code.google.com/p/owasp-dos-http-post/
- DAVOSET
DAVOSET是另一个很好的执行DDOS攻击工具。 最新版本的工具新增支持cookie以及许多其他功能。 您可以从Packetstormsecurity DAVOSET免费下载。
下载: http://packetstormsecurity.com/files/123084/DAVOSET-1.1.3.html
- 黄金眼(GoldenEye )HTTP拒绝服务工具
黄金眼也是一个简单但有效的DOS攻击工具。 这是在Python测试开发的DOS攻击,但是人们也把它当做一种黑客工具了。
下载: http://packetstormsecurity.com/files/120966/GoldenEye-HTTP-Denial-Of-Service-Tool.html
Fiddler 4
WireShark
WireShark是一个交互式的网络协议分析仪和捕捉工具。
可以抓手机数据包
OpenNMS
OpenNMS是一个开源企业级网络管理应用程序,提供自动发现,事件和通知管理,性能测量和服务保证功能。OpenNMS包括一个用于iPhone,iPad或iPod Touch的客户端应用程序,可以随时访问,让您可以查看停电,节点,闹钟,并添加一个界面进行监控。
杀毒软件clamav
安装
yum install epel-release wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum repolist yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd -y sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
yum update clamav
yum list clamav
systemctl start clamd@scan
systemctl status clamd@scan
升级病毒库
freshclam
如果升级失败执行这个
rm -f /var/lib/clamav/mirrors.dat
使用
扫描全部文件
clamscan -r
Let’s Encrypt - 靠谱又免费的SSL证书
https://cnodejs.org/topic/58ee36e0a92d341e48cfe7e9
Let’s Encrypt是国外一个公共的免费SSL项目,Let’s Encrypt已经得了 IdenTrust的交叉签名,这意味着其证书现在已经可以被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,你只需要在Web服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let’s Encrypt安装简单,未来大规模采用可能性非常大。
免费SSL证书申请
登录或创建沃通帐户
申请免费SSL证书
在我的订单中点击验证域名
选择网站控制权验证,并下载“xxxx.com.html”文件,并把文件放到申请域名的linux服务器的web根目录中
保证“xxxx.com.html”文件通过网址可以访问到
点击“验证文件已放入以上站点,点击完成验证”
下载证书文件,之前会要求输入证书文件的密码,用于解压证书文件压缩文件用的。
打开证书压缩文件,如果是部署在Nginx或Nodejs服务器,则用到for Nginx.zip包里面的证书
nodejs的https代码例子如下:
var express = require('express'), compression = require('compression'), bodyParser = require('body-parser'), methodOverride = require('method-override'), logger = require('morgan'), cors = require('cors'), cluster = require('cluster'), http = require('http'), https = require('https'), fs = require('fs'); var //tmp = require('./utils/tmp.js'), controller = require('./controller'), config = require('./config.js'), log = require('./utils/logger.js'); //express.bodyParser({limit: '5mb'}); var app = express(); var privateKey = fs.readFileSync('ssl/www.abc.net.key', 'utf8'); var certificate = fs.readFileSync('ssl/www.abc.net.crt', 'utf8'); var credentials = {key: privateKey, cert: certificate}; var httpsServer = https.createServer(credentials, app); // express使用中间件 app.use(logger('combined')); //app.use(compression()); //app.use(bodyParser.urlencoded({ // extended: true //})); app.use(bodyParser.json({limit: '50mb'})); app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); //app.use(bodyParser.json()); app.use(methodOverride()); app.use(cors()); // express启动监听端口,config为配置文件对象 //app.listen(config.port, function() { // log.info('server start listen at ' + config.port); //}); httpsServer.listen(443, function() { log.info('server start listen at ' + 443); }); controller(app); process.on('uncaughtException', function(e) { log.error('process Caught exception: ' + e.stack); }); module.exports = app;
监控
基础
load average: 9.73, 10.67, 10.49 含义
http://www.cnblogs.com/wayne173/p/3768211.html
9.73、10.67、10.49分别代表前一分钟,五分钟,十五分钟的平均CPU负载,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。所谓CPU负载指的是一段时间内任务队列的长度
通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU。
有一个说法,“有多少内核,即有多少负载”。
理想的状态是每个内核的负载为0.7左右
工具
小米开源运维监控系统open-falcon
简介
整个系统的后端,全部golang编写,portal和dashboard使用python编写。小米运维称随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统如zabbix,在性能、扩展性、和用户的使用效率方面,已无法支撑。
open-falcon特色:
强大灵活的数据采集 :自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags) 水平扩展能力 :支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询 高效率的告警策略管理 :高效的portal、支持策略模板、模板继承和覆盖、多种告警方式、支持callback调用 人性化的告警设置 :最大告警次数、告警级别、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期 高效率的graph组件 :单机支撑200万metric的上报、归档、存储(周期为1分钟) 高效的历史数据query组件 :采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据 dashboard :多维度的数据展示,用户自定义Screen 高可用 :整个系统无核心单点,易运维,易部署,可水平扩展
下载
OpenStack
简介
OpenStack是一套用来管理虚拟机的平台软件。它不是一个单一的软件,而是集成了很多个组件用来协同合作。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
组成
- 计算单元 (Nova)是一套控制器,用于为单个用户或使用群组启动虚拟机实例。
- 对象存储 (Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制实现对象存储的系统。
- 镜像服务 (Glance)是一套虚拟机镜像查找及检索系统。它能够以三种形式加以配置:利用OpenStack对象存储机制来存储镜像;利用Amazon的简单存储解决方案(简称S3)直接存储信息;或者将S3存储与对象存储结合起来,作为S3访问的连接器。
日志
Kafka
a