文章目录
加密与解密加密目的及方式MD5GPG加/解密工具介绍使用GPG对称加密方式使用GPG非对称加密方式 AIDE入侵检测系统部署AIDE入侵检测系统初始化数据库,入侵后检测 扫描与抓包扫描方式及工具NMAP扫描基本用法使用NMAP扫描来获取指定主机/网段的相关信息 tcpdump基本用法使用tcpdump分析FTP访问中的明文交换信息扩展知识,使用tcpdump分析Nginx的明文账户认证信息信息加密与解密
加密目的及方式
确保数据的机密性– 对称加密算法(AES,DES):加密/解密用同一个密钥
– 非对称加密算法(RSA,DSA):加密/解密用不同的一个密钥保护信息的完整性
– 信息摘要(MD5,SHA256,SHA512):基于输入的信息生成长度较短、位数固定的散列值
MD5
使用md5sum校验工具– 生成MD5校验值
– 与软件官方提供的校验值对比
vim file1.txtabcdefcp file1.txt file2.txtcat file1.txt > file3.txtmd5sum file?.txt #文件内容一致,则校验和也不变b92aa0f8aa5d5af5a47c6896283f3536 file1.txtb92aa0f8aa5d5af5a47c6896283f3536 file2.txtb92aa0f8aa5d5af5a47c6896283f3536 file3.txt
echo "x" >> file1.txtmd5sum file?.txt6be3efe71d8b4b1ed34ac45f4edd2ba7 file1.txtb92aa0f8aa5d5af5a47c6896283f3536 file2.txtb92aa0f8aa5d5af5a47c6896283f3536 file3.txt
GPG加/解密工具
介绍
GnuPG,GNU Privacy Guard– /
–最流行的数据加密、数字签字工具软件
gpg --version gpg (GnuPG) 2.0.22libgcrypt 1.5.3......Home: ~/.gnupg支持的算法:公钥:RSA, ?, ?, ELG, DSA对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224压缩:不压缩, ZIP, ZLIB, BZIP2
使用GPG对称加密方式
加密操作 : --symmetric或 -c解密操作: --decrypt或-dgpg -c file2.txt #设置密码......
根据提示依次输入两次密码即可。如果是在GNOME桌面环境,设置密码的交互界面会是弹出的窗口程序,如下图
如果是在tty终端执行的上述加密操作,则提示界面也是文本方式的,如下图
根据提示输入两次口令,加密后的文件(自动添加后缀 .gpg)就生成了,传递过程中只要发送加密的文件(比如 file2.txt.gpg)就可以了。
cat file2.txt.gpg#查看加密数据为乱码
使用gpg对加密文件进行解密操作
gpg -d file2.txt.gpg > file2.txt #解密后保存gpg: 3DES 加密过的数据......cat file2.txt#查看解密后的文件abcdef
使用GPG非对称加密方式
创建密钥对: --gen-key导出公钥: --export、–armor或-a导入公钥: --import创建密钥对:
gpg --gen-key #创建密钥对… …请选择您要使用的密钥种类:(1) RSA and RSA (default) #默认算法为RSA(2) DSA and Elgamal(3) DSA (仅用于签名)(4) RSA (仅用于签名)您的选择? #直接回车默认(1)RSA 密钥长度应在 1024 位与 4096 位之间。您想要用多大的密钥尺寸?(2048) #接受默认2048位您所要求的密钥尺寸是 2048 位请设定这把密钥的有效期限。0 = 密钥永不过期<n> = 密钥在 n 天后过期<n>w = 密钥在 n 周后过期<n>m = 密钥在 n 月后过期<n>y = 密钥在 n 年后过期密钥的有效期限是?(0) #接受默认永不过期密钥永远不会过期以上正确吗?(y/n)y You need a user ID to identify your key; the software constructs the user IDfrom the Real Name, Comment and Email Address in this form:"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"真实姓名:UserA电子邮件地址:UserA@注释:UserA您选定了这个用户标识:“UserA (UserA) <UserA@>”更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O//输入大写O确认您需要一个密码来保护您的私钥。我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。gpg: 正在检查信任度数据库gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1upub 2048R/421C9354 -08-16密钥指纹 = 8A27 6FB5 1315 CEF8 D8A0 A65B F0C9 7DA6 421C 9354uid UserA (UserA) <UserA@>sub 2048R/9FA3AD25 -08-16
注意:生产密钥后当前终端可能会变的无法使用,执行reset命令即可,或者关闭后再开一个终端。
导出自己的公钥:
用户的公钥、私钥信息分别保存在pubring.gpg和secring.gpg文件内:
gpg --list-keys #查看公钥环/root/.gnupg/pubring.gpg------------------------------pub 2048R/421C9354 -08-16uid UserA (User A) <UserA@>sub 2048R/9FA3AD25 -08-16
gpg -a --export UserA > UserA.pub//--export的作用是导出密钥,-a的作用是导出的密钥存储为ASCII格式scp UserA.pub 192.168.4.5:/tmp/ //将密钥传给Proxy
导入接收的公钥:
gpg --import /tmp/UserA.pubgpg: 密钥 421C9354:公钥“UserA (UserA) <UserA@>”已导入gpg: 合计被处理的数量:1gpg: 已导入:1 (RSA: 1)
使用公钥加密数据,并把加密后的数据传给私钥解锁
echo "I love you ." > love.txtgpg -e -r UserA love.txt无论如何还是使用这把密钥吗?(y/N)y//确认使用此密钥加密文件//-e选项是使用密钥加密数据//-r选项后面跟的是密钥,说明使用哪个密钥对文件加密scp love.txt.gpg 192.168.4.100:/root //加密的数据传给UserA
私钥解密文件
gpg -d love.txt.gpg > love.txt您需要输入密码,才能解开这个用户的私钥:“UserA (UserA) <UserA@>”2048 位的 RSA 密钥,钥匙号 9FA3AD25,建立于 -08-16 (主钥匙号 421C9354)//验证私钥口令gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 9FA3AD25、生成于 -08-16“UserA (UserA) <UserA@>”cat love.txt#获得解密后的文件内容I love you.
公钥用户验证签名
]$ gpg --verify log.tar.sig log.targpg:于2028年06月07日 星期六 23时23分23秒 CST 创建的签名,使用 RSA,钥匙号 421C9354gpg: 完好的签名,来自于“UserA (UserA) <UserA@>”.......
AIDE入侵检测系统
Aide通过检查数据文件的权限、时间、大小、哈希值等,校验数据的完整性。使用Aide需要在数据没有被破坏前,对数据完成初始化校验,生成校验数据库文件,在被攻击后,可以使用数据库文件,快速定位被人篡改的文件。部署AIDE入侵检测系统
安装软件包yum -y install aide
修改配置文件
确定对哪些数据进行校验,如何校验数据
vim /etc/aide.conf@@define DBDIR /var/lib/aide //数据库目录@@define LOGDIR /var/log/aide//日志目录database_out=file:@@{DBDIR}/aide.db.new.gz//数据库文件名//一下内容为可以检查的项目(权限,用户,组,大小,哈希值等)#p:permissions#i:inode:#n:number of links#u:user#g:group#s:size#md5: md5 checksum#sha1: sha1 checksum#sha256: sha256 checksumDATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256//以下内容设置需要对哪些数据进行入侵校验检查//注意:为了校验的效率,这里将所有默认的校验目录与文件都注释//仅保留/root目录,其他目录都注释掉/root DATAONLY#/boot NORMAL//对哪些目录进行什么校验#/bin NORMAL#/sbin NORMAL#/lib NORMAL#/lib64 NORMAL#/opt NORMAL#/usr NORMAL#!/usr/src //使用[!],设置不校验的目录#!/usr/tmp
初始化数据库,入侵后检测
入侵前对数据进行校验,生成初始化数据库aide --initAIDE, version 0.15.1AIDE database at /var/lib/aide/aide.db.new.gz initialized.//生成校验数据库,数据保存在/var/lib/aide/aide.db.new.gz
备份数据库,将数据库文件拷贝到U盘(非必须的操作)
cp /var/lib/aide/aide.db.new.gz /media/
入侵后检测
cd /var/lib/aide/mv aide.db.new.gz aide.db.gzaide --check
扫描与抓包
扫描方式及工具
典型的扫描方式– Scan,主动探测
– Sniff,被动监听/嗅探
– Capture.数据包捕获(抓包)常见的安全分析工具
– 扫描器: NMAP
– 协议分析:tcpdump、WireShark
NMAP扫描
一款强大的网络探测利器工具支持多种探测技术– ping扫描
– 多端口扫描
– TCP/IP指纹校验
– … …
基本用法
nmap [扫描类型] [选项] <扫描目标…>常用的扫描类型– -sS,TCP SYN扫描(半开)
– -sT,TCP 连接扫描(全开)
– -sU,UDP扫描
– -sP,ICMP扫描
– -A,目标系统全面分析
使用NMAP扫描来获取指定主机/网段的相关信息
安装软件yum -y install nmap
案例
nmap -sP 192.168.4.100#检查192.168.4.100主机是否可以ping通nmap -n -sP 192.168.4.100#使用-n选项可以不执行DNS解析nmap -n -sP 192.168.4.0/24#检查192.168.4.0/24网段内哪些主机可以ping通nmap -sT 192.168.4.100 #检查目标主机所开启的TCP服务nmap -p 21-22 192.168.4.0/24 #检查192.168.4.0/24网段内哪些主机开启了FTP、SSH服务nmap -sU 192.168.4.100 #检查目标主机所开启的UDP服务nmap -A 192.168.4.100,5 #全面分析目标主机192.168.4.100和192.168.4.5的操作系统信息
tcpdump
基本用法
tcpdump [选项] [过滤条件]常见监控选项:
– -i 指定监控的网络接口
– -A 转换为ACSII码,以方便阅读
– -w 将数据包信息保存到指定文件
– -r 从指定文件读取数据包信息
– -c定义抓包个数
过滤条件:
– 类型:hosth、net、port、portrange
– 方向:src、dst
– 协议:tcp、udp、ip、wlan、arp、…
– 多个条件组合:and、or、not
使用tcpdump分析FTP访问中的明文交换信息
准备Vsftpd服务器(192.168.4.5操作)yum -y install vsftpdsystemctl restart vsftpd
启用tcpdump命令行抓包
执行tcpdump命令行,添加适当的过滤条件,只抓取访问主机192.168.4.5的21端口的数据通信 ,并转换为ASCII码格式的易读文本。
这里假设,192.168.4.5主机有vsftpd服务,如果没有需要提前安装并启动服务!!!
tcpdump -A host 192.168.4.5 and tcp port 21tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes........
执行FTP访问,并观察tcpdump抓包结果
从192.168.4.100访问主机192.168.4.5的vsftpd服务。
yum -y install ftpftp 192.168.4.5Connected to 192.168.4.200 (192.168.4.200).220 (vsFTPd 3.0.2)Name (192.168.4.200:root): tom #输入用户名331 Please specify the password.Password:#输入密码530 Login incorrect.Login failed.ftp>quit#退出
观察抓包的结果(回到porxy主机观察tcpdump抓包的结果):
.. …18:47:27.960530 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 1:14, ack 21, win 65515, length 13E..5..@.@......x...d.*..G.\c.1BvP.......USER tom18:47:29.657364 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 14:27, ack 55, win 65481, length 13E..5..@.@......x...d.*..G.\p.1B.P.......PASS 123
再次使用tcpdump抓包,使用-w选项可以将抓取的数据包另存为文件,方便后期慢慢分析。
tcpdump -A -w ftp.cap \> host 192.168.4.5 and tcp port 21 #抓包并保存
tcpdump命令的-r选项,可以去读之前抓取的历史数据文件
tcpdump -A -r ftp.cap | egrep '(USER|PASS)' //分析数据包.. ..E..(..@.@.. ...x...d.*..G.\c.1BbP.............18:47:25.967592 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 1:21, ack 1, win 229, length 20E..<FJ@.@.jE...d...x...*.1BbG.\cP...V...220 (vsFTPd 2.2.2)… …18:47:27.960530 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 1:14, ack 21, win 65515, length 13E..5..@.@......x...d.*..G.\c.1BvP.......USER mickey… …18:47:27.960783 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 21:55, ack 14, win 229, length 34E..JFL@.@.j5...d...x...*.1BvG.\pP...i~..331 Please specify the password.… …18:47:29.657364 IP 192.168.4.5.ftp > 192.168.4.100.novation: Flags [P.], seq 14:27, ack 55, win 65481, length 13E..5..@.@......x...d.*..G.\p.1B.P.......PASS pwd123… …18:47:29.702671 IP 192.168.4.100.novation > 192.168.4.5.ftp: Flags [P.], seq 55:78, ack 27, win 229, length 23E..?FN@.@.j>...d...x...*.1B.G.\}P.......230 Login successful.
扩展知识,使用tcpdump分析Nginx的明文账户认证信息信息
在proxy主机(192.168.4.5)准备一台需要用户认证的Nginx服务器cd /usr/local/nginx/conf/cp nginx.conf.default nginx.conf #还原配置文件vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name localhost;auth_basic "xx";auth_basic_user_file "/usr/local/nignx/pass";… …htpasswd -c /usr/local/nginx/pass jerry //创建账户文件New password:123 //输入密码Re-type new password:123//确认密码nginx -s reload
在proxy主机使用tcpdump命令抓包
tcpdump -A host 192.168.4.5 and tcp port 80
在真实机使用浏览器访问192.168.4.5
firefox http://192.168.4.5 #根据提示输入用户名与密码
回到proxy查看抓包的数据结果
tcpdump -A host 192.168.4.5 and tcp port 80tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes… …Authorization: Basic dG9tOjEyMzQ1Ng==… …
查看base64编码内容
echo "dG9tOjEyMzQ1Ng==" | base64 -dtom:123456echo "tom:123456" | base64 dG9tOjEyMzQ1Ngo=