Linux安全架构详细教程

图片[1]-Linux安全架构详细教程-不念博客
Linux安全架构

一、SSH相关

1、只允许某用户从指定IP地址登陆

sed -i '$a AllowUsers CR@192.168.1.12 root@192.168.1.12' /etc/ssh/sshd_config ;\
systemctl restart sshd

2、设置SSH空闲超时退出时间

/etc/ssh/sshd_config

#ClientAliveInterval 0
#ClientAliveCountMax 3
修改成
ClientAliveInterval 30    #(每30秒往客户端发送会话请求,保持连接)
ClientAliveCountMax 3     #(去掉注释即可,3表示重连3次失败后,重启SSH会话)

systemctl restart sshd

3、 限制登陆访问尝试的验证次数

MaxAuthTries 20

4、允许root用户登录

sed -i 's/PermitRootLogin no/PermitRootLogin yes/g'  /etc/ssh/sshd_config ;\
systemctl restart sshd

5、设置登录方式

# AuthorizedKeysFile   .ssh/authorized_keys   //公钥公钥认证文件
# PubkeyAuthentication yes   //可以使用公钥登录
# PasswordAuthentication no  //不允许使用密码登录

6、禁止使用空白密码用户访问

PermitEmptyPasswords no

7、SSH登录事件通知至ntfy

/etc/pam.d/sshd

session optional pam_exec.so /usr/local/bin/ntfy-ssh-login.sh

ntfy-ssh-login.sh

#!/bin/bash
TOPIC_URL=http://test.curiouser.top:18070/ssh-notify
if [ "${PAM_TYPE}" = "open_session" ]; then
  curl -H tags:warning -H prio:high -d "SSH login to $(hostname): ${PAM_USER} from ${PAM_RHOST}" "${TOPIC_URL}"
fi

部署私有的ntfy

ntfy_server:
  image: 'binwiederhier/ntfy'
  restart: always
  container_name: ntfy_server
  command: serve --config /etc/ntfy/server.yml --cache-file /var/cache/ntfy/cache.db --listen-http :18070
  ports:
    - '18070:18070'
  volumes:
    - '/data/ntfy/data:/var/cache/ntfy'
    - '/data/ntfy/config:/etc/ntfy'
    - '/data/ntfy/data:/var/lib/ntfy/'

二、OS系统设置

1、访问控制配置文件的权限设置

chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
chmod 0644 /etc/group
chmod 0644 /etc/passwd
chmod 0400 /etc/shadow
chmod 0400 /etc/gshadow

2、密码安全策略

/etc/pam.d/password-auth

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=  difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
  • difok= 定义新密码中必须要有几个字符和旧密码不同
  • minlen=新密码的最小长度
  • ucredit= 新密码中可以包含的大写字母的最大数目。-1 至少一个
  • lcredit=新密码中可以包含的小写字母的最大数
  • dcredit=定新密码中可以包含的数字的最大数目

注:这个密码强度的设定只对”普通用户”有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功

3、用户帐号限制

  • /etc/login.defs配置文件是设置用户帐号限制的文件,可配置密码的最大过期天数,密码的最大长度约束等内容。
  • 该文件里的配置对root用户无效。此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。
  • /etc/login.defs 文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。
设置项含义
MAIL_DIR /var/spool/mail创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。
PASS_MAX_DAYS 99999密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
PASS_MIN_DAYS 0表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。
PASS_MIN_LEN 5指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
PASS_WARN_AGE 7指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
UID_MIN 500指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。
UID_MAX 60000指定用户最大的 UID 为 60000。
GID_MIN 500指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。
GID_MAX 60000用户 GID 最大为 60000。
CREATE_HOME yes指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。
UMASK 077用户主目录的权限默认设置为 077。
USERGROUPS_ENAB yes指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。
ENCRYPT_METHOD SHA512指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。

4、用户登录次数限制

5、系统超时退出

# 600表示超过600秒无操作即断开连接
echo "export TMOUT=600" >> /etc/profile
source /etc/profile

三、shell安全

1、历史命令安全

禁止shell的history记录密码相关的环境变量

Bash

# 开起不记录模式
set +o history
# 关闭不记录模式
set -o history

ZSH

setopt HIST_IGNORE_SPACE

# 之后命令前面加一个空格即可不被记录
 command
© 版权声明
THE END