四十五.加密与解密 AIDE入侵检测系统 扫描与抓包

一.加密与解密
1.1 常见的加密算法
对称加密:怎么加密,就怎么解密
DES Date Encryption Standard
AES Advance Encryption Standard
非对称加密
RSA Rivest Shamirh Adleman
DSA Digital Signature Algorithm
 
数据信息完整性
MD5 Message Digest Algorithm 5
SHA Secure Hash Algorithm
]# md5sum a.txt
 
1.2 GPG加密工具
]# rpm -q  gnupg2
gnupg2-2.0.22-3.el7.x86_64
]# which  gpg
/bin/gpg
]# gpg --help
 
1.3 新建两个用户,并分别登陆,在一台机器行测试加密解密
]# useradd usera
]# useradd userb
]# echo 123456 | passwd --stdin usera
]# echo 123456 | passwd --stdin userb
]# ssh -X usera@localhost
]# ssh -X userb@localhost
 
1.3.1 gpg 数据对称加密与解密  -c 加密  -d 解密 
发             收
usera加密
usera --> userb
usera~] gpg -c a.txt 
usera~] ls
a.txt  a.txt.gpg
usera]$ cp a.txt.gpg /tmp/
 
userb解密
userb~] ls -l /tmp/a.txt.gpg 
-rw-rw-r--. 1 usera usera 48 2月  19 15:01 /tmp/a.txt.gpg
解密
]$ cat /tmp/a.txt.gpg   看到的是乱码
userb/tmp] gpg -d a.txt.gpg > ~/a4.txt (提示输解密密码)
userb]$ cat a4.txt 查看文件内容(解密)
 
1.3.2 gpg 数据非对称加密与解密
公钥加密 私钥解密
加密       解密
uesra    userb
A--发送加密数据(B的公钥)  B--查看加密数据(B的私钥)
 
B--创建秘钥对
B-->公钥-->A
A--公钥-->加密数据
A--数据-->B
B--私钥-->数据
 
1) 创建密钥对 userb
]$ rm -rf  ~/.gnupg/
]$ gpg --gen-key  创建密钥对
...
请选择您要使用的密钥种类:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (仅用于签名)
   (4) RSA (仅用于签名)
您的选择? 
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 
密钥永远不会过期
以上正确吗?(y/n)y
...
真实姓名:userb
电子邮件地址:pang@163.com
注释:teacher
您选定了这个用户标识:
    “userb (teacher) <pang@163.com>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O  (提示输入保护私钥的密码)
 
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  1 已签名:  0 信任度:0-,0q,0n,0m,0f,1u
pub   2048R/44CFD46F 2019-02-19
密钥指纹 = DB63 55F8 6BD7 941D 8F4A  872F BD9B B688 44CF D46F
uid                  userb (teacher) <pang@163.com>
sub   2048R/F6E2F282 2019-02-19
 
]$ ls ~/.gnupg/
gpg.conf           pubring.gpg   random_seed  S.gpg-agent
private-keys-v1.d  pubring.gpg~  secring.gpg  trustdb.gpg
 
2) userb导出公钥
]$ gpg --export -a > ~/userb.pub
]$ ls
a4.txt userb.pub
 
3) userb把导出公钥放到公共目录下
~]$ cp ~/userb.pub /tmp/
 
usera :
1) usera导入公钥
]$ rm -rf  ~/.gnupg/
]$ gpg --import /tmp/userb.pub
]$ ls ~/.gnupg/
gpg.conf  pubring.gpg  pubring.gpg~  secring.gpg  trustdb.gpg
 
2) usera使用公钥加密文件
]$ echo aaaa > test.txt
]$ gpg -e -r userb test.txt  文件加密
             无论如何还是使用这把密钥吗?(y/N)y
]$ ls
test.txt  test.txt.gpg  userb.pub
 
3) usera把加密文件放到公共目录下
]$ cp test.txt.gpg /tmp/
]$ ls -l /tmp/test.txt.gpg 
-rw-rw-r--. 1 usera usera 344 2月  19 15:45 /tmp/test.txt.gpg
 
4) userb用户使用私钥解密文件
]$ gpg -d /tmp/test.txt.gpg > ~/test5.txt  (必须输入私钥的密码)
 
5) userb查看文件内容
]$ cat ~/test5.txt
 
1.3.3 gpg 数字签名
userb使用私钥签名    
]$ echo qwe > a1.txt 创建文件
]$ gpg -b a1.txt (数字签名 要输入私钥密码)
 
]$ls ~/a1*
/home/userb/a1.txt  /home/userb/a1.txt.sig
]$ cp ~/a1*  /tmp/
]$ ls -l /tmp/a1*
-rw-rw-r--. 1 userb userb   4 2月  19 15:51 /tmp/a1.txt
-rw-rw-r--. 1 userb userb 287 2月  19 15:51 /tmp/a1.txt.sig
]$ gpg --fingerprint    输出私钥指纹
/home/userb/.gnupg/pubring.gpg
------------------------------
pub   2048R/44CFD46F 2019-02-19
密钥指纹 = DB63 55F8 6BD7 941D 8F4A  872F BD9B B688 44CF D46F
uid                  userb (teacher) <pang@163.com>
sub   2048R/F6E2F282 2019-02-19
 
usera使用公钥验证签名
]$ gpg --verify /tmp/a1.txt.sig (root 用户修改了 a1.txt 文件的话 提示签名损坏) 
gpg: 于 2019年02月19日 星期二 15时49分06秒 CST 创建的签名,使用 RSA,钥匙号 44CFD46F
gpg: 完好的签名,来自于“userb (teacher) <pang@163.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg:       没有证据表明这个签名属于它所声称的持有者。
主钥指纹: DB63 55F8 6BD7 941D 8F4A  872F BD9B B688 44CF D46F
 
]$ cat /tmp/a1.txt
 
如果内容被修改:
]$ gpg --verify /tmp/a1.txt.sig
gpg: 于 2019年02月19日 星期二 15时49分06秒 CST 创建的签名,使用 RSA,钥匙号 44CFD46F
gpg: 已损坏的签名,来自于“userb (teacher) <pang@163.com>”
 
二 AIDE入侵检测系统
2.1 安装提供检测程序的软件包 
]# yum -y install aide
 
2.2 编辑主配置文件
]# sed -i '99,312s/^/#/' /etc/aide.conf  注释默认的检测配置
]# vim /etc/aide.conf 
/root/    FIPSR    #定义检测的目录 和检测规则,写在99行的上方即可
:wq
 
]# aide --init  没有被入侵之前 生成初始信息数据库文件
AIDE, version 0.15.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
]# ls /var/lib/aide/aide.db.new.gz  查看数据库文件
 
]# cp /var/lib/aide/aide.db.new.gz /tmp/ 把存有初始信息的文件拷贝走
]# cd /var/lib/aide/
]# mv aide.db.new.gz aide.db.gz          修改文件名
]# ls /var/lib/aide/
aide.db.gz                               查看修改后的文件名
 
对被检测的/root 目录做操作 (任何操作都可以)
  585  lsattr /root/a.txt 
  586  chattr -a a.txt 
  587  rm -rf /root/a.txt*
  588  ls
  589  vim passwd 
  590  vim  b3.txt
  591  ls -l  mysql-5.7.17.tar 
  592  chown  mysql:mysql  mysql-5.7.17.tar 
 
]# aide --check
Summary:
  Total number of files:9848
  Added files:1
  Removed files:0
  Changed files:2
 
三 扫描与抓包
3.1 nmap  扫描
]# rpm -q nmap
]# man nmap
]# nmap -sP 172.40.52.0/24
]# nmap -sT 172.40.52.118
]# nmap -sT -p 8080 172.40.52.118
]# nmap -sT -n -p 80 172.40.52.118-200
]# nmap -A 192.168.4.50
]# nmap -A  192.168.4.50
]# nmap -sP 172.40.52.119,117,221
]# nmap -sU 192.168.4.51
]# nmap -sT -p 80,3306,53 192.168.4.51
]# nmap -sT -p 21-110,3306,27017,6379 192.168.4.51
 
4.2 tcpdump抓包
]# which tcpdump
/sbin/tcpdump
]# man tcpdump 
 
]# tcpdump  (默认只抓从eth0接口进出的数据包)
]# tcpdump -i br1  指定抓包接口(网卡名称)
]# tcpdump -i br1 -c 2 指定抓包个数
]# tcpdump -i br1 -c 2 -A  以可阅读方式显示抓包信息
]# tcpdump -i br1 -c 2 -A -w /tmp/one.cap 存储到文件里
]# ls /tmp/one.cap   
]# tcpdump -A -r /tmp/one.cap 读取文件内容
 
]# tcpdump -i br1 tcp port 80(网页服务)
]# tcpdump -i br1 tcp port 22(远程ssh)
]# tcpdump -i br1 tcp port 21
 
]# tcpdump -i br1 host 172.40.52.143 and tcp port 21
]# tcpdump -i br1 src host 172.40.52.143 and tcp port 21
(src 只抓访问我的,不抓我返回给他的,相反dst)
 
抓ftp服务的数据包(其他客户端访问51的ftp)
]# useradd student
]# echo abc123 | passwd --stdin  student
]# tcpdump -A -i eth0  tcp port 21 -w /tmp/a3.cap
 
]# tcpdump -A -r /tmp/a3.cap | grep -i student
]# tcpdump -A -r /tmp/a3.cap | grep -i abc123
]# tcpdump -A -r /tmp/a3.cap | grep -i 'user\|pass'
 
四. 192.168.4.51 做邮件服务器
收邮件服务 端口 110
     ]# yum -y install dovecot
     ]# systemctl start dovecot
     ]# netstat -utnlp | grep :110
发邮件服务 端口25
         ]# rpm -q postfix
         ]# systemctl status postfix
         ]# netstat -utnlp | grep :25
添加邮箱帐号
         ]#useradd jim
         ]# echo 123456 | passwd --stdin jim
         jim@localhost 邮箱帐号
            123456 密码
设置邮箱目录
        ]# vim /etc/postfix/main.cf
           419 home_mailbox = Maildir/
        :wq
        ]# systemctl restart postfix
        ]# cd /etc/dovecot/conf.d/
        ]# vim 10-auth.conf
            10 disable_plaintext_auth = no
        :wq
        ]# vim 10-mail.conf
            24 mail_location = maildir:~/Maildir
        :wq
        ]# systemctl restart dovecot
 
连接postfix服务发送邮件
    ]# rpm -q telnet
    ]# telnet localhost 25        连接postfix服务
       helo pc51                  定义主机名
        mail from:root@localhost  发件人
          rcpt to:jim@localhost   收件人
             data                 写邮件
                 i love you boy   邮件内容
                 i love you boy
                 i love you boy
             .                    提交邮件
          quit                    断开连接
 
连接dovecot服务收邮件
      [root@R51 ~]# telnet localhost 110  
      user jim     登陆用户名
      pass 123456  登陆密码
      list         查看邮件
      retr 1       显示编号是1的邮件内容
      quit   断开连接
 
]# tcpdump -A -i lo tcp port 110(上面操作,下面抓包)
]# tcpdump -w /tmp/mail3.cap -A -i lo tcp port 110
]# tcpdump -A -r /tmp/mail3.cap | grep -i user
]# tcpdump -A -r /tmp/mail3.cap | grep -i pass
 
安装wireshark
   ]# yum -y  install wireshark  wireshark-gnome
   ]# wireshark
上一篇:java对字符串进行加密和解密(以下是来自其他博主)


下一篇:使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和解密