网络安全的三个关键目标:
机密性、完整性、可用性
对称加密协议:
DES/AES/3DES。
非对称加密:RSA/DSS/ECC
数学函数
私钥:secret
公钥:public
私钥加密的数据只可以用公钥解密(身份验证),公钥加密的数据只可以用私钥解密。(机密性)
功能:身份验证、机密性、秘钥交换。
单向加密:可以将明文加密成密文,但不可解密,目的是保证数据的完整性。提取数据的特征码,称为哈希计算或者散列计算。
常见协议:MD5/SHA1
作用:保证数据的完整性
数字签名:用户通过私钥对文件的特征码进行加密,对方只可以使用发送方的公钥解密,称为数字签名,并且此过程中的特征码是通过MD5/SHA来进行提取特征码,也保证了特征码不会被篡改,保证了数据本身的完整性。(非对称加密本身可以实现数据的完整性,但是加密过程耗时,所以采用此方法)
完整的加密传输过程:
数字证书:
证书格式:x.509v3
内容:版本号、序列号、签名算法标识、发行者名称、有效期、证书主体名称、证书主体公钥信息、发行商唯一标示、证书主体的唯一标识、签名、扩展。
PKI
是一个管理数字证书的规范,应该包括以下以下内容:
申请者
注册机构(RC)
签证机构(CA)
证书撤销列表(CRL)发布机构
证书存取库
SSL:最开始是由网景公司为web服务提供的安全协议。其模块是在会话层和传输层之间,常见的https、ftps、smtps、pop3都是建立在SSL基础之上的。
套接字:就是在一个端口上提供多种服务。
TLS是由国际组织来完成的通讯安全传输协议。和SSL有相同的意义。
OPENSSL:
libcrypto:加密、解密
libssl:实现ssl功能
openssl:命令行程序,由主命令和子命令组成,比如openssl dgst、openssl enc、openssl speed。如果需要查看具体子命令的用法可以使用man enc或者man sslpasswd的方法尝试
基本用法:
1、使用des3算法加密文件
openssl enc -des3 -in /path/to/somefile -e -out /path/to/file.des3
openssl enc -des3 -in /path/to/file.des3 -d -out /path/to/somefile
2、使用md5对文件进行计算特征码
openssl -dest -md5 fstab.txt
md5sum fstab.txt
3、openssl passwd -1 -salt
4、创建私钥(rsa算法)
openssl genrsa 1024 #1024位私钥的位数,可以自己设置
导出私钥:openssl genrsa >mykey.pri
5、对私钥进行加密
openssl genrsa -des3 1024
6、提取私钥的公钥
openssl rsa -in mykey.pri -pubout
如何申请证书
1、生成一个私钥,公钥
2、制作一个证书签署请求。
3、由ca负责对你生成的密钥对进行签署证书。
7、制作证书签署请求。
openssl req -new -key ./mykey.pri -out ./myreq.csr
8、自己创建CA。
默认ca证书配置文件可以查看/etc/pki/tls/openssl.cnf。
进入目录
cd /etc/pki/ca
创建CA私钥
(umask 077;openssl genrsa -out private/cakey.pem 2048)
生成自签名证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 1000
自签需要使用-x509,cacert.pem不能变化,需要依据/etc/pki/tls/openssl.cnf创建。
创建签证列表
touch serial index.txt
对申请进行确认,并制作证书(.crt)
openssl ca -in myreq.csr -out mycert.crt
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ 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/cakey.pem# 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
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
8、专用客户端测试工具
openssl s_client -connect host:port -CAfile /path/to/cacertfile(-CApath /path/) -ssl2(-tls1)
总结:
加密、解密:enc
信息摘要:dgst
生成私钥、提取公钥:genrsa
制作证书签署请求,自建ca:req
签署:ca
https通讯时,服务器会发送自己的证书给客户端,客户端要验证服务器的证书是否可靠,需要下载ca的证书来确定服务器的身份,而客户端和服务器通讯使用的是对称加密,但由于这种通讯时连接时间很短,在下次连接的时候,会更改秘钥,所有是安全的。
sudo详解
/etc/sudoers
可以定义谁在哪些主机上以什么身份使用的哪些命令。
user ALL=/sbin/mount /mnt/cdrom,/sbin/umount /mnt/cdrom
设置组用户权限:
%groupname 192.168.1.55=/usr/sbin/useradd
sudoers支持使用别名对同类对象进行分组,组名必须使用全大写字母。
Host_Alias:主机别名
User_Alias:用户别名
Cmnd_Alias:命令别名
例如:
User_Alias USERALASE=tom,gongbing,user1
Host_Alias HOSTALASE= 192.168.1.55,192.168.1.20
Cmnd_Alias COMMANDALASE=/usr/sbin/useradd,/user/sbin/usermod
USERALASE HOSTALASE=COMMANDALASE
sudo -l :查看配置文件sudoers中用户可以使用的命令。
-k:结束密码的有效期,下次执行命令时要求输入用户密码。
执行命令:
1、指定用户登录linux
2、执行命令
sudo visudo