CentOS 安全配置

  •  禁止进入单用户模式
  • 设置登录用户无操作超时自动退出
  • 只有wheel组的用户能切换至root用户
  • 禁止 root 直接登录
  • 设置 允许或禁止 登录的用户
  • 修改系统 SSH 登录端口
  • 设置同一个用户同时只能一个人登录
  • 用户锁定
  • 密码复杂度
  • 密码定期修改
  • 重设密码5次不能重复
  • 登录错误不能超过5次, 超过5次锁定20分钟

禁止进入单用户模式


 禁止直接进入单用户模式, 对 GRUB 设置密码; 修改/boot/grub/grub.conf 或者 /etc/grub.conf ( 是/boot/grub/grub.conf 链接文件);

明文方式

vim /boot/grub/grub.conf        # 或者 /etc/grub.conf;
    ... ...
    splashimage=(hd0,0)/grub/splash.xpm.gz
    password=123456             # 添加此行明文密码;
    hiddenmenu
    ... ...
# 再次启动登录到 GRUB 菜单页面时就会发现不能直接使用 "e" 命令编辑启动标签, 必须先使用 "p" 命令输入正确的密码后才能启动标签进行编辑;明文密码不是很安全;

MD5加密方式

# 首先生成md5加密密码, 输入两次密码后, 生成 md5 加密密码;
grub-md5-crypt
Password:
Retype password:
$1$aGKme/$OgQ743fikLz1vjrM4/XDG.

vim /boot/grub/grub.conf                             # 或者 /etc/grub.conf;
    ... ...
    splashimage=(hd0,0)/grub/splash.xpm.gz
    password=$1$aGKme/$OgQ743fikLz1vjrM4/XDG.        # 添加此行明文密码;
    hiddenmenu
    ... ...
# 再次启动登录到 GRUB 菜单页面时就会发现不能直接使用 "e" 命令编辑启动标签, 必须先使用 "p" 命令输入正确的密码后才能启动标签进行编辑;相对比较安全;

设置登录用户无操作超时自动退出


// 针对指定用户设置, 首先进入用户的家目录, 修改 .bash_profile 文件, 300秒;
cd /home/tian
ls -a
    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
vim .bash_profile
    ... ...
    export TMOUT=300
    
// 修改 /etc/profile 文件, 全局所有用户生效;
vim /etc/profile
    ... ...
    export TMOUT=300
source /etc/profile                // 声明生效, 或者退出终端重新登录生效;

只有wheel组的用户能切换至root用户


简介:

  在 Linux 中, wheel 组类似与一个管理员的组;

  通常在Linux下, 及时我们有系统管理员root的权限, 也不推荐用root用户; 一般情况下用普通用户就可以了; 在需要 root 权限执行一些操作时, 再使用 su 切换成为 root 用户; 但是任何用户只要知道了 root 的密码就可以通过su 登录root用户, 这无疑是一个安全隐患; 所以, 将普通用户加入到 wheel 组, 被加入的这个普通用户就成了管理员组内的用户, 但如果针对一些配置文件, 这个管理员组内成员与普通用户没有什么区别;

  根据应用实例不同, 应用wheel组的方法也不同, 对于服务器来说, 我们希望的是剥夺被加入到 wheel 组用户以外的普通用户通过su命令登录 root 的权利,(只有属于 wheel 组的用户才可以使用 su 登录 root) 这样就加强了系统的安全性;

// 配置 /etc/pam.d/su 配置文件, 开启 wheel 组;
vim /etc/pam.d/su
    ... ...
    auth           required        pam_wheel.so use_uid
    ... ...
// 修改/etc/login.defs 配置文件, 最后添加 只允许 wheel 组成员切换 root;
vim /etc/login.defs
    ... ...
    SU_WHEEL_ONLY yes
    
// 创建用户时添加 wheel 组
useradd -G wheel tian
// 或者给已存在用户添加wheel组
usermod -G wheel tian
// 查看用户的属组
groups tian
    tian : tian wheel

禁止 root 直接登录


// 修改ssh配置文件,开启 RermitRootLogin, 并改为 no;
vim /etc/ssh/sshd_config
    #LoginGraceTime 2m
    PermitRootLogin no
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
// 重启 sshd 服务
/etc/init.d/sshd restart

设置 允许或禁止 登录的用户


// 同样修改 ssh 配置文件, 添加 AllowUsers 或者 DenyUsers , 表示 允许登录 或者 拒绝登录;tian hao zeng rong 四个用户都在属于 wheel 组; 
vim /etc/ssh/sshd_config
    #LoginGraceTime 2m                #LoginGraceTime 2m
    PermitRootLogin no                PermitRootLogin no
    AllowUsers zeng rong            DenyUsers tian hao
    #StrictModes yes                #StrictModes yes
    #MaxAuthTries 6                    #MaxAuthTries 6
    #MaxSessions 10                    #MaxSessions 10
// 上面配置文件中左右的配置效果一样;
// 修改sshd配置文件;
vim /etc/ssh/sshd_config
    AllowUsers root@192.168.10.108        // 添加此行,允许root用户只能在192.168.10.108登录;
    AllowUsers root@192.168.10.108 admin   // 一行指定多个用户,用空格隔开,允许root用户只能在192.168.10.108登录,允许admin在任何地方登录;
// 以上两行不同时存在,介绍规则,以此类推;
// 重启sshd服务后生效;
[root@localhost ~]# /etc/init.d/sshd restart

// 还可以使用 pam 规则控制, 修改 /etc/pam.d/sshd 文件, 第一行添加一下内容, 允许/拒绝登录
vim /etc/pam.d/sshd
    auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
    // 或者
    auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
    
// 在/etc/ 目录下建立 sshusers 文件, 添加用户名, 一行为一个用户;
    // 上面配置文件中若是 allow , 文件中的用户是可以登录的;
    // 上面配置文件中若是 deny, 文件中的用户是不可以登录的;
vim /etc/sshusers
    tian
    zong

修改系统 SSH 登录端口


vim /etc/ssh/sshd_config        // 修改ssh配置文件
    13 #Port 22                 // 默认为22端口,可去掉注释直接修改,也可以如下行;
    14 Port 52353               // 修改为想要设置的端口号
  // 端口的取值范围是 0--65535; 1024以下是系统使用的端口, 我们可使用的端口是1024--65535;
  
// 没有关闭防火墙的情况下,修改端口后,一定要修改防火墙规则;否则重启了sshd服务后,远程连接不上;
// 添加防火墙规则,进入服务器,端口52353;
iptables -A INPUT -p tcp --dport 52353 -j ACCEPT  
// 添加防火墙规则,出服务器,端口52353;      
iptables -A OUTPUT -p tcp --sport 52353 -j ACCEPT 
// 保存添加的防火墙规则;       
/etc/init.d/iptables save
// 重启防火墙,添加配置生效;
/etc/init.d/iptables restart

// 重启sshd服务,修改ssh登录端口生效;
/etc/init.d/sshd restart    

设置同一个用户同时只能一个人登录


// 只能针对与非 root 用户
vim /etc/security/limits.conf
... ...
 50 tian             hard    maxlogins       1
 // 用户名                              最大同时连接数
 ... ...

用户锁定


// 使用 root 用户登录后执行解锁命令
// 查看锁定用户信息
pam_tally2 -u tian
    Login           Failures Latest failure     From
    tian                0    
//    用户              失败的次数

// 解锁
pam_tally2 -u tian --reset

密码复杂度


// 密码必须符合复杂度的要求: 字母, 数字, 特殊符号组成, 且长度大于8位
vim /etc/pam.d/system-auth
    # password    requisite   pam_cracklib.so try_first_pass retry=3 type=
    password    requisite     pam_cracklib.so retry=3 difok=3 minlen=8 lcredit=-1 dcredit=-1 ocredit=-1
    
// 参数
    * try_first_pass: 表明该模块首先应当使用前一个模块从用户那里得到的密码,如果该密码不通过,再提示用户输入新的密码;
    * debug:将调试信息写入日志;
    * type=xxx:当天价/修改密码时, 系统给出的缺省提示符是"New UNIX password:"以及"Retype UNIX password:", 而使用该参数可以自定义输入密码的提示符,比如制定type=your own word;
    * retry=N:定义登录/修改密码失败时,可以重试的次数;
    * Difok=N:定义新密码中必须有几个字符要与旧密码不同.但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;
    * minlen=N: 定义用户密码的最小长度;
    * dcredit=-N: 定义用户密码中必须包含多少个数字;
    * ucredit=-N: 定义用户密码中必须包含多个大写字母;
    * lcredit=-N: 定义用户密码中必须包含多少个小写字母;
    * ocredit=-N: 定义用户密码中必须包含多少个特殊字符(除数字,字母之外);    

密码定期修改


// 查看用户的定期修改的信息
chage -l tian
    Last password change                    : Mar 21, 2019
    Password expires                    : never
    Password inactive                    : never
    Account expires                        : never
    Minimum number of days between password change        : 0
    Maximum number of days between password change        : 99999
    Number of days of warning before password expires    : 7
    
// 配置用户密码定期修改
vim /etc/login.defs
    ... ...
    MAIL_DIR /var/spool/mail // 当你在创建用户的同时,再/var/spool/mail目录下创建mail文件;
    ... ...
    PASS_MAX_DAYS   90       // 用户密码不过期最多的天数;
    PASS_MIN_DAYS   0        // 密码修改之间的最小天数;
    PASS_MIN_LEN    8        // 密码最小长度;
    PASS_WARN_AGE   7        // 密码过期提前的警告天数;
    ... ...
    UID_MIN                   500   // 此处两行设置创建用户的最小uid和最大uid范围;
    UID_MAX                 60000
    ...    ...
    GID_MIN                   500   // 此处两行是设置GID;
    GID_MAX                 60000
    ... ...
    CREATE_HOME     yes     // 创建用户的时候是否创建家目录;
    UMASK       077         // 家目录的权限初始值;
    ... ...
    USERGROUPS_ENAB yes     // 当一个组只有一个用户存在的时候,删除用户的同时删除组;
    ENCRYPT_METHOD SHA512   // 指定password的机密方法;

重设密码5次不能重复


// remember=5 表示 5 次
vim /etc/pam.d/system-auth
    password    sufficient    pam_unix.so sha512 shadow nullok     try_first_pass use_authtok remember=5

登录错误不能超过5次, 超过5次锁定20分钟


// 查看系统中是否含有pam_tally2.so模块
find / -type f -name "pam_tally2.so"

// 修改配置文件, 设置密码错误 5 次, 锁定 20 分钟; 第二行添加以下内容;
vim /etc/pam.d/sshd
    auth   required     pam_tally2.so deny=5 unlock_time=12000

猜你喜欢

转载自www.cnblogs.com/haorong/p/10569688.html