Linux 练习
Posted superkx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 练习相关的知识,希望对你有一定的参考价值。
- 解决 DOS 攻击生产案例:根据 web 日志或者网络连接数,监控当前某个 IP 并发连接数或者短时内 PV 达到100,即调用防火墙封掉对应的 IP,监控频率每隔5分钟。
#1.创建监控脚本,如下是根据网络连接数来进行判断:
[root@ubuntu:~]#cat /root/net.sh
TIME=`date +%F_%H:%M:%S`
(ss -tn |egrep "\\b:80\\b" |awk -F" " print $5 |awk -F":" print $1 |sort -nr |uniq -c) | while read count ip;do
if [ $count -gt 100 ];then
echo "[$TIME]-$ip 并发连接数达到$count以上,配置 iptables" >> /tmp/net.txt
/sbin/iptables -nvL | grep $ip &> /dev/null
if [ $? -ne 0 ];then
/sbin/iptables -A INPUT -s $ip -j REJECT
fi
fi
done
#注意:
#上面iptables命令,要加上/sbin,因为crontab的环境变量不包括/sbin,如果不加,iptables命令将不会被执行,也可以直接在
#crontab里加上PATH环境变量
#2.创建计划任务
[root@ubuntu:~]#crontab -l
*/5 * * * * /bin/bash /root/net.sh
- 描述密钥交换的过程(以 SSH 密钥交换为例)
- 客户端发起连接请求。
- 服务端返回自己的公钥,以及一个会话 ID给到客户端。
- 客户端生成密钥对。
- 客户端利用自己的公钥异或会话 ID,计算出一个值 Res,并用服务端的公钥加密。
- 客户端发送加密后的值到服务端,服务端用自身私钥解密,得到 Res。
- 服务端用解密后的值 Res 异或会话 ID,计算出客户端的公钥。
最终:双方各自持有三个密钥,分别为自己的一对公、私钥,以及对方的公钥,之后的通讯都会被加密。那么如何加密呢?加密过程如下:
- 客户端利用服务端的公钥加密数据,然后发送到服务端。
- 服务端利用自己的私钥解密数据。
- 服务端利用客户端的公钥加密数据,然后发送到客户端。
- 客户端利用自己的私钥解密数据。
- 描述 HTTPS 的通信过程:
- 客户端发起 HTTPS 请求,连接到服务端的443端口。
- 服务端收到请求之后,发送自身的证书(也就是公钥)给客户端。证书包含的信息:证书颁发机构、证书有效期、域名等等。
- 客户端解析服务器证书。解析工作由客户端的 TLS 完成:
- 验证证书是否有效:如果发现证书异常,则会弹出一个警告框,提示证书存在问题。
- 如果证书没有问题,那么客户端会进一步生成一个随机值。
- 生成随机值之后,用证书对该随机值进行非对称加密。
- 客户端将加密之后的数据传送到服务端。
- 服务端用自身的证书私钥对传输过来的数据进行解密,得到客户端生成的随机值。随机值的作用就是对之后的数据传输进行对称加密。
- 服务端利用随机值对数据进行对称加密,然后发往客户端。
- 客户端接收数据,并用此前生成的随机值解密该数据,就可以获取解密后的内容了。
- 使用 awk 以冒号为分隔符,获取 /etc/passwd 文件第一列:
[root@ubuntu:~]#awk -F":" print $1 /etc/passwd
root
daemon
......
以上是关于Linux 练习的主要内容,如果未能解决你的问题,请参考以下文章