gpg,aide,nmap,tcpdump

加密与解密应用

本案例要求采用gpg工具实现加/解密及软件签名等功能,分别完成以下任务:

1. 检查文件的MD5校验和

2. 使用GPG实现文件机密性保护,加密和解密操作

3. 使用GPG的签名机制,验证数据的来源正确性

加密算法主要有以下几种分类:

1.为确保数据机密性算法:

a) 对称加密算法(AES,DES) gpg - d file2.txt.gpg > file2.txt

b) 非对称加密算法(RSA,DSA)

2.为确保数据完整性算法:

a) 信息摘要(MD5,SHA256,SHA512)

步骤一:检查文件的MD5校验和

1) 查看文件改动前的校验和,复制为新文件其校验和不变

[ root@proxy ~] # vim file1.txt

abcdef

123456779

[ root@proxy ~] # cp file1.txt file2.txt

[ root@proxy ~] # cat file1.txt > file3.txt

[ root@proxy ~] # md5sum f ile?.txt //文件内容一致,则校验和也不变

2) 对文件内容稍作改动,再次检查校验和,会发现校验和已大不相同

[ root@proxy ~] # echo "x" >> file1.txt

[ root@proxy ~] # md5sum file?.txt

步骤二:使用GPG对称加密方式保护文件

gnupg是非常流行的加密软件,支持所有常见加密算法,并且开源免费使用

1)确保已经安装了相关软件(默认已经安装好了)

[ root@proxy ~] # yum - y install gnupg2 //安装软件

[ root@proxy ~] # gpg - - version //查看版本

2) gpg使用对称加密算法加密数据的操作

[ root@proxy ~] # gpg - c file2.txt

根据提示依次输入两次密码即可。如果是在GNOME桌面环境,设置密码的交互界面会是弹出的窗口程序

如果是在tty终端执行的上述加密操作,则提示界面也是文本方式的

根据提示输入两次口令,加密后的文件(自动添加后缀 .gpg)就生成了,传递过程中只要发送加密的文件(比如 file2.txt.gpg)就可以了。

[ root@proxy ~] # cat file2.txt.gpg //查看加密数据为乱码

3)使用gpg对加密文件进行解密操作

收到加密的文件后,必须进行解密才能查看其内容。

[ root@proxy ~] # gpg - d file2.txt.gpg > file2.txt //解密后保存

gpg: 3DES 加密过的数据

... ... //根据提示输入正确密码

[ root@proxy ~] # cat file2.txt //查看解密后的文件

步骤三:使用GPG非对称加密方式保护文件

非对称加密/解密文件时,UserA(192.168.4.100)生成私钥与公钥,并把公钥发送给UserB(192.168.4.5),UserB使用公钥加密数据,并把加密后的数据传给UserA,UserA最后使用自己的私钥解密数据。

1)接收方UserA创建自己的公钥、私钥对(在192.168.4.100操作)

[ root@client ~] # gpg --list-keys //查看密钥

[ root@client ~] # gpg --gen-key //创建密钥对

请选择您要使用的密钥种类:

( 1) RSA and RSA ( def ault) //默认算法为RSA

您的选择? //直接回车默认( 1)

RSA 密钥长度应在 1024 位与 4096 位之间。

您想要用多大的密钥尺寸?( 2048) //接受默认2048位

密钥的有效期限是?( 0) //接受默认永不过期

以上正确吗?( y /n) y //输入y 确认

... ...

真实姓名:UserA

电子邮件地址:UserA@tarena.com

注释:UserA

更改姓名( N) 、注释( C) 、电子邮件地址( E) 或确定( O) /退出( Q) ?O //输入大写O确认

... ...

注意:生产密钥后当前终端可能会变的无法使用,执行reset命令即可,或者关闭后再开一个终端

2)UserA导出自己的公钥文件(在192.168.4.100操作)

用户的公钥、私钥信息分别保存在pubring.gpg和secring.gpg文件内:

[ root@client ~] # gpg - - list- keys //查看公钥环

使用gpg命令结合--export选项将其中的公钥文本导出

[ root@client ~] # gpg - a - - export UserA > UserA.pub

//- - export的作用是导出密钥,- a的作用是导出的密钥存储为ASCII格式

[ root@client ~] # scp UserA.pub 192.168.4.5: /tmp/

//将公钥密钥传给Proxy

3)UserB导入接收的公钥信息(在192.168.4.5操作)

使用gpg命令结合--import选项导入发送方的公钥信息,以便在加密文件时指定对应的公钥。

[ root@proxy ~] # gpg - - import /tmp/UserA.pub

4) UserB使用公钥加密数据,并把加密后的数据传给UserA(在192.168.4.5操作)

[ root@proxy ~] # echo "I love you ." > love.txt

[ root@proxy ~] # gpg - e - r UserA love.txt

无论如何还是使用这把密钥吗?( y /N) y //确认使用此密钥加密文件

//- e选项是使用密钥加密数据

//- r选项后面跟的是密钥,说明使用哪个密钥对文件加密

# scp love.txt.gpg 192.168.4.100: /root /加密的数据传给UserA

4)UserA以自己的私钥解密文件(在192.168.4.100操作)

[ root@client ~] # gpg - d love.txt.gpg > love.txt

[ root@client ~] # cat love.txt //获得解密后的文件内容

I love you.

步骤四:使用GPG的签名机制,检查数据来源的正确性

使用私钥签名的文件,是可以使用对应的公钥验证签名的,只要验证成功,则说明这个文件一定是出自对应的私钥签名,除非私钥被盗,否则一定能证明这个文件来自于某个人

1)在client(192.168.4.100)上,UserA为软件包创建分离式签名将软件包、签名文件、公钥文件一起发布给其他用户下载。

[ root@client ~] # tar zcf log.tar /var/log //建立测试软件包

[ root@client ~] # gpg - b log.tar //创建分离式数字签名

[ root@client ~] # ls - lh log.tar*

-rw-rw-r--. 1 root root 170 8月 17 21:18 log.tar

-rw-rw-r--. 1 root root 287 8月 17 21:22 log.tar.sig

# scp log.tar* 192.168.4.5: /root //将签名文件与签名传给UserB

2)在192.168.4.5上验证签名

[ root@proxy ~] # gpg - - verify log.tar.sig log.tar

###############################

使用AIDE做入侵检测

本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作:

  1. 安装aide软件
  2. 执行初始化校验操作,生成校验数据库文件
  3. 备份数据库文件到安全的地方
  4. 使用数据库执行入侵检测操作

Aide通过检查数据文件的权限、时间、大小、哈希值等,校验数据的完整性。

使用Aide需要在数据没有被破坏前,对数据完成初始化校验,生成校验数据库文件,在被攻击后,可以使用数据库文件,快速定位被人篡改的文件。

步骤一:部署AIDE入侵检测系统

1)安装软件包

[ root@proxy ~] # yum - y install aide

2) 修改配置文件

确定对哪些数据进行校验,如何校验数据

[ root@proxy ~] # vim /etc/aide.conf

@@def ine DBDIR /var/lib/aide //数据库目录

@@def ine LOGDIR /var/log/aide //日志目录

database_out=f ile: @@{ 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 checksum

DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256

//以下内容设置需要对哪些数据进行入侵校验检查

//注意:为了校验的效率,这里将所有默认的校验目录与文件都注释

//仅保留/root目录,其他目录都注释掉

按键ctrl+v,往下全选,按键shift+i,shift+#,然后按esc,全部就注释了

/root DATAONLY

#/boot NORMAL //对哪些目录进行什么校验

#/bin NORMAL

#/sbin NORMAL

#/lib NORMAL

#/lib64 NORMAL

#/opt NORMAL

#/usr NORMAL

#! /usr/src //使用[ ! ] ,设置不校验的目录

#!/usr/tmp

步骤二:初始化数据库,入侵后检测

1)入侵前对数据进行校验,生成初始化数据库

[ root@proxy ~] # aide - - init

AIDE, version 0.15.

AIDE database at /var/lib/aide/aide.db.new.gz initialized.

//生成校验数据库,数据保存在/var/lib/aide/aide.db.new.gz

2)备份数据库,将数据库文件拷贝到U盘(非必须的操作)

[ root@proxy ~] # cp /var/lib/aide/aide.db.new.gz /media/

3)入侵后检测

[ root@proxy ~] # cd /var/lib/aide/

[ root@proxy ~] # mv aide.db.new.gz aide.db.gz

[ root@proxy ~] # aide - - check //检查哪些数据发生了变化

############################

扫描与抓包分析

本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作:

1. 使用NMAP扫描来获取指定主机/网段的相关信息

2. 使用tcpdump分析FTP访问中的明文交换信息

步骤一:使用NMAP扫描来获取指定主机/网段的相关信息

1)安装软件

[ root@proxy ~] # yum - y install nmap

//基本用法:

# nmap [ 扫描类型] [ 选项] <扫描目标 ...>

//常用的扫描类型

// - sS,TCP SYN扫描(半开)

// - sT,TCP 连接扫描(全开)

// - sU,UDP扫描

// - sP,ICMP扫描

// - A,目标系统全面分析

2)检查192.168.4.100主机是否可以ping通

[ root@proxy ~] # nmap - sP 192.168.4.100

... ...

Nmap done: 1 IP address ( 1 host up) scanned in 0.02 seconds

使用-n选项可以不执行DNS解析

[ root@proxy ~] # nmap - n - sP 192.168.4.100

Nmap done: 1 IP address ( 1 host up) scanned in 0.03 seconds

3)检查192.168.4.0/24网段内哪些主机可以ping通

[ root@proxy ~] # nmap - n - sP 192.168.4.0/24

4)检查目标主机所开启的TCP服务

[ root@proxy ~] # nmap - sT 192.168.4.100

5)检查192.168.4.0/24网段内哪些主机开启了FTP、SSH服务

[ root@proxy ~] # nmap - p 21- 22 192.168.4.0/24

6)检查目标主机所开启的UDP服务

[ root@proxy ~] # nmap - sU 192.168.4.100 //指定- sU扫描UDP

53/udp open domain

111/udp open rpcbind

7)全面分析目标主机192.168.4.100和192.168.4.5的操作系统信息

[ root@proxy ~] # nmap - A 192.168.4.100,5

Starting Nmap 5.51 ( http: //nmap.org ) at 2017- 05- 17 18: 03 CST

Nmap scan report f or 192.168.4.100 //主机mail的扫描报告

步骤二:使用tcpdump分析FTP访问中的明文交换信息

1)准备Vsftpd服务器(192.168.4.5操作)

[ root@proxy ~] # yum - y install vsftpd

[ root@proxy ~] # systemctl restart vsftpd

2)启用tcpdump命令行抓包

执行tcpdump命令行,添加适当的过滤条件,只抓取访问主机192.168.4.5的21端口的数据通信 ,并转换为ASCII码格式的易读文本。

这里假设,192.168.4.5主机有vsftpd服务,如果没有需要提前安装并启动服务!!!

[ root@proxy ~] # tcpdump - A host 192.168.4.5 and tcp port 21

..... .. //进入等待捕获数据包的状态

//监控选项如下

// - i, 指定监控的网络接口(默认监听第一个网卡)

// - A, 转换为 ACSII 码,以方便阅读

// - w, 将数据包信息保存到指定文件

// - r, 从指定文件读取数据包信息

//tcpdump的过滤条件

// 类型:host、net、port、portrange

// 方向:src、dst

// 协议:tcp、udp、ip、wlan、arp、......

// 多个条件组合:and、or、not

3)执行FTP访问,并观察tcpdump抓包结果

从192.168.4.100访问主机192.168.4.5的vsftpd服务。

[ root@client ~] # yum - y install ftp

[ root@client ~] # ftp 192.168.4.5

... ...

Name ( 192.168.4.200: root) : tom //输入用户名

331 Please specif y the password.

Password: //输入密码

... ...

ftp>quit //退出

观察抓包的结果(回到porxy主机观察tcpdump抓包的结果):

[ root@proxy ~] #

... ...

4)再次使用tcpdump抓包,使用-w选项可以将抓取的数据包另存为文件,方便后期慢慢分析。

[ root@proxy ~]

# tcpdump - A - w ftp.cap host 192.168.4.5 and tcp port 21 //抓包并保存

tcpdump命令的-r选项,可以去读之前抓取的历史数据文件

# tcpdump - A - r ftp.cap | egrep '(USER| PASS) ' //分析数据包

步骤三:扩展知识,使用tcpdump分析Nginx的明文账户认证信息信息

1)在proxy主机(192.168.4.5)准备一台需要用户认证的Nginx服务器

[ root@proxy ~] # cd /usr/local/nginx/conf/

# cp nginx.conf .default nginx.conf //还原配置文件

# vim /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name localhost;

auth_basic "xx";

auth_basic_user_file "/usr/local/nginx/pass";

... ...

# htpasswd - c /usr/local/nginx/pass jerry //创建账户文件

New password: 123 //输入密码

Re- ty pe new password: 123 //确认密码

# nginx - s reload

2)在proxy主机使用tcpdump命令抓包

[ root@proxy ~] # tcpdump - A host 192.168.4.5 and tcp port 80

3)在真实机使用浏览器访问192.168.4.5

[ root@pc001 ~] # firefox http: //192.168.4.5 //根据提示输入用户名与密码

4)回到proxy查看抓包的数据结果

[ root@proxy ~] # tcpdump - A host 192.168.4.5 and tcp port 80

5) 查看base64编码内容

[ root@proxy ~] # echo "dG9tOjEy MzQ1Ng==" | base64 - d

tom: 123456

[ root@proxy ~] # echo "tom: 123456" | base64

dG9tOjEy MzQ1Ngo=

###############################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值