加密和安全

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禁用

原文地址:https://www.cnblogs.com/aiyoubucuo/p/14264465.html