一、selinux安全防护
二、数据 加密 解密
三、抓包与扫描
四.协议分析软件的使用
++++++++++++++++++++++++++++++
一、selinux安全防护
1.1 selinux 介绍
是一套强化linux安全的MAC扩展块
美国国家安全局主导开发
集成到linux内核(2.6及以上)
操作系统提供可定制的策略。管理工具
1.2 linux安全保护模型?
linux保护的方式:多级别保护和只保护常用的服务
DAC自主访问控制
MAC强制访问控制
1.3 查看当前系统selinux的状态
[root@name451 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux 根目录
Loaded policy name: targeted 保护常用
Current mode: enforcing 当前状态
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28 版本
1.4 临时启用和禁用selinux
setenforce 1 启用
setenforce 0 禁用
1.5 永久启用或禁用selinux
vim /etc/selinux/config
enforcing---->permissive----->disabled
强制模式---------> 宽松模式-------------->禁用
1.6 selinux使用
1.6.1 查看安全上下文(给文件或目录打的标签)
查看文件的 安全上下文 ls -Z 文件名
查看目录的 安全上下文 ls -dZ 目录名
查看进程的 安全上下文 ps aux -Z | grep -i 进程名
1.6.2安全上下文的组成
用户:角色:访问类型:选项
system_u:object_r:net_conf_t:s0
system_u:object_r:usr_t:s0
system_u:object_r:mysqld_db_t:s0
1.6.3常见的访问类型
bin_t 二进制执行文件
etc_t 系统配置文件
fsadm_exec_t 文件系统管理
admin_home_t 管理员账户的宿主目录
user_home_t 普通用户的宿主目录
httpd_sys_content_t httpd网站内容
mysqld_db_t 数据库内容
1.6.4启用SELINUX之后的一般操作规律。
创建新目录或新文件 :继承父目录的安全上下文
移动文件:保持原有的访问类型不变
复印目录的文件 :继承目标目录的安全上下文
1.6.5 修改文件的安全上下文
chcon -t 访问类型 文件名 //修改单个文件
chcon -R -t 访问类型 目录名 //递归修改
1.6.6恢复文件的安全上下文
restorecon 文件名 //恢复单个文件
restorecon -R 目录名 // 递归恢复
1.6.7修改selinux布尔值(功能开关)
查看布尔值 getsebool -a
-a,可列出所有的布尔值
查看某个进程的布尔值 getsebool -a | grep -i 服务名
修改布尔值
setsebool -P 变量名 0|1
-P ,永久更改,重起仍有效
或setsebool -P 变量名 on|off
修改相关的bool值允许匿名用户上传文件
setsebool -P ftpd_full_access=1
setsebool -P ftpd_anon_write=1
setenforce 0 上传和下载都可以
setenforce 1 不允许匿名用户上传文件
在主机51上运行ftp服务,允许匿名用户上传和下载到ftp系统文件夹里
在客户端访问ftp服务器
#yunm -y install ftp
#ftp 192.168.4.51
cd 目录 #切换到某个服务目录下
get 文件名 # 下载文件
lcd 目录名 #切换客户端的系统目录下
put 文件名 #上传文件
二、数据 加密 解密
2.1 数据在传输过程中会有遇到哪些风险?
截获 ----->加密
不可否认性/篡改 ------>数字签名或做完整性校验
2.2什么是加密?把明文变为密文的过程,一般由发送负责加密
2.3什么是解密?把密文变成明文的过程,一般由接收方负责解密
2.4数据加密方式及对应的算法
对称加密:加密和解密数据时使用相同的计算规则
DES AES
非对称加密:加密和解密数据时使用不同的计算规则(使用密钥对)算法
密钥对分为2个部分:公钥用来加密
私钥用来解密
RSA DSA
2.5什么是算法:加密或解密数据时,使用的计算规则。
可以是口令(123456)
也可以是以串代码(密钥对)
2.6使用GPG工具加密
最流行的数据加密,数字签名工具软件
命令格式: gpg <选项>
2.6.1对称加密及解密
-c加密
-d解密
gpg -c 文件名
mv 文件名 公共文件夹
gpg -d 加密的文件 > ~/文件名(输入解密口令)
cat ~/文件名
mdd5sum ~/文件
2.5.2非对称加密及解密
-e 加密
-d 解密
-a --export 导出公钥
--import 导入公钥
dd if=/dev/zero of=
接收方1.创建密钥对
rm -rf ~/.gnupg/
gpg --gen-key
ls ~/.gnupg/
2.导出公钥并发送
gpg -a --export > /tmp/userb.pub
发送方1.导入公钥
gpg --import /tmp/userb.pub
ls ~/.gnupg/
2. 加密明文文件,并发给接收方
tail -3 /etc/paasswd > a.txt
cat a.txt
gpg -e -r userb a.txt
mv a.txt.gpg /tmp/
接收方解密
gpg -d /tmp/a.txt.gpg
输入保护密钥的密码,忘记密码就解不开了
2.5.3数据签名
签名的作用:验证文件完整性 实现不可否认性
使用私钥签名
使用公钥验证签名
-b创建签名文件
--verify 验证签名文件
userb 使用私钥创建签名文件
head -4 /etc/passwd > c.txt
cat c.txt
gpg -b c.txt
ls
mv c.txt* /tmp 把签名文件和源文件放到公共文件夹
ls /tmp/c.txt*
gpg--fingerprint 输出私钥指纹
usera使用导入的userb的公钥验证签名文件
cat /tmp/c.txt
gpg --verify /tmp/c.txt.sig
三、抓包与扫描
nmap扫描
一款强大的网络探测利器工具
支持多种探测技术
ping 扫描
多端口扫描
rpm -a nmap || yum -y install nmap 检测是否安装,没有安装则安装
which nmap
man nmap 查看帮助信息
nmap 命令语法格式
#nmap [扫描的方式] [选项] <ip地址>
扫描的方式 -sS,-sT,-sU -sP
选项-A(全面扫面) -n(加快扫描速度) -P(指定ip)
nmap -sS -n -p 80 176.130.3.11只扫描176.130.3.11 的80端口是否开
常用的服务端口
21 22 23 25 53 69 80 110 3306 3128 443
ftp ssh telnet smtp dns tftp http pop3 mysql squid https
执行命令 checkstus 可以自定义检查任意任意台主机上任意服务的运行状态。
checkstus 80 144 139 143 127 12
shift 位置向左移一位
vim /root/checkstus.sh
#!/bin/bash
port=$1
shift
for ip in $*
do
nmap -sS -n -p $port "176.130.3.$ip" |grep -i open
if [$? -eq];then
echo "176.130.3.$ip $port is open"
else
echo "176.130.3.$ip $port is closed"
fi
done
网络抓包
tcpdump
[root@room8pc205 桌面]# which tcpdump
[root@room8pc205 桌面]# rpm -qf /usr/sbin/tcpdump //查看此命令由哪个软件提供
[root@room8pc205 桌面]# man tcpdump
1004 tcpdump -i enp1s0
1005 tcpdump -i enp1s0 -c 2
1006 tcpdump -i enp1s0 -c 2 -A
1007 tcpdump -i enp1s0 -c 2 -A -w /tmp/tcpdump.cap
1008 tcpdump -A -r /tmp/tcpdump.cap
-i 网络接口名
-c 数字 --->抓取几个包
-A 以可阅读的方式抓取
-w 抓取的包默认输出屏幕,此选项可将包信息另存至文件
-r 文件名.cap
不加条件,抓所有。有条件,
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80 and net 192.168.4.0/24
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80 and host 192.168.4.254
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80 and not host 192.168.4.254
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80 and host 192.168.4.254 or host 192.168.4.54 //抓取4.254访问80端口的数据包 或者 4.54访问任何端口所有包
[root@slave55 ~]# tcpdump -i eth0 -A tcp port 80 and \(host 192.168.4.254 or host 192.168.4.54\)
例子:
[root@lianxi56 ~]# telnet localhost 110
[root@lianxi56 conf.d]# tcpdump -i lo -A tcp port 110 -w /tmp/mail.cap
[root@lianxi56 conf.d]# tcpdump -A -r /tmp/mail.cap | grep -i user
[root@lianxi56 conf.d]# tcpdump -A -r /tmp/mail.cap | grep -i pass
**********************************
[root@room8pc205 桌面]# rpm -qa | grep -i wireshark
[root@room8pc205 桌面]# yum -y install wireshark*
tcp 传输协议标记位
syn 新连接标记
ack 确认链接标记
fin 断开连接标记
p 传输数据
rst 重新建立连接
抓包tcpdump:提取tcp数据的命令行工具
命令格式#
tcpdump [选项] [过滤条件]
选项
-i 网络接口名
tcpdump -i p8p1
-A 转换ACll码,方便阅读
tcpdump -i p8p1 -A
-w 抓包信息存放到指定的位置
[root@room8pc205 桌面]# tcpdump -i p8p1 -A -w /tmp/a.txt
-r 把抓包信息读取出来
-c 数字 指定抓包个数
[root@room8pc205 桌面]# tcpdump -i p8p1 -A -c 2
过滤条件
类型:host net port portrange
协议:tcp udp ip wlan arp...
方向:src dst
多个条件组合:and or not
# tcpdump -i p8p1 -A src 176.130.3.11 and port 21
#tcpdump -i p8p1 -A src 176.130.3.11 and \(port 21 or port 80\)
协议分析软件wiresshar 的使用查看ip包的具体内容
rpm -qa |grep -i wireshark
yum -y install wireshark-*
wireshark-1.10.14-7.el7.x86_64
wireshark-gnome-1.10.14-7.el7.x86_64
::1 ipv6
127.0.0.1 ipv4
打开软件
应用层
会话层 应用层
表示层
传输层 传输层
网络层 网络层
数据链路层
物理层 物理层
[root@room8pc205 桌面]# nmap 176.130.3.15
Starting Nmap 6.40 ( http://nmap.org ) at 2018-04-10 09:44 CST
Nmap scan report for static-176-130-3-15.ftth.abo.bbox.fr (176.130.3.15)
Host is up (0.00037s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs
MAC Address: 50:9A:4C:58:FA:B7 (Unknown)
四.协议分析软件的使用
1.4 selinux配置文件
[root@host50 ~]# cat /etc/selinux/config
1.5 查看安全上下文
查看进程 ps aux -Z
ps aux -Z | grep -i 进程名
查看文件 ls -lZ 文件名
查看目录 ls -ldZ 目录名
1.6 安全上下文的组成?
system_u:object_r:passwd_file_t:s0
system_u:object_r:net_conf_t:s0
用户:角色:访问类型:参数
1.7 常见的访问类型?
1.8 SELinux启用后的一般操作规律?
创建新文件时,新文件继承父目录的安全上下文。
移动文件时,保持原有的安全上下文不变
拷贝文件时,继承目标目录的安全上下文
1.9 修改访问类型?
]# chcon -R -t 访问类型 目录名 //递归修改
]# chcon -t 访问类型 文件名
]# chcon -t httpd_sys_content_t /var/www/html/test1.html
1.10 恢复文件访问类型?
]# restorecon -R 目录名 //递归恢复
]# restorecon 文件名
]# restorecon /var/www/html/test2.html
练习文件selinux 访问类型的修改 (以网站服务文件为例)
1.11 selinux布尔值 (功能开关)
查看bool值
#getsebool -a
#getsebool -a | grep -i ftp
修改bool值
#setsebool -P 选项=1|0
#setsebool -P 选项 on|off
环境准备,启动vsftpd服务,配置允许匿名ftp用户, 可以上传和下载文件到/var/ftp/shardir目录里。
[root@host50 ~]# sed -n '29p' /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
[root@host50 ~]#
[root@host50 ~]# mkdir /var/ftp/shardir
[root@host50 ~]# chmod o+w /var/ftp/shardir
[root@host50 ~]# systemctl restart vsftpd
592 setsebool -P ftpd_anon_write=1
593 setsebool -P ftpd_full_access on
594 getenforce -a | grep -i ftp
597 setenforce 1
客户端:
yum -y install ftp
lcd 切换到本机目录
get 下载
put 上传
+++++++++++++++++++++++++++++++++++++
启用selinux日志程序记录报错信息:
启用selinux 后,修改网站服务使用的端口号为8090。
[root@host50 ~]# cat /var/log/messages | grep -n -i setroubleshoot | tail -1
37272:Jan 28 22:38:31 host50 setroubleshoot: SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 8090. For complete SELinux messages. run sealert -l a9db74ee-ff0d-45c7-8a4d-34d4bf5bc3c4
[root@host50 ~]# sealert -l a9db74ee-ff0d-45c7-8a4d-34d4bf5bc3c4
]# semanage port -a -t http_port_t -p tcp 8090
+++++++++++++++++++++++++++++++
二、数据 加密 解密
2.1 为什么要加密?
2.2 什么加密? 什么是解密?
发送方 加密 接收方 解密
2.3 什么是算法? 加/解密计算规则
秘钥(公钥加密 私钥解密)
|——> 可以是指令 或 一段代码
2.4 加密方式?
对称加密: 加密和解密使用相同的计算规则
非对称加密:加密和解密使用不相同的计算规则
对称加密算法: DES AES
非对称加密算法: RSA DSA
Hash散列技术,保证数据的完整性。 md5 sha
++++++++++++++++++++++++++++++
gpg 对称加密 -c -d
发 收
usera -------------- > userb
usera 加密 gpg -c 文件名
userb 解密 gpg -d 文件名
++++++++++++++++++++++++++
gpg 非对称加密(使用密钥对)
公钥 加密
私钥 解密
发 收
usera -------------- > userb
userb(解密 )
1 创建密钥对 ~/.gnupg/
#gpg --gen-key
#ls ~/.gnupg/
2 导出公钥 并把公钥文件传给usera
[userb@room9pc17 ~]$ gpg --export -a > /tmp/userb.pub
[userb@room9pc17 ~]$ cat /tmp/userb.pub
usera(加密)
1 导入公钥文件~/.gnupg
[usera@room9pc17 ~]$ gpg --import /tmp/userb.pub
[usera@room9pc17 ~]$ ls ~/.gnupg
2 使用公钥加密文件 ,把加密后的文件给userb
[usera@room9pc17 ~]$ gpg -e -r usera b.txt
[usera@room9pc17 ~]$ mv b.txt.gpg /tmp/
3 userb解密
调用私钥解密 解密文件
[userb@room9pc17 ~]$ gpg -d /tmp/b.txt.gpg > u.txt
cat u.txt
++++++++++++++++++++++++++++++++++
gpg数字签名 功能验证数据完整性
-b --verify --fingerprint
userb
私钥签名
26 vim c.txt
28 gpg -b c.txt
ls c.*
30 cp c.* /tmp/
33 gpg --fingerprint
usera
公钥验证签名
#gpg --verify /tmp/c.txt.sig
#cat /tmp/c.txt
root# sed -i '1s/^/aaa/' /tmp/c.txt
usera
#cat /tmp/c.txt
#gpg --verify /tmp/c.txt.sig
+++++++++++++++++++++++++++++++
三、抓包与扫描
3.1 扫描nmap
3.2 抓包tcpdump
3.3 协议分析软件的使用wireshark
3.1 扫描nmap
180 which nmap
181 rpm -qf /bin/nmap
182 rpm -q nmap
# man nmap
语法格式
#nmap [扫描类型] [选项] <ip地址>
扫描类型有哪些? -sS -sT -sU -sP
选项有哪些? -A -n -p
ip地址表示方式?
192.168.4.53
192.168.4.100-200
192.168.4.53,57,68
#nmap -sP 172.40.55.122
185 nmap -sP 172.40.55.122
186 nmap -sP 172.40.55.180
187 nmap 172.40.55.180
188 nmap -n -sT -p 80 172.40.55.180
189 nmap -n -sT -p 25,80 172.40.55.180
190 nmap -n -sT -p 21-100,3306 172.40.55.180
191 nmap -n -A 172.40.55.180
# nmap -n -sP 172.40.55.100-200 --exclude 172.40.55.143,172.40.55.158
#vim /root/ip.txt
172.40.55.143
172.40.55.158
172.40.55.180
:wq
# nmap -n -sP 172.40.55.100-200 --excludefile /root/ip.txt
vim /root/web.sh
#/bin/bash
for ip in 180 143 158
do
nmap -n -sS -p 80 172.40.55.$ip | grep -q open
if [ $? -eq 0 ];then
echo " 172.40.55.$ip 80 open"
else
echo " 172.40.55.$ip 80 closed"
fi
done
:wq
+++++++++++++++++++++++++++++
#mkdir /myself
#mv /root/web.sh /myself/checkweb
#chmod +x /myself/checkweb
#vim /etc/profile
....
export PATH=/myself:$PATH
:wq
#resource /etc/profile
#echo $PATH
#cd /usr/local/
#checkweb
++++++++++++++++++++++++++++++++++++
#checkweb 3306 112 130 129
#checkweb 11211 112 130 129