zoukankan      html  css  js  c++  java
  • 加密和安全

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

  • 相关阅读:
    控制流程
    表达式
    2020.2.7
    寒假自学进度六
    2020.2.6
    2020.2.5
    寒假自学进度五
    Scala初级实验
    寒假自学进度四
    Spark运行基本流程
  • 原文地址:https://www.cnblogs.com/aiyoubucuo/p/14264465.html
Copyright © 2011-2022 走看看