1.对称加密算法
对称加密:加密和密钥使用同一个密钥
特性:
加密,解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多
密钥分发
数据来源无法确认
常见对称加密算法:DES,3DES,AES
2.非对称加密算法
非对称加密:密钥是成对出现
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,自己留存,必须保证其私密性,用于自己加密签名
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数据加密:适合加密较小数据,比如:加密对称密钥
数字签名:主要在于让接收方确认发送方身份
缺点:
密钥长,算法复杂
加密解密效率地下
常见算法:RSA,DSA
非对称加密实现数字签名
发送者
生成公钥/私钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
接收者
使用发送者的公钥来解密M=P(S(M))
3.使用gpg实现对称和非对称加密
实现对称加密
对称加密file文件
gpg -c file
在另一台主机上解密file
gpg -o file -d file.pgp
实现公钥加密
目标:在hostB主机上用hostA公钥加密,在hostA主机上解密
在hostA主机上生成公钥/私钥对
gpg --gen-key
在hostA主机上查看公钥
gpg --list-key
在hostA主机上导出公钥到yang.pubkey
gpg -a --export -o yang.pubkey
从hostA主机上复制公钥文件到需加密的B主机上
scp yang.pubkey hostB:
在需要加密数据的hostB主机上生成公钥/私钥对
gpg --list-keys
gpg --gen-key
在hostB主机上导入公钥
gpg --import yang.pubkey
gpg --list-keys
用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg
gpg -e -r yangbowen file file file.gpg
复制加密文件到hostA主机
scp fstab.gpg hostA:
在hostA主机解密文件
gpg -d file.gpg gpg -o file -d file.gpg
删除公钥和私钥
gpg --delete-keys yangbowen
gpg --delete-secret-keys yangbowen
4.单项哈希算法
·哈希算法:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要特性:
任意长度输入,固定长度输出
·若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
·无法从指纹中重新生成数据,即不可逆,具有单向性
功能:数据完整性
常见算法:MD5,sh1,sha512
5.综合加密

6.证书工作原理
PKI:Public key infrastructure 公共密钥加密体系
CA 拥有一个证书(内含私钥和公钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。
如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。
认证中心(CA─Certificate Authority)作为权威的、可信赖的、公正的第三方机构,专门负责发放并管理所有参与网上交易的实体所需的数字证书。它作为一个权威机构,对密钥进行有效地管理,颁发证书证明密钥的有效性,并将公开密钥同某一个实体(消费者、商户、银行)联系在一起。随着认证中心(或称CA中心)的出现,使得开放网络的安全问题得以迎刃而解。利用数字证书、PKI、对称加密算法、数字签名、数字信封等加密技术,可以建立起安全程度极高的加解密和身份认证系统,确保电子交易有效、安全地进行。
密钥的管理政策是把公钥和实体绑定,由CA中心把实体的信息和实体的公钥制作成数字证书,证书的尾部必须有CA中心的数字签名。
7.HTTPS
HTTPs协议:就是“HTTP协议和SSL/TLS协议”的组合。HTTP over SSL 或HTTP over TLS,对http协
议的文本数据进行加密处理后,成为二进制形式传输
https解决的问题
https很好的解决了http的三个缺点(被监听,被篡改,被伪装),https不是一种新的协议,它是http+SSL的结合体,SSL
是一种独立协议,所以其它协议比如smtp等也可以根SSl结合,https改变了通信方式,它由以前的http--》tcp,改为http--》
SSL--》tcp;https采用了对称密钥加密和非对称密钥加密方法式
防监听
数据是加密的,所以监听得到的数据是密文,hacker看不懂
防伪装
伪装分为客户端伪装和服务器伪装,通信双方携带证书,证书相当于身份证,有证书就认为合法,没有证书就认为非法
防篡改
https对数据做了摘要,篡改数据会被感知到。hacker即使从中改了数据也白搭
https连接过程
·客户端发送请求到服务器
·服务器端发送证书和自己的公钥,公钥作为证书的一部分而存在
·客户端验证证书和公钥的有效性,如果有效,则生成对称密钥,并用服务器公钥加密发动到服务器端
·服务器端使用私有密钥解密数据,并使用收到的对称密钥加密数据,发送到客户端
·客户端使用对称密钥解密数据
·SSL加密建立
8.openssl
base64编码
base64是网络上最常见的用于传输8bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制的方法
base64的编码过程如下:
将每3个字节放入一个24位的缓冲区中,最后不足3个字节的,缓冲区的剩余部分用0来填补。然后每次取出6位,将高位用0来填充
组成一个新的字节,计算出这新字节的十进制值,对应上面的编码表,输出相应的字符。这样不断的进行下去,就可完成对所有数据
的编码工作
[14:58:22 root@centos7 ~]$echo -n MAN | base64 TUFO [15:10:12 root@centos7 ~]$echo MAN | base64 TUFOCg==
openssl命令对称加密
工具:openssl enc,gpg
算法:3des,aes,blowfish,twofish
enc命令:帮助:man enc
加密
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密
openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
openssl命令单向哈希加密
工具:openssl dgst
算法:md5sum,sha1sum,sha224sum,sha256sum
[15:36:49 root@centos7 ~]$openssl md5 /etc/fstab MD5(/etc/fstab)= 921222ace61925f32712700901fdc050 [15:37:01 root@centos7 ~]$openssl sha512 /etc/fstab SHA512(/etc/fstab)= df3d99ab608a965e9f7618374ff5f4965be691b29fe73efa79b24460a29ba5e4f26d0d91180a47b0f854e9178100efedbf448e8976e01c510809f272788640b1
openssl命令生成随机数
随机数生成器:伪随机数字,利用键盘和鼠标,块设备中断生成随机数
/dev/random #仅从熵池返回随机数:随机数用尽,阻塞
/dev/urandom #从熵池返回随机数:随机数用尽,会利用软件生成伪随机数,非阻塞
[15:41:48 root@centos7 ~]$openssl rand -base64 9 RpH/8GVrV8su [15:42:37 root@centos7 ~]$openssl rand -base64 10 |head -c 6 1chEVc
9.建立私有CA实现证书申请颁发
1.证书申请及签署步骤:
2.RA核验
3.CA签署
4.获取证书
openssl-libs包
[19:30:44 root@centos7 tls]$rpm -ql openssl-libs /etc/pki/tls /etc/pki/tls/certs /etc/pki/tls/misc /etc/pki/tls/openssl.cnf /etc/pki/tls/private /usr/lib64/.libcrypto.so.1.0.2k.hmac /usr/lib64/.libcrypto.so.10.hmac /usr/lib64/.libssl.so.1.0.2k.hmac /usr/lib64/.libssl.so.10.hmac
openssl的配置文件:
/etc/pki/tls/openssl.cnf
三种策略:match匹配,optional可选,supplied提供
match:要求申请填写的信息根CA设置信息必须一致
optional:可有可无,根CA设置信息可不一致
supplied:必须填写这项申请信息
创建私有CA
1.创建CA所需的文件
touch /etc/pki/CA/index.txt 生成证书索引数据库文件
touch /etc/pki/CA/serial echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号
2.生成CA私钥
cd /etc/pki/CA/ (umask 066;openssl genrsa -out private/cakey.pem 2048)
3.生成CA自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem -new:生成新证书签署请求 -x509:专用于CA生成自签证书 -key:生成请求时用到的私钥文件 -days n:证书的有效期限 -out /PATH/TO/SOMECERTFILE:证书的保存路径
4.填写DN
1.填写国家参考https://country-code.cl/
CN 中国
2.填写省份
beijing
3.填写城市
beijing
4.组织
必须一样
5.部门
可随意填写
6CN
给谁用,不可以随意填写将来给谁用写谁,一般是网站名
7邮箱
8.生成cacert.pem,sz cacert.pem上传至windos改后缀.crt可以查看
5.申请证书并颁发证书
6.为需要使用证书的主机生成私钥
mkdir -p /data/app/certs 假如app服务 cd /data/app/certs (umask 066;openssl genrsa -out app.key 2048) 生成私钥
7.为需要使用证书的主机生成证书申请文件
openssl req -new -key app.key -out app.csr
8.填写DN
国家,省,组织名称三项必须和CA一致
9.在CA签署证书并将证书颁发给请求者
openssl ca -in /data/app/certs/app.csr -out /etc/pki/CA/certs/app.crt -days 100
10.查看
[20:54:27 root@centos7 CA]$tree . ├── cacert.pem ├── certs │ └── app.crt ├── crl ├── index.txt ├── index.txt.attr ├── index.txt.old ├── newcerts │ └── 01.pem ├── private │ └── cakey.pem ├── serial └── serial.old
11.吊销证书
在客户端获取要吊销证书的serial
openssl x509 -in /etc/pki/CA/newcerts/01.pem -noout -serial -subject
在客户端获取要吊销的证书的serial
openssl ca -revoke /etc/pki/CA/newcerts/01.pem 在CA上,根据客户提交的serial与subject信息,对比检验是否index.txt文件中的信息一直,吊销证书
[10:42:16 root@centos7 CA]$cat index.txt
R 210423125327Z 210114023936Z 01 unknown /C=CN/ST=beijing/O=aiyou/OU=m43/CN=www.yang.org/emailAddress=15405349@qq.com
R显示已吊销
echo 01 > /etc/pki/CA/crlnumber 指定第一个吊销证书的编号,注意第一次更新证书吊销列表前,才需要执行 openssl ca -gencrl -out /etc/pki/CA/crl.pem 更新证书吊销列表 openssl crl -in /etc/pki/CA/crl.pem -noout -text 查看crl文件
12.make
只有centos7里有
必须在/etc/pki/tls/certs中
make 指定位置后面结尾必须是.key
make /opt/test.key
创建私钥必须加口令
make /opt/test.crt
生成自签名证书
10.ssh服务安全加固
首次连接时的公钥交换
· 客户端发起连接请求
·服务端返回自己的公钥,以及一个绘画ID(这一步客户端得到服务端公钥)
·客户端生成密钥对
·客户端用自己的公钥异或对话ID,计算出一个值Res,并用服务端的公钥加密
·客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
·服务端用解密后的值Res异或绘画ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
·最终:双方各自持有三个密钥,分别为自己的一对公,私钥,以及对方的公钥,之后的所有通讯都会被加密
ssh客户端配置文件:/etc/ssh/ssh_config
主要配置
#StrictHostKeyChecking ask
#首次登录不显示检查提示
StrictHostKeyChecking no
#Port 22
范例禁止首次连接询问过程
sed -i '/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config
ssh -o StrictHostKeyChecking=no 10.0.0.6
常见选项
-p port: 远程服务器监听的端口
-b 指定连接的源IP
-x 支持x11转发
-t 强制为tty分配
-o 如-o StrictHostKeyChecking no
-i 《file》指定私钥文件路径 ,实现基于key验证,默认使用文件:/.ssh/id_dsa,/.ssh/id_ecdsa,/.ssh/id_dsa,等
范例
ssh -t 10.0.0.8 ssh -t 10.0.0.7 ssh 10.0.0.6 有些对安全比较严格的公司会使用
范例:远程执行命令
ssh 10.0.0.8 "sed -i '/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config"
范例:在远程主机运行本地shell脚本
ssh 10.0.0.18 /bin/bash < test.sh
ssh服务器配置
配置文件:/etc/ssh/sshd_config
常用参数
Port #生产建议修改 ListenAddress ip LoginGraceTime 2m PermitRootLogin yes #默认ubuntu不允许root远程ssh登录 StrictModes yes #检查.ssh/文件的所有者,权限等 MaxAuthTries 6 #pecifies the maximum number of authentication attempts permitted per connection. Once the number of failures reaches half this value, additional failures are logged. The default is 6. MaxSessions 10 #同一个连接最大会话 PubkeyAuthentication yes #基于key验证 PermitEmptyPasswords no #空密码连接 PasswordAuthentication yes #基于用户名和密码连接 GatewayPorts no ClientAliveInterval 10 #单位:秒 ClientAliveCountMax 3 #默认3 UseDNS yes #提高速度可改为no GSSAPIAuthentication yes #提高速度可改为no MaxStartups #未认证连接最大值,默认值10 Banner /path/file #以下可以限制可登录用户的办法: AllowUsers user1 user2 user3 DenyUsers user1 user2 user3 AllowGroups g1 g2 DenyGroups g1 g2 范例:设置 ssh 空闲60s 自动
基于密钥的登录方式
1.首先在客户端生成一对密钥
2.并将客户端的公钥ssh-copy-id拷贝到服务端
3.当客户端再次发送一个连接请求,包括ip,用户名
4.服务端得到客户端的请求后,会到authorized_keys中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:yang
5.服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6.得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7.服务端接受到客户端发来的字符串后,跟之前的字符串进行对比如果一致,就允许便密码登录
实现基于密钥的登录方式
在客户端生成密钥对
ssh-keygen -t rsa [-P ""] [-f "~/.ssh/id_rsa"]
可以选择空密码 选择的rsa默认位置
把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]host
公钥名称 主机
重设私钥口令
ssh-keygen -p
实现多主机key验证
[14:53:36 root@centos7 ~]$ssh-keygen
生成key
[14:55:00 root@centos7 ~]$ssh-copy-id 127.0.0.1
连接自己生成authorized_keys
[14:58:21 root@centos7 ~]$scp -r .ssh 10.0.0.6:/root
复制到需要key验证的主机
11.scp命令
scp [options] SRC... DEST/
scp file 10.0.0.8:/root
复制文件到10.0.0.8的根下的root
scp 10.0.0.7:/data/ 10.0.0.8:/opt
把远程10.0.0.7的文件复制到远程10.0.0.8
常用选项:
-c 压缩数据流
-r 递归复制
-p 保持原文件的属性信息
-q 静默模式
-P PORT指明remote host的监听的端口
12.rsync命令
rsync工具可以基于ssh和rsync协议实现高效的远程系统之间复制文件,使用安全的shell连接做为传输方式,比scp更快,基于增量数据同步,即只复制两方不同的文件,此工具来自于rsync包
注意通信两端主机都需要安装rsync软件
rsync
范例
rsync -av dir 10.0.0.8:/data
复制dir文件包含文件夹到10.0.0.8
rsync -auv --delete /data/test 10.0.0.7:
同步文件
-a:存档
--delete 源数据删除,目标数据也自动同步
-z 压缩,节约网络带宽
-u 如果接收者的文件比发送者的文件新,将忽略同步
-r 递归复制目录树
13.自动登录ssh工具sshpass
由EPEL源提供,ssh登录不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互ssh的密码验证,一般用在sh脚本中,无须再次输入密码(本机known_hosts文件中有的主机才能生效)。他允许你用-p参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行,文件,环境变量中读取。
sshpass [option] command parameters
-p password 后跟密码他允许你用 -p 参数指定明文密码,然后直接登录远程服务器
-f filename 后跟保存密码的文件名,密码是文件内容的第一行
-e 将环境变量SSHPASS作为密码
范例
[20:29:26 root@centos7 ~]$sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@10.0.0.6
[20:31:33 root@centos7 ~]$sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@10.0.0.6
hostname -I 10.0.0.6
执行命令
范例
-f
[20:37:05 root@centos7 ~]$cat nihao 123456
[20:37:56 root@centos7 ~]$sshpass -f nihao ssh root@10.0.0.6 hostname -I
10.0.0.6
范例
-e
[20:38:30 root@centos7 ~]$export SSHPASS=123456 [20:39:29 root@centos7 ~]$sshpass -e ssh root@10.0.0.6 Last login: Thu Jan 14 20:31:30 2021 from 10.0.0.7
批量部署多台主机基于key验证脚本1
#!/bin/bash host=" 10.0.0.6 10.0.0.5 " ssh-keygen -P "" -f /root/.ssh/id_rsa &> /dev/null rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null for i in $host;do sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no $i done
14轻量级自动化运维工具pssh
pssh:基于python编写,可在多台服务器上执行命令工具,也可实现文件复制,提供了基于ssh和scp的多个并行工具
pssh命令选项如下:
-H:主机字符串,内容格式“[user@]host[:port]"
-h:file:主机列表文件,内容格式”[user@]host[:port]"
-A:手动输入密码模式
-i:每个服务器内部处理信息输出
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输出文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-P:打印出服务器返回信息
-v:详细模式
--version:查看版本
范例:
pssh -H "10.0.0.7" -A hostname
默认使用ssh的key认证,通过-A选项,使用密码认证批量执行指令
pssh -H "10.0.0.7 10.0.0.8" -i hostname
多台主机,前提是要基于key验证
cat hosts.txt
10.0.0.8
10.0.0.6
pssh -h hosts.txt -i hostname
多台主机
[root@centos7 ~]#pssh -h hosts.txt -i 'echo $HOSTNAME'
[1] 16:48:05 [SUCCESS] 10.0.0.6
centos6.localdomain
[2] 16:48:05 [SUCCESS] 10.0.0.8
centos8.localdomain
变量需要加单引号引起来
[root@centos7 ~]#pssh -h hosts.txt -i 'ls /data/*'
[1] 16:48:47 [SUCCESS] 10.0.0.6
[2] 16:48:47 [SUCCESS] 10.0.0.8
/data/centos7.log
/data/f1.txt
/data/f2.txt
/data/host_pass.txt
*需要用双引号或单引号引起来
15.sudo
sudo即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性
sudo特性: sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系 管理员
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志 服务器
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得 了一张存活期为5分钟的票
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。 它所存放的位置默认是在/etc/sudoers,属性必须为0440
授权规则配置文件:
/etc/sudoers
/etc/sudoers.d
sudo命令
sudo命令 ls -l /usr/bin/sudo sudo -i -u wang 切换身份功能和 su 相似,但不一样,sudo必须提前授权,而且要输入自已的密码 sudo [-u user] COMMAND -V 显示版本信息等配置信息 -u user 默认为root -l,ll 列出用户在主机上可用的和被禁止的命令 -v 再延长密码有效期限5分钟,更新时间戳 -k 清除时间戳(1970-01-01),下次需要重新输密码 -K 与-k类似,还要删除时间戳文件 -b 在后台执行指令 -p 改变询问密码的提示符号 示例:-p "password on %h for user %p: "
sudoers授权规则格式:
用户 登入主机=(代表用户)命令
user host=(runas) command
范例
root ALL=(ALL) ALL
格式说明:
user:运行命令者的身份
host:通过哪些主机
(runas):以哪个用户的身份
command:运行哪些命令
sudo别名四种类型
User_Alias
Runas_Alias
Host_Alias
Cmnd_Alias
别名定义
案例
User_Alias SYSADER=yang,ybw,%admins User_Alias DISKADER=tom Host_Alias SERS=www.ybwen.com,172.16.0.0/24 Runas_Alias OP=root Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk SYSADER SERS= SYDCMD,DSKCMD DISKADER ALL=(OP) DSKCMD
yang 192.168.1.6,192.168.1.8=(root) /usr/sbin/,!/usr/sbin/useradd
18.PAM相关文件
包名:pam
模块文件目录:/lib64/security/*.so
特定模板相关的设置文件:/etc/security/
为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
模块类型
Auth 账号的认证和授权
Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务 的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
Password 用户修改密码时密码复杂度检查机制等功能
Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
Control
required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败 结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回 给应用程序,即为必要条件
requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执 行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其 它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite
optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
include: 调用其他的配置文件中定义的配置信息
module-path:
模块文件所在绝对路径:
模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、 pam_limits.so
有些模块有自已的专有配置文件,在/etc/security/*.conf目 录下
Arguments
debug :该模块应当用syslog( )将调试信息写入到系统日志文件中
no_warn :表明该模块不应把警告信息发送给应用程序
use_first_pass :该模块不能提示用户输入密码,只能从前一个模块得到输入密码
try_first_pass :该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户 输入新密码 use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码
expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏 用户名会对安全造成一定程度的威胁
注意:修改PAM配置文件将马上生效
建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误
pam_limits.so模块
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用 内存空间
配置文件: pam_limits的设定值是基于 per-process 的
/etc/security/limits.conf /etc/security/limits.d/*.conf
应用于那些对象
Username 单个用户
@group 组内所有用户
* 所用用户
限制的类型
soft 软限制普通用户自己可以修改
Hard 硬限制,由root用户设定,且通过kernel强制生效
- 二者同时限定
限制的资源
nofile 所能够董事打开的最大文件数量,默认1024
nproc 所能够同时运行的进程的最大数量,默认1024
生产案例
vim /etc/security/limits.conf * - core unlimited * - nproc 1000000 * - nofile 1000000 * - memlock 32000 * - msgqueue 8192000
19.时间同步服务
加密和安全当前都离不开时间的同步,否则各种网络服务可能不能正常运行
范例一次性同步
ping ntp.aliyun.com ntpdate ntp.ailyun.com
chrony的优势
更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天 24 小时运行的虚拟计算机而言非常有用
能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节 能技术而言非常有用
配置文件chrony.conf
server #可用于时钟服务器,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据 包。 包间隔通常为2秒,可加快初始同步速度
allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器
local stratum 10 #即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它 客户端
作为服务器端必须配置的内容
vim /etc/chrony.conf
server ntp.aliyun.com iburst 同步阿里时间服务器
systemctl restart chronyd.service 重启服务
chronyc sources -c 查看是否同步 显示^*表示可以同步
20.selinux
关闭selinux
setenforce 0关闭selinux
getenforce 获取selinux当前状态
/etc/selinux/config
SELINUX=disabled禁用