No.7 linux系统加密和安全

1、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。

什么是dos攻击?

	简单来说,DoS攻击,或者说拒绝服务攻击,是一种用于破坏合法用户访问目标网络或网站资源的方法。通常这是通过使大量流量的目标(一般是网站服务器)过载,或通过发送导致目标资源出现故障或完全崩溃的恶意请求来实现的。
DoS攻击的种类:
	某些类型的DoS攻击旨在破坏特定目标对网络或资源的访问,而其他类型旨在使资源完全无法被访问。这些攻击可持续数分钟到数小时,在极少数情况下甚至持续数天。这些网络资源的中断通常会对成为目标的企业造成重大财务损失,并且几乎没有适当的缓解策略。
	DoS攻击有许多不同的方式和规模。由于并非所有设备和网络都以相同的方式受到攻击,因此那些试图破坏的要具有创造性,要利用系统配置中的可能的各种漏洞的方式(进行攻击)。
一些比较知名的的DoS攻击类型包括:
1,缓冲区溢出攻击
	最常见的漏洞利用类型,缓冲区溢出攻击依赖于向目标发送超过开发人员最初构建系统可处理能力的流量。这种类型的攻击让攻击者使目标完全崩溃、或是控制目标进程。
2,ICMP洪水攻击
	ICMP洪水攻击针对目标网络上配置错误的设备,迫使计算机将虚假数据包分发到目标网络上的每个节点(计算机)而不是单个节点,从而使网络过载。这种攻击通常可以称为“死亡之Ping”或“smurf攻击”。
3,SYN洪水攻击
	SYN洪水攻击发送连接请求到(目标)网络服务器,但从不完全验证连接。然后它将继续(发送请求)目标网络服务器上的所有剩余打开端口,直到它强制服务器端崩溃。
DoS攻击与DDoS攻击
	另一个相似的术语是DDoS攻击,它代表分布式拒绝服务攻击。Dos和DDoS攻击之间的区别在于,许多恶意计算机被定向到针对单个资源。与单一来源的DoS攻击相比,分布式拒绝服务攻击更有可能成功破坏目标。攻击者更倾向于这种方法,因为因为攻击来自多个点,从而使追溯攻击来源变得更难。
模拟dos攻击的工具:hping3 
yum install hping3 -y
hping3 -c 15000 -d 150 -S -w 64 -p 80 --flood 192.168.234.100
用法: hping3 host [options]
  -h  --help      显示帮助
  -v  --version   显示版本
  -c  --count     发送数据包的数目
  -d              每个数据包的大小
  -i  --interval  发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000)
      --fast      等同 -i u10000 (每秒10个包)
      --faster    等同 -i u1000 (每秒100个包)
      --flood	  尽最快发送数据包,不显示回复。
  -n  --numeric   数字化输出,象征性输出主机地址。
  -q  --quiet     安静模式
  -I  --interface 网卡接口 (默认路由接口)
  -V  --verbose   详细模式
  -D  --debug     调试信息
  -z  --bind      绑定ctrl+z到ttl(默认为目的端口)
  -Z  --unbind    取消绑定ctrl+z键
      --beep      对于接收到的每个匹配数据包蜂鸣声提示
#/bin/bash
link=100
while true;do
ss -nt | awk -F "[ :]+" '/^ESTAB/{print $(NF-2)}' | sort | uniq -c | while read count ip ;do
	if [ $count -gt $link ];then 
		iptables -A INPUT -s $ip -j REJECT
	fi
           done
done

[14:11:43 root@test01 ~]#crontab -l
*/5 * * * *   /root/denydos.sh

2、描述密钥交换的过程

对称加密:加密和解密使用同一个密钥
特性:
加密、解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多
密钥分发
数据来源无法确认
常见对称加密算法:
DES:Data Encryption Standard,56bits
3DES:
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
-----------------------------------
非对称加密算法
非对称加密:密钥是成对出现
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数据加密:适合加密较小数据,比如: 加密对称密钥
数字签名:主要在于让接收方确认发送方身份
缺点:
密钥长,算法复杂
加密解密效率低下
常见算法:
RSA:由RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变
的,可实现加密和数字签名
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准)
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,
提供相当的或更高等级的安全

非对称加密实现加密
在这里插入图片描述

接收者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
发送者
使用接收者的公钥来加密消息M
将P(M)发送给接收者
接收者
使用密钥S来解密:M=S(P(M))

非对称加密实现数字签名
在这里插入图片描述

发送者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
接收者
使用发送者的公钥来解密M=P(S(M))

3、https的通信过程

1. 客户端发起HTTPS请求
用户在浏览器里输入一个https网址,然后连接到服务器的443端口
2. 服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自
己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出
提示页面。这套证书其实就是一对公钥和私钥
3. 传送服务器的证书给客户端
证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等
4. 客户端解析验证服务器证书
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如:颁发机构,过期时间等
等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一
个随机值。然后用证书中公钥对该随机值进行非对称加密
5. 客户端将加密信息传送服务器
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端
的通信就可以通过这个随机值来进行加密解密了
6. 服务端解密信息
服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值
7. 服务器加密信息并发送信息
服务器将数据利用随机值进行对称加密,再发送给客户端
8. 客户端接收并解密信息
客户端用之前生成的随机值解密服务段传过来的数据,于是获取了解密后的内容

在这里插入图片描述

4、使用awk以冒号分隔获取/etc/passwd文件第一列

[15:06:25 root@test01 ~]#awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
avahi-autoipd
systemd-bus-proxy
systemd-network
dbus
polkitd
apache
abrt
libstoragemgmt
tss
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Linux系统的文件加密存储的Python代码示例: ```python import os import subprocess # 安装VeraCrypt软件 os.system("sudo apt-get update") os.system("sudo apt-get install veracrypt") # 创建加密容器 container_size = "1G" # 容器大小 container_path = "/home/user/encrypted/encrypted-container" # 容器路径 encryption_algorithm = "AES" # 加密算法 password = "password123" # 容器密码 subprocess.call(["veracrypt", "--create", container_path, "--size", container_size, "--encryption", encryption_algorithm, "--password", password]) # 挂载加密容器 mount_path = "/mnt/encrypted" # 挂载路径 keyfile_path = "/home/user/encrypted/keyfile" # 密钥文件路径 subprocess.call(["veracrypt", "--mount", container_path, mount_path, "--keyfile", keyfile_path, "--password", password]) # 存储和访问加密文件 encrypted_file_path = "/mnt/encrypted/secret-file.txt" # 加密文件路径 decrypted_file_path = "/home/user/decrypted/secret-file.txt" # 解密文件路径 # 将文件加密并存储到加密容器中 subprocess.call(["veracrypt", "--text", "--non-interactive", "--protect-hidden=no", "--volume", mount_path, "--keyfile", keyfile_path, "--pim=0", "--truecrypt", "--slot=1", "--filesystem=none", "--encryption=AES", "--hash=SHA-512", "--random-source=/dev/urandom", "--size=1073741824", "--offset=0", "--password=" + password, "--keyfiles=", "--protect-hidden=no", "--filesystem=none", "--create", encrypted_file_path]) # 将加密文件从容器中解密并存储到本地 subprocess.call(["veracrypt", "--text", "--non-interactive", "--protect-hidden=no", "--volume", mount_path, "--keyfile", keyfile_path, "--pim=0", "--truecrypt", "--slot=1", "--filesystem=none", "--encryption=AES", "--hash=SHA-512", "--random-source=/dev/urandom", "--size=1073741824", "--offset=0", "--password=" + password, "--keyfiles=", "--protect-hidden=no", "--filesystem=none", "--decrypt", encrypted_file_path, decrypted_file_path]) # 卸载加密容器 subprocess.call(["veracrypt", "--dismount", mount_path]) ``` 请注意,这只是一个示例代码。在实际使用中,您可能需要根据您的具体需求进行更改和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值