Linux 练习

【Linux 练习】要须心地收汗马,孔孟行世目杲杲。这篇文章主要讲述Linux 练习相关的知识,希望能为你提供帮助。

  1. 解决 DOS 攻击生产案例:根据 web 日志或者网络连接数,监控当前某个 IP 并发连接数或者短时内 PV 达到100,即调用防火墙封掉对应的 IP,监控频率每隔5分钟。
#1.创建监控脚本,如下是根据网络连接数来进行判断:
[root@ubuntu:~]#cat /root/net.sh
#!/bin/bash
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

  1. 描述密钥交换的过程(以 SSH 密钥交换为例)
  1. 客户端发起连接请求。
  2. 服务端返回自己的公钥,以及一个会话 ID给到客户端。
  3. 客户端生成密钥对。
  4. 客户端利用自己的公钥异或会话 ID,计算出一个值 Res,并用服务端的公钥加密。
  5. 客户端发送加密后的值到服务端,服务端用自身私钥解密,得到 Res。
  6. 服务端用解密后的值 Res 异或会话 ID,计算出客户端的公钥。
最终:双方各自持有三个密钥,分别为自己的一对公、私钥,以及对方的公钥,之后的通讯都会被加密。那么如何加密呢?加密过程如下:
  1. 客户端利用服务端的公钥加密数据,然后发送到服务端。
  2. 服务端利用自己的私钥解密数据。
  3. 服务端利用客户端的公钥加密数据,然后发送到客户端。
  4. 客户端利用自己的私钥解密数据。


  1. 描述 HTTPS 的通信过程:
  1. 客户端发起 HTTPS 请求,连接到服务端的443端口。
  2. 服务端收到请求之后,发送自身的证书(也就是公钥)给客户端。证书包含的信息:证书颁发机构、证书有效期、域名等等。
  3. 客户端解析服务器证书。解析工作由客户端的 TLS 完成:
  • 验证证书是否有效:如果发现证书异常,则会弹出一个警告框,提示证书存在问题。
  • 如果证书没有问题,那么客户端会进一步生成一个随机值。
  • 生成随机值之后,用证书对该随机值进行非对称加密。
  1. 客户端将加密之后的数据传送到服务端。
  2. 服务端用自身的证书私钥对传输过来的数据进行解密,得到客户端生成的随机值。随机值的作用就是对之后的数据传输进行对称加密。
  3. 服务端利用随机值对数据进行对称加密,然后发往客户端。
  4. 客户端接收数据,并用此前生成的随机值解密该数据,就可以获取解密后的内容了。


  1. 使用 awk 以冒号为分隔符,获取 /etc/passwd 文件第一列:
[root@ubuntu:~]#awk -F":" print $1 /etc/passwd
root
daemon
......




    推荐阅读