# find / -type f \( -perm -1000 -o -perm -2000 -o -perm -4000 \) -print
[步骤] Linux 密码的安全 (设置密码复杂度和加密算法) (CentOS Linux 8 & RHEL 8 版)
步骤一:设置密码必须包含大小写字母等策略
# vim /etc/security/pwquality.conf
将部分内容修改如下:
......
minlen = 15
......
dcredit = -1
......
ucredit = -1
......
lcredit = -1
......
ocredit = -1
......
dictcheck = 1
......
usercheck = 1
......
(
补充:这里以
1) 密码最小长度为 15 个字符 (minlen = 15)
2) 密码必须包含数字的个数 (dcredit = -1)
3) 密码必须包含大写字母的个数 (ucredit = -1)
4) 密码必须包含小写字母的个数 (lcredit = -1)
5) 密码必须包含特殊字符的个数 (ocredit = -1)
6) 密码不能包含字典 (dictcheck = 1)
7) 密码不能包含用户 (usercheck = 1)
为例
)
步骤二:设置新密码不能和旧密码重复的策略以及加密算法
2.1 配置 authselect 自定义认证
2.1.1 检查是否选择了 authselect 自定义认证
# authselect current | awk 'NR == 1 {print $3}' | grep custom/
custom/password-policy
(
补充:
(1)如果这条命令里没有输出则代表没有选择自定义认证
(2)从这里的输出结果可以看出这里选择的自定义认证是 custom/password-policy
)
2.1.2 如果 authselect 自定义认证存在
2.1.2.1 修改 /etc/authselect/custom/password-policy/system-auth 配置文件
# vim /etc/authselect/custom/password-policy/system-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
2.1.2.2 修改 /etc/authselect/custom/password-policy/password-auth 配置文件
# vim /etc/authselect/custom/password-policy/password-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
2.1.3 如果 authselect 自定义认证不存在
2.1.3.1 生成新的 authselect 自定义认证
2.1.3.1.1 备份当前的 authselect 自定义认证
# authselect apply-changes -b --backup=sssd.backup
(补充:这里以创建 sssd.backup 备份文件为例)
2.1.3.1.2 创建新的 authselect 自定义认证
# authselect create-profile password-policy -b sssd --symlink-meta --symlink-pam
(补充:这里以生成名为 password-policy 的自定义认证为例)
2.1.3.1.3 选择新的 authselect 自定义认证
2.1.3.1.3.1 选择新的 authselect 自定义认证
# authselect select custom/password-policy with-sudo with-faillock without-nullok with-mkhomedir --force
(
补充:
1) 这里以选择名为 password-policy 的自定义认证为例
2) 这里设置了 with-sudo、with-faillock、without-nullok 和 with-mkhomedir 参数
)
(注意:使用了 with-mkhomedir 参数后,会提示需要开启 oddjobd)
2.1.3.1.3.2 满足选择新的 authselect 自定义认证时 with-mkhomedir 参数的要求
# dnf install oddjob ; systemctl enable --now oddjobd.service
2.1.3.1.4 显示当前选择的 authselect 自定义认证
# authselect current
(补充:这里以生成并选择名为 password-policy 的自定义认证为例)
2.1.3.2 修改 authselect 自定义认证
2.1.3.2.1 修改 /etc/authselect/custom/password-policy/system-auth 配置文件
# vim /etc/authselect/custom/password-policy/system-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
2.1.3.2.2 修改 /etc/authselect/custom/password-policy/password-auth 配置文件
# vim /etc/authselect/custom/password-policy/password-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
2.2 让配置的 authselect 自定义配置认证生效
# authselect apply-changes
(注意:此步骤会刷新 /etc/authselect/system-auth 配置文件和 /etc/authselect/password-auth 配置文件)
步骤三:设置加密算法
# vim /etc/login.defs
将以下内容:
......
ENCRYPT_METHOD ......
......
修改为:
......
ENCRYPT_METHOD SHA512
......
(补充:这里以使用 SHA512 哈希算法加密密码为例)
[内容] Linux Umask 的设置
内容一:Umask 值的含义
如果 Umask 的值是 0022:
创建的新目录的默认权限是:777 – 022 = 755
创建的新文件的默认权限是:666 – 022 = 644
内容二:临时设置 Umask
2.1 查看当前 Umask 值
# umask
0022
2.2 临时设置 Umask 值
2.2.1 方法一:使用权限数字设置默认权限值
# umask 0002
2.2.2 方法二:使用权限标志设置默认权限值
# umask -S u=rwx,g=rwx,o=rw
内容三:永久设置 umask
3.1 给某个用户单独永久设置 Umask
3.1.1 切换到要永久设置 Umask 的用户
# su - root
(补充:这里以切换到 root 用户为例)
3.1.2 给某个用户单独添加 Umask 参数
# vim ~/.bashrc
添加以下内容:
......
umask 022
(补充:这里以将 Umask 设置为 022 为例)
3.1.3 让 Umask 设置生效
# source ~/.bashrc
3.2 全局永久设置 Umask 的方法
3.2.1 在 /etc/login.defs 配置文件里设置默认 Umask 参数
# vim /etc/login.defs
将以下内容:
UMASK ......
修改为:
UMASK 022
(补充:这里以将 Umask 的默认值设置为 022 为例)
3.2.2 在 /etc/profile 配置文件里设置全局 Umask 参数
# vim /etc/profile
将以下内容:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask ......
else
umask ......
fi
......
修改为:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
......
(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)
(注意:openSUSE & SLES 的 /etc/profile 配置文件里没有这些内容,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建这些内容)
或者:
# vim /etc/profile
添加以下内容:
......
umask 022
(补充:这里以将所有用户的全局 Umask 设置为 022 为例)
3.2.3 在 /etc/bashrc 配置文件里设置全局 Umask 参数
# vim /etc/bashrc
将以下内容:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask ......
else
umask ......
fi
......
修改为:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
......
(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)
(注意: openSUSE & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件和这些内容)
或者:
# vim /etc/bashrc
添加以下内容:
......
umask 022
(补充:这里以将所有用户的全局 Umask 设置为 022 为例)
(注意: openSUSE & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件)
3.2.4 让永久设置的 Umask 设置生效
# source /etc/bashrc ; source /etc/profile
(
注意:
1) 当永久设置的 Umask 生效后,用户必须要重新登录后才会刷新 Umask
2) 当 /etc/login.defs 配置文件、/etc/bashrc 配置文件和 /etc/profile 配置文件里设置的 Umask 值不一致时,会以 /etc/profile 文件里设置的为准
3) 当同一个文件里设置了多个 Umask 个值时,会以最后一个值为准
)
[命令] Linux 命令 iptables (设置防火墙日志)
内容一:iptables 防火墙开启日志的案例
1.1 案例一:让日志记录未匹配任何规则的 TCP 数据包,之后再将其丢弃的方法
在所有规则后面添加以下两条规则:
......
# iptables -A INPUT -i -p tcp -j LOG --log-prefix "IPTABLES TCP IN: "
# iptables -A INPUT -i -p tcp -j DROP
(补充:这里以记录进来的数据并将 IPTABLES TCP IN: 作为前缀保存日志为例)
1.2 案例二:让日志记录未匹配任何规则的 UDP 数据包,之后再将其丢弃的方法
在所有规则后面添加以下两条规则:
......
# iptables -A INPUT -i -p tcp -j LOG --log-prefix "IPTABLES TCP OUT: "
# iptables -A INPUT -i -p tcp -j DROP
(补充:这里以记录进来的数据并将 IPTABLES TCP OUT: 作为前缀保存日志为例)
1.3 案例三:让日志记录未匹配任何规则的 ICMP 数据包,之后再将其丢弃的方法
在所有规则后面添加以下两条规则:
......
# iptables -A INPUT -i -p tcp -j LOG --log-prefix "IPTABLES TCP ICMP: "
# iptables -A INPUT -i -p tcp -j DROP
(补充:这里以记录进来的数据并将 IPTABLES TCP ICMP: 作为前缀保存日志为例)
内容二:显示 iptables 防火墙日志的方法
# cat /log/var/message
[内容] Linux acl 权限
案例一:给某 1 个文件或目录添加 acl
1.1 给某 1 个文件或目录添加 1 个用户的 acl
# setfacl -m u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上给 zhumingyu 用户设置读和执行的 acl 权限为例)
(注意:给一个文件或目录添加了 acl 权限以后,更改权限的命令 chmod 对此文件或目录的操作可能会失效)
1.2 给某 1 个文件或目录添加 1 个组的 acl
# setfacl -m g:zhumingyu:r-x /var
(补充:这里以在 /var 目录上给 zhumingyu 组设置读和执行的 acl 权限为例)
(注意:给一个文件或目录添加了 acl 权限以后,更改权限的命令 chmod 对此文件或目录的操作可能会失效)
1.3 递归给某 1 个目录和目录里的所有内容添加 1 个 acl
# setfacl -Rm u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上递归给 zhumingyu 组设置读和执行的 acl 权限为例)
案例二:删除某 1 个文件或目录的 acl
2.1 删除某 1 个文件或目录 1 个用户的 acl
# setfacl -x u:zhumingyu /var
(补充:这里以在 /var 目录上删除 zhumingyu 用户的 acl 权限为例)
2.2 删除某 1 个文件或目录 1 个组的 acl
# setfacl -x g:zhumingyu /var
(补充:这里以在 /var 目录上删除 zhumingyu 组的 acl 权限为例)
2.3 删除某 1 个文件或目录的所有 acl
# setfacl -b /var
(补充:这里以在 /var 目录上删除所有 acl 权限为例)
2.4 递归删除某 1 个文件或目录的 acl
# setfacl -Rx u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上递归删除 zhumingyu 用户的 acl 权限为例)
2.5 递归删除某 1 个文件或目录的所有 acl
# setfacl -Rb /var
(补充:这里以在 /var 目录上递归删除所有 acl 权限为例)
案例三:显示某 1 个文件或目录的 acl
# getfacl /var
(补充:这里以显示 /var 目录的 acl 权限为例)
案例四:备份和还原某个文件或目录的 acl
4.1 备份某 1 个文件或目录的 acl
# getfacl -R /var > /acl.backup
(补充:这里以备份 /var 目录的 acl 权限为例)
4.2 还原某 1 给文件或目录的 acl
# setfacl --restore /acl.backup
(补充:这里以还原 /var 目录的 acl 权限为例)