一、selinux安全防护
DAC 自主访问控制 (rwx/acl 用户自己可以修改)
MAC 强制访问控制 (管理员对所有的资源负责)
TCSEC标准定义的 MLS 多级安全
SELinux *
1.1 selinux介绍
美国国家安全局主导开发,
一套强化Linux安全的MAC扩展模块
集成到Linux内核(2.6及以上)
操作系统提供可定制的策略、管理工具
主要软件包:
selinux-policy
selinux-policy-targeted、
libselinux-utils、libselinux-utils、
coreutils、policycoreutils
SELINUXTYPE=targeted
推荐,仅保护最常见/关键的网络服务,其他不限制
SELINUXTYPE=mls
提供多层次、全面的安全防护策略
需扩展软件包:
selinux-policy-mls、mcstrans、
policycoreutils-newrole
启用selinux
vim /etc/sysconfig/selinux
SELINUX=enforcing
SELINUXTYPE=targeted
:wq
reboot
[root@stu ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
[root@stu ~]# getenforce
Enforcing
[root@stu ~]#
————————————————————————————————————————————————
上面的总结
————————————————————————————————————————————————
selinux是基于linux内核版本在2.6及以上的一种内核安全防护扩展模块,由美国国家安全局研发出来的.
[root@room1pc01 html]# uname -r
2.6.32-573.el6.x86_64
MAC 强制访问控制(管理员管理资源)
DAC自主访问控制(用户管理资源)rwx/acl
[root@room1pc01 html]# rpm -qa |grep -i selinux(查看系统是否有selinux安全防护)
1.3 查看当前系统selinux状态
默认会有一个配置文件/etc/selinux/config,和链接/etc/sysconfig/selinux
6 SELINUX=permissive (一般都是设置成这种,宽松警告)
6 SELINUX=disabled
6 SELINUX=enforcing
10 SELINUXTYPE=strict
10 SELINUXTYPE=targeted(一般这种,仅保护最常见/关键的网络服务,其他不限制)
[root@stu ~]# getenforce
Permissive
[root@room1pc01 ~]# setenforce 1
[root@room1pc01 ~]# getenforce
Enforcing
[root@room1pc01 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: permissive
Policy version: 24
Policy from config file: targeted
查看安全上下文
文件 ll -Z 文件名 ll -Z /etc/passwd
目录 ll -dZ 目录名 ll -dZ /
进程 ps aux -Z | grep httpd
[root@room1pc01 ~]# ls -Zd /root
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root
[root@room1pc01 ~]# ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@room1pc01 ~]# ls -Zd /tmp
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
[root@room1pc01 ~]# ls -Zd /var/ftp/
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/
用户:角色:访问类型:选项...
system_u:object_r:root_t:s0
一般操作规律
移动的文件,原有的上下文属性不变
复制的文件,自动继承目标位置的上下文
创建继承上级目录属性
++创建继承上级目录属性++
[root@room1pc01 ~]# mkdir my
[root@room1pc01 ~]# touch 1.txt
[root@room1pc01 ~]# ll -Zd 1.txt
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 1.txt
[root@room1pc01 ~]# ll -Zd /root/my
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 /root/my
[root@room1pc01 ~]# ll -Zd /root/
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root/
+++复制的文件,自动继承目标位置的上下文 (保持属性拷贝也没用 还是会继承目标的属性)+++
[root@room1pc01 ~]# cp /root/1.txt /tmp/
[root@room1pc01 ~]# cp -r /root/my /tmp/
[root@room1pc01 ~]# ll -Zd /tmp
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
[root@room1pc01 ~]# ll -Zd /tmp/1.txt
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/1.txt
[root@room1pc01 ~]# ll -Zd /tmp/my
drwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/my
[root@room1pc01 ~]# rm -fr /tmp/1.txt
[root@room1pc01 ~]# cp -p /root/1.txt /tmp/
[root@room1pc01 ~]# ll -Zd /tmp/1.txt
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/1.txt
+++移动的文件目录,保持原来的上下文属性不变+++
[root@room1pc01 ~]# rm -fr /tmp/1.txt
[root@room1pc01 ~]# rm -fr /tmp/my
[root@room1pc01 ~]# mv /root/1.txt /tmp/
[root@room1pc01 ~]# mv /root/my /tmp/
[root@room1pc01 ~]# ll -Zd /tmp/1.txt
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /tmp/1.txt
[root@room1pc01 ~]# ll -Zd /tmp/my
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 /tmp/my
[root@room1pc01 ~]# ll -Zd /tmp
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
————————————
[root@room1pc01 ~]# ll -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 file.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.html
[root@room1pc01 ~]# firefox httpd:192.168.4.254:/test.html (能打开)
[root@room1pc01 ~]# firefox httpd:192.168.4.254:/file.html (不能打开) 不是网页内容属性文件
修改文件的安全上下文可以用chcon和restorecon 效果一样。
chcon 修改工具
[root@room1pc01 ~]# chcon -t httpd_sys_content_t /var/www/html/file.html
[root@room1pc01 ~]# ll -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 1.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.txt
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.php
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.php
restorecon 恢复工具
[root@room1pc01 ~]# ll -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 1.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.txt
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.php
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 pp.html
[root@room1pc01 ~]# cd /var/www/html/
[root@room1pc01 html]# restorecon pp.html
[root@room1pc01 html]# ll -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 pp.html
————————————————————————
修改文件的安全上下文
chcon 工具
-t,指定访问类型
-u、-r,分别用来指定用户、角色
-R,递归修改
chcon -t 访问类型 文件名 #修改某个文件的安全上下文
chcon -R -t 访问类型 目录名 #批量修改安全上下文 (把目录下文件的都修改了上下文)
chcon -t httpd_sys_content_t /var/www/html/c2.html
恢复文件的安全上下文
restorecon 工具 恢复为所在位置的默认上下文属性
-R,递归修改
restorecon d.html #把这个文件恢复成当前父目录的上下文属性
restorecon 目录名/d.html
————————————————————————————————————————————————
1.4 SELinux布尔值 (功能开关)
getsebool -a #列出所有的bool值
修改布尔值
setsebool -P 选项 on #启用
setsebool -P 选项 off #关闭
setsebool -P 选项=1 #启用
setsebool -P 选项=0 #关闭
setsebool -P allow_ftpd_anon_write on
setsebool -P allow_ftpd_full_access on
安装selinux排错工具
[root@stu ftp]# yum -y install setroubleshoot-server
setroubleshoot-plugins setroubleshoot
[root@stu ftp]# rpm -qa | grep setroubleshoot
setroubleshoot-server-3.0.47-9.1.el6.x86_64
setroubleshoot-3.0.47-9.1.el6.x86_64
setroubleshoot-plugins-3.0.40-2.el6.noarch
[root@stu ftp]#
[root@stu ftp]#reboot
调出图形工具抓取报错信息
应用程序->系统工具->selinx .....
sealter -b
查看日志 执行命令,获取错误信息
tail -f /var/log/message
Jun 29 09:51:57 room3pc31 setroubleshoot: SELinux is
preventing /usr/sbin/vsftpd from write access on the
directory pubdir. For complete SELinux messages. run
sealert -l 933b8efd-0743-48c3-b7b0-b95233747cbc
[root@stu ftp]#sealert -l 933b8efd-0743-48c3-b7b0-
b95233747cbc
+++++++++++++++++++++++++++++++++++
二、加密、解密
2.1 为什么要给数据加密?(机密性 完整性)
(发送方)加密 明文 -> 密文 (加密就是把明文加密成密问)
(接收方)解密 密文 -> 明文 (解密就是把密问解密成明文)
加密算法 明文 变成 密文的 转换 规则
算法可以是 一种计算规则 、 指令 或 代码 (加密算法:可以是指令也可以是代码)
2.2 加密方式
对称加密: 加密/解密用同一个密钥 (对称:加解密使用相同的算法) 简单不安全
算法有:DES,Data Encryption Standard
AES,Advanced Encryption Standard
非对称加密 加密/解密用不同的密钥(密钥对) (非对称加密:加解密使用不同算法 有密钥对)
公钥和私钥
加 解
算法:RSA,Rivest Shamirh Adleman
DSA,Digital Signature Algorithm
加解密工具:
gpg(开源的软件包 gnupg这个包提供) 对称加密解密 非对称加解密 数字签名
[root@stu ~]# which gpg
/usr/bin/gpg
[root@stu ~]# rpm -qf /usr/bin/gpg
gnupg2-2.0.14-8.el6.x86_64
[root@stu ~]# gpg --help 查帮助(支持的算法 选项)
————————
1.对称加密解密 (lucy和tom,都是真机上用户密码都是123, 切到lucy和tom时候只能ssh -X lucy@192.168.4.254 不能su - tom,因为环境不对。)
————————
加密(发送方)lucy:
解密(接受方)tom:
[root@room1pc01 ~]# ssh -X lucy@"localhost"
lucy@localhost's password:
/usr/bin/xauth: creating new authority file /home/lucy/.Xauthority
[lucy@room1pc01 ~]$
[lucy@room1pc01 ~]$ pwd
/home/lucy
[lucy@room1pc01 ~]$ echo 123456 >lucy.txt
[lucy@room1pc01 ~]$ ls
lucy.txt
[lucy@room1pc01 ~]$ gpg -c lucy.txt
gpg: 已创建目录‘/home/lucy/.gnupg’
gpg: 新的配置文件‘/home/lucy/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/lucy/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/lucy/.gnupg/pubring.gpg’已建立
can't connect to `/home/lucy/.gnupg/S.gpg-agent': 没有那个文件或目录
gpg-agent[11856]: 已创建目录‘/home/lucy/.gnupg/private-keys-v1.d’
[lucy@room1pc01 ~]$ ls
lucy.txt lucy.txt.gpg
[lucy@room1pc01 ~]$ cp lucy.txt.gpg /tmp/
[root@room1pc01 桌面]# ssh -X tom@192.168.4.254
tom@192.168.4.254's password:
/usr/bin/xauth: creating new authority file /home/tom/.Xauthority
[tom@room1pc01 ~]$
[tom@room1pc01 ~]$ pwd
/home/tom
[tom@room1pc01 ~]$ cd /tmp
[tom@room1pc01 tmp]$ ls
1.txt orbit-gdm
da orbit-root
evince-9817 pulse-2UwZ1k19YbcT
gedit.root.3964521678 pulse-5sTJqfwYxhm6
keyring-rOpg63 user.txt
keyring-vP2cP1 virtual-root.lwcQAF
lu VMwareDnD
lucy.txt.gpg vmware-root
my wireshark_2_interfaces_20170226094957_f2G8IO
myvm.xml yum_save_tx-2017-03-07-11-11_INSzh.yumtx
[tom@room1pc01 tmp]$ gpg -d lucy.txt.gpg
gpg: 已创建目录‘/home/tom/.gnupg’
gpg: 新的配置文件‘/home/tom/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/tom/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/tom/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/home/tom/.gnupg/pubring.gpg’已建立
gpg: 3DES 加密过的数据
can't connect to `/home/tom/.gnupg/S.gpg-agent': 没有那个文件或目录
gpg-agent[11903]: 已创建目录‘/home/tom/.gnupg/private-keys-v1.d’
gpg: 以 1 个密码加密
123456
gpg: 警告:报文未受到完整的保护
————————
2.非对称加解密:【(lucy和tom,都是真机上用户密码都是123, 切到lucy和tom时候只能ssh -X lucy@192.168.4.254 不能su - tom,因为环境不对。)要图形界面】
————————
1)lucy
-传建密钥对
-导出公钥
2)tom
导入lucy的公钥
使用公钥加密发送文件
lucy使用私钥解密
实验:
[lucy@room1pc01 ~]$ rm -fr .gnupg/ (有就一般都先删掉 等创建公钥时会自动生成)
[lucy@room1pc01 ~]$ gpg --gen-key
gpg: 钥匙环‘/home/lucy/.gnupg/secring.gpg’已建立
请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择?
.....(一路默认 名字那里做个区分写真实的,后面还会用到)
.....
真实姓名:panglj
电子邮件地址:plj
注释:O
您选定了这个用户标识:
“panglj (O) <plj@163>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
您需要一个密码来保护您的私钥。(输入密码,记住这个密码)等它生成
.................
密钥指纹 = 87F8 DE00 93C6 3D6A 6AF8 1B16 94CD FC50 73FA C552
uid panglj (O) <plj@163>
sub 2048R/86A8B557 2017-03-07
公钥和私钥已经生成并经签名。(生成)
[lucy@room1pc01 .gnupg]$ pwd
/home/lucy/.gnupg
[lucy@room1pc01 .gnupg]$ ls
gpg.conf pubring.gpg random_seed trustdb.gpg
private-keys-v1.d pubring.gpg~ secring.gpg
[lucy@room1pc01 .gnupg]$ gpg -a --export >/tmp/lucy.pub (把公钥拷贝到公共目录。让tom拷贝)
[tom@room1pc01 ~]$ rm -fr .gnupg/ (tom用户先把自己的这个目录删了,把lucy公钥拷贝到自己加下会自动生成该目录)
[tom@room1pc01 ~]$ gpg --import /tmp/lucy.pub (拷贝lucy公钥)
.............
[tom@room1pc01 ~]$ ls -a
. .bash_history .bash_profile .gnome2 .mozilla
.. .bash_logout .bashrc .gnupg .Xauthority
[tom@room1pc01 ~]$ cd .gnupg/
[tom@room1pc01 .gnupg]$ ls
gpg.conf pubring.gpg pubring.gpg~ secring.gpg trustdb.gpg
[tom@room1pc01 .gnupg]$ echo "1234567890" >tom.txt (tom写一个文件)
[tom@room1pc01 .gnupg]$ gpg -e -r panglj tom.txt 把该文件加密(用户名是做密钥对时的留的用户名)
........................(输入yes 按提示)
[tom@room1pc01 .gnupg]$ ls
gpg.conf pubring.gpg~ secring.gpg tom.txt.gpg
pubring.gpg random_seed tom.txt trustdb.gpg
[tom@room1pc01 .gnupg]$ cp tom.txt.gpg /tmp/ (将加密好的复制到公共目录下,让lucy读取)
[lucy@room1pc01 ~]$ gpg -d /tmp/tom.txt.gpg (在页面上显示解密后的内容,需要输做密钥时设的密码)
[lucy@room1pc01 ~]$ gpg -d /tmp/tom.txt.gpg >/home/lucy/t.txt (把解密后的内容定向到一个文件中再查看)
[lucy@room1pc01 ~]$ ls
lucy.txt lucy.txt.gpg t.txt
[lucy@room1pc01 ~]$ cat t.txt
1234567890
3.数字签名(私钥签名,公钥验证签名)
lucy tom
lucy:
使用私钥对文件做数字签名
把签名文件和源文件发送给对方
tom
使用公钥验证签名文件
验证文件是否是声称持有者发送过来的
[lucy@room1pc01 ~]$ echo "1212" >lu.txt
[lucy@room1pc01 ~]$ gpg -b lu.txt (输入之前设置的密码做成签名)
您需要输入密码,才能解开这个用户的私钥:“panglj (O) <plj@163>”
2048 位的 RSA 密钥,钥匙号 73FAC552,建立于 2017-03-07
can't connect to `/home/lucy/.gnupg/S.gpg-agent': 没有那个文件或目录
[lucy@room1pc01 ~]$ ls
lucy.txt lucy.txt.gpg lu.txt lu.txt.sig t.txt
[lucy@room1pc01 ~]$ cp lu.txt /tmp/ (把文件和文件签名放到公共目录下)
[lucy@room1pc01 ~]$ cp lu.txt.sig /tmp
[tom@room1pc01 ~]$ cat /tmp/lu.txt (tom可以看到文件内容和从文件签名看是否有损坏,内容是否有更改)
1212
[tom@room1pc01 ~]$ gpg --verify /tmp/lu.txt.sig
gpg: 于 2017年03月07日 星期二 15时29分17秒 CST 创建的签名,使用 RSA,钥匙号 73FAC552
gpg: 完好的签名,来自于“panglj (O) <plj@163>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 87F8 DE00 93C6 3D6A 6AF8 1B16 94CD FC50 73FA C552
————————————————————————————————————————————
——————————————————————————————————————
使用md5sum校验工具验证文件完整性 特点:当文件内容没变时md5生成的校验值一值保持同样长度不变,否则变化。(md5和gpg数字签名相比只能验证文件内容是否有更改,不能验证是谁发的)
[root@room1pc01 html]# cat a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@room1pc01 html]# md5sum a.txt
2acf01edaaee1079d83086a3ed3305a1 a.txt
[root@room1pc01 html]# md5sum a.txt
2acf01edaaee1079d83086a3ed3305a1 a.txt
[root@room1pc01 html]# echo "123" >>a.txt
[root@room1pc01 html]# md5sum a.txt
4795332faee87af3d9685ac07b05bc56 a.txt
[root@room1pc01 html]# echo abc
abc
[root@room1pc01 html]# echo abc |md5sum
0bee89b07a248e27c83fc3d5951213c1 -
[root@room1pc01 html]# echo abc |md5sum
0bee89b07a248e27c83fc3d5951213c1 -
[root@room1pc01 html]# echo abc |md5sum
0bee89b07a248e27c83fc3d5951213c1 -
[root@room1pc01 html]# echo abcd |md5sum
f5ac8127b3b6b85cdc13f237c6005d80 -
保护信息的完整性
信息摘要:基于输入的信息生成长度较短、位数固定的散列值
Hash散列技术,用于信息摘要
MD5,Message Digest Algorithm 5
SHA,Secure Hash Algorithm
sha1sum a.txt
md5sum a.txt
gnupg介绍
GnuPG,GNU Privacy Guard
最流行的数据加密、数字签名工具软件
[root@stu ~]# which gpg
/usr/bin/gpg
[root@stu ~]# rpm -qf /usr/bin/gpg
gnupg2-2.0.14-8.el6.x86_64
[root@stu ~]#
gpg --help 查帮助(支持的算法 选项)
对称加/解密过程 (加/解密 使用相同密钥)
加密
head -2 /etc/passwd > a.txt
gpg -c a.txt (提示输入密码)
ls a.txt.gpg 加密后的文件
rm -rf a.txt
解密
gpg -d a.txt.gpg > /tmp/user.txt (提示输入密码)
cat /tmp/user.txt
++++++++++++++++++++++++++++++
非对称加/解密过程 (公钥加密/私钥解密)
userB 要 userA 使用非对称方式加密传输数据
1 userB 生成密钥对
gpg --gen-key (生成私钥时要求输入相关信息)
ls ~/.gnupg/
dd if=/dev/zero of=/dev/null bs=1M count=500
2 userB 导出自己的公钥
gpg -a --export > /tmp/UserB.pub
suerB 把 公钥 给 userA (不同机器间传输数据)
3 userA 导入userB的公钥
gpg --import /tmp/UserB.pub
ls ~/.gnupg/
4 userA 使用公钥加密文件
echo 12344555 > /tmp/clear.txt
gpg -e -r 真实姓名 /tmp/clear.txt
panglj
userA 把加密文件 传给 userB (不同机器间传输数据)
5 userB 使用自己的私钥解密
gpg -d /tmp/clear.txt.gpg > dclear.txt
cat dclear.txt
+++++++++++++++++++++++++++++++++++
GPG软件签名与验证
软件签名与验证过程
软件官方以私钥对软件包执行数字签名
用户下载软件包、软件官方的公钥
以官方公钥验证软件包签名,确保软件完整性
gpg -b 生成一份分离的签名
gpg --verify 验证签名
gpg --fingerprint 列出密钥和指纹
userB
head -3 /etc/passwd > userb.txt
gpg -b userb.txt
ls userb.txt.sig (签名文件)
mv userb.txt userb.txt.sig /tmp/
userA
cd /tmp/
gpg --verify userb.txt.sig
[userA@room3pc31 tmp]$ gpg --verify user2.txt.sig
gpg: 于 2016年06月29日 星期三 14时59分43秒 PHT 创建的
签名,使用 RSA,钥匙号 A6D34AA0
gpg: 完好的签名,来自于“panglj (teacher)
<plj@tedu.cn>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 87AB 6994 3F35 E6EA 4EA7 502B CCA6
5CA3 A6D3 4AA0
[userA@room3pc31 tmp]$
echo aaaa >> user2.txt
[userA@room3pc31 tmp]$ gpg --verify user2.txt.sig
gpg: 于 2016年06月29日 星期三 14时59分43秒 PHT 创建的
签名,使用 RSA,钥匙号 A6D34AA0
gpg: 已损坏的签名,来自于“panglj (teacher)
<plj@tedu.cn>”
[userA@room3pc31 tmp]$
[userB@room3pc31 ~]$ gpg --fingerprint
/home/userB/.gnupg/pubring.gpg
------------------------------
pub 2048R/A6D34AA0 2016-06-29
密钥指纹 = 87AB 6994 3F35 E6EA 4EA7 502B CCA6
5CA3 A6D3 4AA0
uid panglj (teacher) <plj@tedu.cn>
sub 2048R/6CD5F831 2016-06-29
[userB@room3pc31 ~]$
主钥指纹: 87AB 6994 3F35 E6EA 4EA7 502B CCA6
5CA3 A6D3 4AA0
密钥指纹 = 87AB 6994 3F35 E6EA 4EA7 502B CCA6
5CA3 A6D3 4AA0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
搭建CA服务器
1 CA 介绍 (CA,Certificate Authority)
数字证书授权中心
被通信双方信任的、独立的第三方机构
负责证书颁发、验证、撤销等管理工作
国内常见的CA机构
中国金融认证中心(CFCA)
中国电信安全认证中心(CTCA)
北京数字证书认证中心(BJCA)
CA用来给服务器颁发数字证书
一般也可自己搭建一个私有CA服务器
openssl 加密工具
#openssl enc -des3 -e -in f1.txt -out f1.txt.enc 加密
# openssl enc -des3 -d -in f1.txt.enc -out f1.txt 解密
2 CA做什么(发数字证书的机构)
PKI体系的基本组成
权威认证机构(CA)
数字证书库、密钥备份及恢复系统
证书作废系统、应用接口
对称加密
enc 算法 -e -in 输入文件 -out 输出文件
enc 算法 -d -in 输入文件 -out 输出文件
[root@svr5 ~]# openssl enc -des3 -e -in f1.txt -out
f1.txt.enc
enter des-ede3-cbc encryption password:
//设置口令
Verifying - enter des-ede3-cbc encryption password:
[root@svr5 ~]# openssl enc -des3 -d -in f1.txt.enc -
out f1.txt
enter des-ede3-cbc decryption password:
————————————————————————————————————————
————————————————————————————————————————
CA机构(CA服务器)是用来给公司服务器颁发数字证书的。有权威的也有私有自己搭建的。
使用IP地址是X.X.X.88主机做CA服务器
整体部署思路
第一步:配置CA签署环境(给客户端发证的默认配置)
/etc/pki/tls/openssl.cnf
第二步:为CA服务器生成私钥(创建密钥对)
第三步:为CA服务器创建根证书 (生成自己的根证书文件)
第四步:发布根证书文件(把自己的根证书共享给客户端)
第五步:客户端下载根证书
[root@svr7 CA]# man openssl
++++++++++++++++++++++++++++++++
1.部署签发环境:(做一个私有CA服务器用,来给别的公司服务器发数字证书)192.168.4.99
[root@svr7 ~]# ls /etc/pki/tls/openssl.cnf
/etc/pki/tls/openssl.cnf
[root@svr7 ~]# rpm -qf /etc/pki/tls/openssl.cnf
openssl-1.0.1e-42.el6.x86_64
[root@svr7 ~]# cd /etc/pki/CA/
[root@svr7 CA]# touch index.txt (证书的内容保存文件)
[root@svr7 CA]# ls
certs crl index.txt newcerts private
[root@svr7 CA]# echo 01 > serial
[root@svr7 CA]# cat serial (创建一个文件用来记录证书的个数,做第二个证书的时候会自动加)
01
[root@svr7 CA]# ls
certs crl index.txt newcerts private serial
[ CA_default ]
41
42 dir = /etc/pki/CA # Where everything is kept
43 certs = $dir/certs # Where the issued certs are kept
44 crl_dir = $dir/crl # Where the issued crl are kept
45 database = $dir/index.txt # database index file.
48 new_certs_dir = $dir/newcerts # default place for new certs.
50 certificate = $dir/my-ca.crt # The CA certificate
51 serial = $dir/serial # The current serial number
52 crlnumber = $dir/crlnumber # the current crl number
54 crl = $dir/crl.pem # The current CRL
55 private_key = $dir/private/my-ca.key # The private key
56 RANDFILE = $dir/private/.rand # pri
130 countryName_default = CN
135 stateOrProvinceName_default = beijing
141 0.organizationName_default = tarena
148 organizationalUnitName_default = ope
2.创建私钥文件:/etc/pki/CA/private/my-ca.key
[root@svr7 private]# pwd
/etc/pki/CA/private
[root@svr7 private]# openssl genrsa -des3 2048 >my-ca.key (创建私钥,并导入到私钥文件,记住密码)
Generating RSA private key, 2048 bit long modulus
......................+++
..+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
3.使用私钥创建根证书文件
[root@svr7 private]# cd /etc/pki/CA
[root@svr7 CA]# openssl req -new -x509 -key /etc/pki/CA/private/my-ca.key -days 365 > my-ca.crt (使用私钥创建根证书文件 -x509格式)
[root@svr7 CA]# ls
certs crl index.txt my-ca.crt newcerts private serial
[root@svr7 CA]# cat my-ca.crt (证书生成)
-----BEGIN CERTIFICATE-----
MIID1zCCAr+gAwIBAgIJALAPCx/Wdm/lMA0GCSqGSIb3DQEBBQUAMIGBMQswCQYD
VQQGEwJDTjEQMA4GA1UECAwHYmVpa
-----END CERTIFICATE-----
4.把证书文件共享给客户端 (就是把CA私有机构给服务器做的根证书发给该服务 但这里CA服务器和认证的一台,效果是一样的把根证书文件共享到服务器的目录下)
[root@svr7 CA]# yum -y install httpd
[root@svr7 CA]# mkdir /var/www/html/ca
[root@svr7 CA]# cp my-ca.crt /var/www/html/ca/
[root@svr7 CA]# ls /var/www/html/ca/my-ca.crt
/var/www/html/ca/my-ca.crt
[root@svr7 CA]# ls /var/www/html/ca/my-ca.crt -l
-rw-r--r--. 1 root root 1391 3月 6 23:37 /var/www/html/ca/my-ca.crt
[root@svr7 CA]# service httpd start
[root@svr7 CA]# chkconfig httpd on
5.客户端下载根证书
[tom@room1pc01 ~]$ ping 192.168.4.99
[tom@room1pc01 ~]$ firefox http://192.168.4.99/ca
在打开的页面中 下载证书。
——————————————————————————————————————————————————————————————————————
___________________________________________________________________________________________________________________________________________________________
一 配置网站HTTP SSL (192.168.4.100)
网站服务器:
1.运行网站服务
# yum -y install httpd
# service httpd restart
# chkconfig httpd on
2.创建私钥文件
# cd /etc/pki/tls/private/
# openssl genrsa 2048 > www.key (生成私钥,什么服务私钥就起什么名好记,记住密码) 1生成密码字符最好是1024的整数倍
# ls
www.key
# cat www.key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApgz2xBeEs151p3dMGmj13pbicS5JGd1cMWiMryUjaRgJPRWF
..
3.创建证书请求文件
#cd /etc/pki/tls/private/
# openssl req -new -key www.key > /root/www.csr
.........
Common Name (eg, your name or your server's hostname) []:stu.tedu.cn (填的一定是公司服务器主机名 /etc/sysconfig/network 所对应的)
........
4.把证书请求文件上传给CA服务器
[root@100 private]# scp /root/www.csr root@192.168.4.99:/root/
二.CA服务器:(192.168.4.99)
签收数据证书
[root@svr7 ~]# ls /root/www.csr
/root/www.csr
[root@svr7 ~]# cd /etc/pki/CA/
[root@svr7 CA]# ls
certs crl index.txt my-ca.crt newcerts private serial
[root@svr7 CA]# cat index.txt
[root@svr7 CA]# cat serial
01
[root@svr7 CA]# cd certs/
[root@svr7 certs]# ls
[root@svr7 certs]# openssl ca -in /root/www.csr > www.crt (输入密码 按y)
[root@svr7 CA]# cat serial
02
[root@svr7 CA]# cat index.txt
V 180306163836Z 01 unknown /C=CN/ST=beijing/O=tarena/OU=ope
[root@svr7 certs]# ls
www.csr
[root@svr7 certs]# cat www.crt
Certificate:
..............
三.把证书下发给web服务器(192.168.4.99)
[root@svr7 certs]# scp www.crt root@192.168.4.100:/root/
四.给网站加密:(web服务器192.168.4.100)
#netstat -utnalp | grep :443(此时没有443端口)
#rpm -q mod_ssl
#yum -y install mod_ssl
#vim /etc/httpd/conf.d/ssl.conf
18 Listen 443
<VirtualHost _default _:443>
SSLEngine on
105 SSLCertificateFile /etc/pki/tls/certs/www.crt
112 SSLCertificateKeyFile /etc/pki/tls/private/www.key
</VirtualHost>
:wq
#mv /root/www.crt /etc/pki/tls/certs/
# service httpd stop
# service httpd stop
# service httpd start
#netstat -utnalp | grep :443 (能够查看到443端口)
#netstat -utnalp | grep :80 (能够查看到80端口)
# echo "123" >/var/www/html/test.html
五(客户机测试192.168.4.254)
[root@room1pc01 桌面]# vim /etc/hosts
192.168.4.100 stu.tedu.cn stud
[root@room1pc01 桌面]# firefox http://stu.tedu.cn/test.html (能打开)
[root@room1pc01 桌面]# firefox http://192.168.4.100/test.html (能打开)
[root@room1pc01 桌面]# firefox https://stu.tedu.cn/test.html (能打开,让先下证书)
(生产工作中,客户访问web加密网站,下载根证书在CA下或在本地web下,是程序员在网页代码中写的,运维只需把服务搭出来。就像客户在淘宝支付时,需要下一个认证/插件,在哪个位置下一样,这是程序员指定的)
六.客户机测试 (192.168.4.254)
1 从CA下载根证书 (http://CA-ip/ca)
[root@room1pc01 桌面]#firefox http://192.168.4.99/ca
2访问
[root@room1pc01 桌面]# firefox https://stu.tedu.cn/test.html(不用再在这下载证书,直接打开,打开的是https)
[root@room1pc01 桌面]# firefox http://stu.tedu.cn/test.html (也直接打开打开的是http)
{80 http://web-ip/test.html
443 https://web-ip/test.html}
七.地址重写:(web网站192.168.4.100)
配置网站服务器 把接收到的访问80端口的请求自动重定向到443端口 (http---->https)
vim /etc/httpd/conf/httpd.conf (也可在 /etc/httpd/conf/ssl.conf写,都一样)
.....
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
:wq
/etc/init.d/httpd restart
八.客户机测试 (192.168.4.254)
[root@room1pc01 桌面]# firefox https://stu.tedu.cn/test.html(打开的是https)
[root@room1pc01 桌面]# firefox http://stu.tedu.cn/test.html (打开的是http)
——————————————————————————————————————————————————————————————————————————————
2.邮件服务TLS/SSL (192.168.4.101)
邮件服务器的配置
2.1运行收邮件的服务 service dovecot start
2.2运行发邮件的服务 service postfix start
2.3测发能否收发本地域的邮件 localhost
jim@localhost 发件人
tom@localhost 收件人
2.4传建私钥文件 mail.key
#openssl genrsa 2048 > mail.key
2.5创建证书请求文件 mail.csr
2.6把证书请求文件上传给CA服务器
CA服务器的配置
1 签发数字证书 mail.crt
2 把证书下发给mail服务器
3 设置邮件服务器在运行时加载私钥文件和数字文件
3.1配置收邮件服务 110 143 995 993
pop3 imap pop3s imaps
3.2配置发邮件服务 stmp 25
3.3重启服务
4配置客户端
在客户端软件里配置连接邮件服务时,选择使用的端口号
+++++++++++++
实验:
[root@101 conf.d]# yum -y install postfix dovecot
[root@101 conf.d]# rpm -q postfix
postfix-2.6.6-6.el6_5.x86_64
[root@101 conf.d]# rpm -q dovecot
dovecot-2.0.9-19.el6.x86_64
[root@101 ~]# vim /etc/postfix/main.cf
419 home_mailbox = Maildir/
[root@101 conf.d]# pwd
/etc/dovecot/conf.d
[root@101 conf.d]# vim 10-mail.conf
24 mail_location = maildir:~/Maildir
[root@101 ~]# service postfix start
[root@101 ~]# service dovecot start
[root@101 ~]# netstat -anptu |grep :25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1765/master
tcp 0 0 ::1:25 :::* LISTEN 1765/master
[root@101 ~]# netstat -anptu |grep dovecot
tcp 0 0 0.0.0.0:993 imaps(加密后) 0.0.0.0:* LISTEN 2872/dovecot
tcp 0 0 0.0.0.0:995 pop3s 0.0.0.0:* LISTEN 2872/dovecot
tcp 0 0 0.0.0.0:110 (pop3) 0.0.0.0:* LISTEN 2872/dovecot
tcp 0 0 0.0.0.0:143 (imap) 0.0.0.0:* LISTEN 2872/dovecot
tcp 0 0 :::993 :::* LISTEN 2872/dovecot
tcp 0 0 :::995 :::* LISTEN 2872/dovecot
tcp 0 0 :::110 :::* LISTEN 2872/dovecot
tcp 0 0 :::143 :::* LISTEN 2872/dovecot
[root@101 ~]# cd /etc/dovecot/
[root@101 dovecot]# cd conf.d/
[root@101 conf.d]# vim 10-mail.conf
[root@101 conf.d]# vim 10-ssl.conf
[root@101 conf.d]# sed -n '12,13p' 10-ssl.conf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
[root@101 conf.d]# ls /etc/pki/dovecot/certs/
dovecot.pem
[root@101 conf.d]# ls /etc/pki/dovecot/private/
dovecot.pem
[root@101 conf.d]# useradd tom
[root@101 conf.d]# useradd jim
[root@101 conf.d]# echo 123 |passwd --stdin tom
更改用户 tom 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@101 conf.d]# echo 123 |passwd --stdin jim
更改用户 jim 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@101 conf.d]# yum -y install telnet (下载连接邮件服务器工具)
[root@101 conf.d]# telnet localhost 25 (发邮件 jim)
Trying ::1...
Connected to localhost.
[root@101 ~]# telnet localhost 110 (接邮件 tom)
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user tom
+OK
pass 123
+OK Logged in.
list
+OK 0 messages:
.
quit
[root@101 ~]# openssl genrsa 2048 > mail.key (传建私钥文件)
[root@101 ~]# openssl req -new -key mail.key > mail.csr (生成证书请求文件)
[root@svr7 ~]# cd /etc/pki/CA/
[root@svr7 CA]# cat serial
02
[root@svr7 certs]# openssl ca -in /root/mail.csr > mail.crt
[root@svr7 CA]# cat index.txt
V 180306163836Z 01 unknown /C=CN/ST=beijing/O=tarena/OU=ope/CN=stu.tedu.cn/emailAddress=jing@tedu.cn
V 180307190945Z 02 unknown /C=CN/ST=beijing/O=tarena/OU=ope/CN=stu.tedu.cn/emailAddress=yaya@tedu.cn
[root@svr7 CA]# cat serial
03
[root@svr7 certs]# scp mail.crt root@192.168.4.101:/root/ (把证书请求文件上传给CA服务器)
[root@101 ~]# vim /etc/dovecot/conf.d/10-ssl.conf
12 ssl_cert = </etc/pki/dovecot/certs/mail.crt
13 ssl_key = </etc/pki/dovecot/private/mail.key
[root@101 ~]# sed -n '12,13p' /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/dovecot/certs/mail.crt
ssl_key = </etc/pki/dovecot/private/mail.key
[root@101 ~]# cp /root/mail.key /etc/pki/dovecot/private/
[root@101 ~]# cp /root/mail.crt /etc/pki/dovecot/certs
[root@101 ~]# service dovecot restart
停止 Dovecot Imap: [确定]
正在启动 Dovecot Imap: [确定]
[root@101 ~]# netstat -anptu |grep dovecot
[root@101 ~]# postconf (查看帮助,配置项怎么写) 发信
[root@101 ~]# vim /etc/postfix/main.cf
675 readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
676
677 smtpd_use_tls = yes
678 smtpd_tls_key_file = /etc/pki/tls/private/mail.key
679 smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt
————————————————————————————————————————————————————
3扫描与抓包
3.1端口扫描(nmap)
3.2抓包(tcpdump)
3.3协议分析工具(wireshark)
扫描方式:scan主动探测 sniff被动监听 capture 数据包抓包
1.常用格式:(扫描)
[root@room1pc01 桌面]# yum -y install nmap
[root@room1pc01 桌面]# which nmap
/usr/bin/nmap
[root@room1pc01 桌面]# man nmap
[root@room1pc01 桌面]# nmap -sP 172.40.55.244
Starting Nmap 5.51 ( http://nmap.org ) at 2017-03-08 14:22 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn (检查这台主机是否在现,没有)
Nmap done: 1 IP address (0 hosts up) scanned in 0.44 seconds
[root@room1pc01 桌面]# nmap -sP 172.40.55.127 (检查这台主机是否在现)
Starting Nmap 5.51 ( http://nmap.org ) at 2017-03-08 14:19 CST
Nmap scan report for 172.40.55.127
Host is up (0.00019s latency). (检查这台主机是否在现)
MAC Address: FC:AA:14:CD:F5:AC (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
[root@room1pc01 桌面]# ping 172.40.55.127
PING 172.40.55.127 (172.40.55.127) 56(84) bytes of data.
64 bytes from 172.40.55.127: icmp_seq=1 ttl=64 time=0.928 ms
^C
--- 172.40.55.127 ping statistics ---
[root@room1pc01 桌面]# nmap -A 172.40.55.127 (整台扫描)
[root@room1pc01 桌面]# namp -sT -p 80 172.40.55.127 172.40.55.104
[root@room1pc01 桌面]# nmap -sT -p 20-80,443 172.40.55.127 172.40.55.104
[root@room1pc01 桌面]# nmap -sT -p 20-80,443 172.40.55.104-110
[root@room1pc01 桌面]# nmap -sU -p 20-80,443 172.40.55.0/24
[root@room1pc01 桌面]# nmap -sP 172.40.55.0/24
[root@room1pc01 桌面]# nmap -sP -iL ip.txt (ip.txt 中先写入ip)
[root@room1pc01 桌面]# nmap -sT -p 110 -iL ip.txt
[root@room1pc01 桌面]# nmap -sP 172.40.55.100-130 --exclude 172.40.55.103-105
[root@room1pc01 桌面]# nmap -sT -p 80,110 172.40.55.100-130 --exclude 172.40.55.103-105
[root@room1pc01 桌面]# nmap -sT -p 80,110 172.40.55.100-130 --excludefile ip.txt (不扫描这个文件中的)
[root@room1pc01 桌面]# nmap -sT -p 80 172.40.55.119 |grep open
80/tcp open http
ip地址 172.40.55.$ip
重复执行的操作:
vim httpd.sh
#!/bin/bash
while :
do
x=0
for ip in 103 105 107 127 110 102
do
nmap -sT -p 80 172.40.55.$ip | grep -q open
if [ $? -eq 0 ];then
echo "172.40.55.$ip web is ok"
else
echo "172.40.55.$ip web is stop"
echo "172.40.55.$ip >> /tmp/ipdown.txt
let x++
fi
done
mail -s "weberror" root < /tmp/ipdown.txt
echo "web down host is $x"
sleep 600
done
chmod +x httpd.sh
httpd.sh &
+++++++++++++++++++++++++++
vim httpd.sh
#!/bin/bash
x=0
echo "web down is " > /tmp/ipdown.txt
for ip in 103 105 107 127 110 102
do
nmap -sT -p 80 172.40.55.$ip | grep -q open
if [ $? -eq 0 ];then
echo "172.40.55.$ip web is ok"
else
echo "172.40.55.$ip web is stop"
echo "172.40.55.$ip >> /tmp/ipdown.txt
let x++
fi
done
lines=`wc -l /tmp/ipdown.txt |awk '{print $1}' `
if [ $lines -gt 1 ];then
mail -s "weberror" root < /tmp/ipdown.txt
fi
echo "web down host is $x"
rm -rf /tmp/ipdown.txt
:wq
chmod +x httpd.sh
cron -e
*/10 * * * * /root/httpd.ssh
service crond restart
查看邮件:
[root@room1pc01 桌面]# vim /etc/postfix/main.cf
419 home_mailbox = Maildir/
[root@room1pc01 桌面]# mail -f /home/httpadmin/
.bash_logout .bashrc Maildir/
.bash_profile .gnome2/ .mozilla/
[root@room1pc01 桌面]# mail -f /home/httpadmin/Maildir/
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/home/httpadmin/Maildir/": 1 message 1 new
>N 1 root Wed Mar 8 20:00 20/589 "weberror"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.TCPDUMP抓包(tcpdump)
[root@room1pc01 桌面]# which tcpdump
/usr/sbin/tcpdump
[root@room1pc01 桌面]# rpm -qf /usr/sbin/tcpdump
tcpdump-4.0.0-5.20090921gitdf3cb4.2.el6.x86_64
[root@room1pc01 桌面]# yun -y install tcpdump
[root@room1pc01 桌面]# man tcpdump
[root@room1pc01 桌面]# tcpdump (开始抓整个)
[root@room1pc01 桌面]# tcpdump -A (抓的显示出屏幕上)
[root@room1pc01 桌面]# tcpdump -A -w /tmp/a.cap (抓 w保存文件里)
[root@room1pc01 桌面]# tcpdump -A -r /tmp/a.cap (r读出来)
-i -A -w -r
[root@room1pc01 桌面]# tcpdump -A -w /tmp/1.txt tcp port 110
[root@room1pc01 桌面]# tcpdump -A -r /tmp/1.txt |grep -i --color user
[root@room1pc01 桌面]# tcpdump -A -r /tmp/1.txt |grep -i --color pass
[root@room1pc01 桌面]# tcpdump -A tcp portrange 20-21
[root@room1pc01 桌面]# tcpdump -A tcp portrange 20-21 and host 192.168.4.101 (只抓101这台)
____________________________________________________________________________________________________________________________________________________________
————————————————————————————————————————————————————————————————————————
抓包实验,192.168.4.101开启抓包,让192.168.4.7访问它ftp抓把。保存在文件中。
[root@101 ~]# tcpdump -A -w /tmp/t.txt tcp portrange 20-21
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C36 packets captured
[root@svr7 opt]# ftp 192.168.4.101
Connected to 192.168.4.101 (192.168.4.101).
220 (vsFTPd 2.2.2)
Name (192.168.4.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,4,101,197,237).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 4 Mar 08 00:48 1.txt
drwxr-xr-x 2 0 0 4096 Mar 06 2015 pub
226 Directory send OK.
ftp> get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,4,101,106,217).
150 Opening BINARY mode data connection for 1.txt (4 bytes).
226 Transfer complete.
4 bytes received in 0.000489 secs (8.18 Kbytes/sec)
ftp> quit
221 Goodbye.
[root@101 ~]# tcpdump -A -w /tmp/t.txt tcp portrange 20-21
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
(按ctrl+c,保存退出)
^C36 packets captured
36 packets received by filter
0 packets dropped by kernel
[root@101 ~]# tcpdump -A -r /tmp/t.txt (把抓到的在屏幕中显示)
reading from file /tmp/t.txt, link-type EN10MB (Ethernet)
09:00:17.542583 IP 192.168.4.7.58623 > 192.168.4.101.ftp:
E..<.4@.@..........e.......?......9............
............
...........................................
[root@101 ~]# tcpdump -A -r /tmp/t.txt |grep -i --color pass (在抓包文件中检索密码)
reading from file /tmp/t.txt, link-type EN10MB (Ethernet)
.i......331 Please specify the password.
...0.i..PASS ftp
.i.....y227 Entering Passive Mode (192,168,4,101,197,237).
.i.D....227 Entering Passive Mode (192,168,4,101,106,217).
————————————————————————————————————————————————————————————————
____________________________________________________________________________________________________________________________________________________
网络中用来抓包,协议分析工具是用wireshark,俗称网络鲨鱼,装好后。在应用程序里可以把这个软件打开,是用图形界面显示的,所以装的时候要有图形。抓到包后,这图形上面显示抓到的包,下面显示这个包经过的物理层,数据链路层,网络层和传输层。最下面显示的是点开哪一层,都会详细信息。(公司生产环境中抓包,一般抓的是装防火墙的这台服务器。
3.3协议分析工具(wireshark)(网络鲨鱼)
[root@room1pc01 桌面]# yum -y install wireshark wireshark-gnome
[root@room1pc01 桌面]# rpm -qa |grep shark
wireshark-gnome-1.8.10-17.el6.x86_64
wireshark-1.8.10-17.el6.x86_64
osi(开放系统互联) 物理层(网卡) 数据链路层(交换) 网络层(路由,三层) 传输层 (udp视频音频适合 tcp ) 会话 表示层 应用 http ftp smtp
IP包里都包含哪些信息:目标地址 源地址 目标端口 源端口
tcp标记位 : 建立连接SYN 确认ACK 断开FIN 发送数据PUSH 重新连接RST
tcp/ip 四层:
物理层(比特流) 网络层(包) 传输层(段) 应用层(协议层)
为什么给ip包分段:因为数据包可能比较大,路由过不去只能分段,每个数据包会有tcp标记,。
ftp(下载20 主动) ftp(访问21 被动)
CA机构(CA服务器)是用来给公司服务器颁发数字证书的。有权威的也有私有自己搭建的。
使用IP地址是X.X.X.88主机做CA服务器
整体部署思路
第一步:配置CA签署环境(给客户端发证的默认配置)
/etc/pki/tls/openssl.cnf
第二步:为CA服务器生成私钥(创建密钥对)
第三步:为CA服务器创建根证书 (生成自己的根证书文件)
第四步:发布根证书文件(把自己的根证书共享给客户端)
第五步:客户端下载根证书
1
[root@stu ~]# rpm -qf /etc/pki/tls/openssl.cnf
openssl-1.0.1e-42.el6.x86_64
[root@stu ~]#
vim /etc/pki/tls/openssl.cnf
40 [ CA_default ]
42 dir = /etc/pki/CA
43 certs = $dir/certs
45 database = $dir/index.txt
50 certificate = $dir/my-ca.crt
55 private_key = $dir/private/my-ca.key
84 [ policy_match ]
85 countryName = match
86 stateOrProvinceName = match
87 organizationName = match
88 organizationalUnitName = optional
89 commonName = supplied
90 emailAddress = optional
128 [ req_distinguished_name ]
130 countryName_default = CN
135 stateOrProvinceName_default = beijing
138 localityName_default = beijing
141 0.organizationName_default = tarena
148 organizationalUnitName_default = ope
:wq
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
2
cd /etc/pki/CA/private/
]# openssl genrsa -des3 2048 > my-ca.key
chmod 600 my-ca.key
3
cd /etc/pki/CA/private/
openssl req -new -x509 -key my-ca.key -days 365 >
../my-ca.crt
[root@stu private]# openssl req -new -x509 -key
my-ca.key -days 365 > ../my-ca.crt
Enter pass phrase for my-ca.key:
You are about to be asked to enter information that will
be incorporated
into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some
blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [beijing]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [tarena]:
Organizational Unit Name (eg, section) [ope]:
Common Name (eg, your name or your server's
hostname) []:ca.tedu.cn
Email Address []:plj@tedu.cn
[root@stu private]#
[root@stu CA]# ls /etc/pki/CA/my-ca.crt
/etc/pki/CA/my-ca.crt
[root@stu CA]#
4
rpm -q httpd || yum -y install httpd
mkdir /var/www/html/certs/
cp /etc/pki/CA/my-ca.crt /var/www/html/certs/
service httpd start