day3-selinux+openssl

SElinux强制安全

加密与解密技术

CA数字证书服务

       

标准Lunux安全模型

DAC自主访问控制    Discretionary Access Control    所有都对自己的资源负责

典型的DAC应用

9位权限码

ACL

       

SElinux    Security-Enhanced Linux

一套强化Linux安全的MAC扩展模块

美国国家安全局主导开发

SELinux的动作机制

集成Linux的动作机制

集成到Linux内核——2.6及以上

操作系统提供可定制的策略、管理工具

       

策略

       

SELINUXTYPE=targeted

仅保护最常见/关键的网络服务,其他不限制

主要软件包:selinux-policy、selinux-policy-targeted、libselinux-utils、libselinux-utils、conreutils、policycoreutils

       

SELINUXTYPE=mls

提供多层次、全面的安全防护策略

需扩展软件包:selinux-policy-mls、msctrans、policycoreutils-newrole

       

禁用/启用SELinux机制

方法一:修改kernel启动参数

添加selinux=0为禁用,改为1为启用

方法二:修改文件/etc/selinux/config

设置SELINUX=disabled以禁用

设置SELINUX=permissive宽松模式

设置SELINUX=enforcing强制模式

临时修改:setenforce

1是强制模式,0是宽松模式

       

修改SELinux

  1. 文件的上下文环境值(标签值)

标签值相当于给文件加了一把锁。守护进程也有标签值,该值相当于钥匙,只有锁和钥匙匹配,才能打开文件,读取内容

修改文件标签值的方法

方法1:restorecon –Rv /path/to/dir

方法2:chconn –t 标签值 /path/to/dir

  1. SELinux布尔值

getsebool –a查看所有的布尔值

setsebool –P 布尔值    on    永久修改-P

       

安装setroubleshoot

yum –y install setroubleshoot*

重启后生效

有任何的selinux违规行为,系统都会给出提示和解决方案

如果是图形界面下,屏幕右上角会弹出消息        可以用sealert –b 查看

如果是字符终端下,可以查看/var/log/message

       

获得SELINUX设置帮助     

#man ftpd_selinux

man httpd_selinux

man samba_selinux

有些服务,配置文件中也有说明

vim /etc/samba/smb.conf

   

实验测试

开启selinux

[root@localhost test]# grep -v ^# /etc/selinux/config

SELINUX=enforcing

SELINUXTYPE=targeted

   

临时开启

[root@localhost test]# getenforce     查看

Enforcing

[root@localhost test]# setenforce 1 开启 0为关闭

   

使用FTP服务进行测试

vim /etc/vsftpd/vsftpd

anonymous_enable=YES //开启匿名访问

write_enable=YES

anon_umask=022

anon_upload_enable=YES //允许上传文件

anon_mkdir_write_enable=YES

   

chown ftp /var/ftp/pub

service vsftpd start

   

客户端使用FTP登录上去

put一个文件时,可以上传,但不能创建文件,所有上传失败

需要开启selinux布尔值

使用setsebool –P allow_ftp_anon_write=1

time setsebool –P allow_ftpd_full_access=1

[root@localhost test]# getsebool -a |grep allow_ftpd

allow_ftpd_anon_write --> on

allow_ftpd_full_access --> on

改完后可以上传文件了

若setsebool allow_ftpd_full_access=0时

关闭时

如何从其他目录拷贝的文件,无法去下载或上传,有继承关系

       

加密与解密

信息传递中的风险

加密

发送方:明文》》密文

接收方:密文》》明文

算法:加密/解密所使用的转换规则

密钥:加密/解密所使用的指令或代码

       

加密方式

单向加密:加密只能向一个方向进行。可以理解为输出明文数据,加密成乱码。不能将乱码反推回原始明文数据。但是原始的明文数据一致,生成的乱码也是一样的。常用的算法MD5、SHA。可以用于计算文件的完整性和保存加密密码。

对称加密: 使用相同的算法和密钥。对称密钥、共享密钥。

    优点:加密效率高。缺点:密钥的传输和保管不方便。常用的算法有 des/3des/aes

非对称加密:公钥加密、私钥解密。

    优点:密钥传输和保管方便。缺点加密效率低。常用算法RSA/DSA

     

/etc/shadow

$加密类型$随机数$密码+随机数加密后的值

     

保护信息的完整性

信息摘要:基于输入的信息生成长度较短、位数固定的散列值

对称加密

DES:Date Encryption Standard

AES:Advanced Encryption Standard

非对称加密

RSA:Rivest Shamirh Adleman

DSA:Digital Signature Algorithm

信息摘要

MD5:Message Digest Algorithm 5

SHA:Secure Hash Algorithm

     

MD5完整性校验

使用md5sum工具

重新生成MD5校验值

与软件官方提供的校验值比对

   

当文件内容一样,使用MD5校验也完全一样

   

GnuPG加密工具

GnuPG:GNU Privacy Guard

最流行的数据加密、数据签名工具软件

     

使用GPG加/解密文件

对称方式

加密操作:--symmetric或-c

解密操作:--decrypt或-d

     

加密操作:gpg –a –c 文件名 (a是ascii码 –c加密)

解密操作:gpg 文件名

     

yum install –y pinentry-gtk

私钥签名:

  1. 身份认证
  2. 数据完整性
  3. 不可否认

   

# gpg -c file2

输出两次密码

在未解密的情况下,显示为乱码

gpg对称解密操作

#gpg –d file2.gpg >file2

输出相对应的密码,在查看file2文件

   

使用GPG非对称加密方式保护文件

gpg --gen-key

查看公钥环

查看私钥环

# gpg -a --export usera >/tmp/gpg.pub

   

导入GPG

解密gpg –d hehe.txt.gpg>hehe.txt

创建分离式数字签名

gpg -b 1.tar.gz

GPG验证

   

OpenSSL及证书服务

加密

解密

 

搭建自有的CA服务器,为颁发数字证书提供基础

[ CA_default ]

 

dir = /etc/pki/CA # Where everything is kept

certs = $dir/certs # Where the issued certs are kept

crl_dir = $dir/crl # Where the issued crl are kept

database = $dir/index.txt # database index file.

#unique_subject = no # Set to 'no' to allow creation of

# several ctificates with same subject.

new_certs_dir = $dir/newcerts # default place for new certs.

 

certificate = $dir/cacert.pem # The CA certificate

serial = $dir/serial # The current serial number

crlnumber = $dir/crlnumber # the current crl number

# must be commented out to leave a V1 CRL

crl = $dir/crl.pem # The current CRL

private_key = $dir/private/ca.key # The private key

RANDFILE = $dir/private/.rand # private random number file

 

x509_extensions = usr_cert # The extentions to add to the cert

 

# Comment out the following two lines for the "traditional"

# (and highly broken) format.

name_opt = ca_default # Subject Name options

cert_opt = ca_default # Certificate field options

 

# Extension copying option: use with caution.

# copy_extensions = copy

..

[ req_distinguished_name ]

countryName = Country Name (2 letter code)

countryName_default = CN

countryName_min = 2

countryName_max = 2

 

stateOrProvinceName = State or Province Name (full name)

stateOrProvinceName_default = SH

 

localityName = Locality Name (eg, city)

localityName_default = SH

 

0.organizationName = Organization Name (eg, company)

0.organizationName_default = Default Company Ltd

..

默认CA配置目录位于/etc/pki/CA/,需要建立初初始化序列文件、索引文件

# cd /etc/pki/CA

[root@localhost CA]# touch index.txt

[root@localhost CA]# echo 01>serial

为CA服务器创建私钥,并设置一个私钥中令进行保护,设置权限为600

为CA服务器创建根证书

 

posted @ 2016-09-25 21:00  Final233  阅读(308)  评论(0编辑  收藏  举报