CentOS 安全配置
- 忘记 root 密码
- 禁止进入单用户模式
- 减少开放终端个数
- 设置登录用户无操作超时自动退出
- 只允许 root登录, 禁止其他用户登录
- 只有wheel组的用户能切换至root用户
- 修改 账户 密码
- 系统账号管理
- 禁止 root 直接登录
- 设置 允许或禁止 登录的用户
- 修改系统 SSH 登录端口
- 设置同一个用户同时只能一个人登录
- 用户锁定
- 密码复杂度
- 命令设置密码有效期
- 密码定期修改
- 重设密码5次不能重复
- 登录错误不能超过5次, 超过5次锁定20分钟
忘记 root 密码
// 方法一:GRUB引导方式 没有设置 grub 密码情况下直接进入, 设置的话, 输入密码进入; 1. 重启服务器,开机进入启动界面后,按“e”或者回车键,进入GRUB启动菜单; 2. 按“e”进入编辑模式,上下键选择第2行; 3. 按“e”进入kernel编辑命令行,按“空格”再输入single或“s”或“1”,回车保存后,再按“b”启动系统; 4. 启动系统后不需要输入管理员密码,进入单用户模式,可直接输入passwd命令修改管理员密码; // 方法二:lilo引导方式 1. 重启服务器,出现LILO提示时,键盘输入 linux single; 2. 回车进入单用户模式; 3. 修改/etc/passwd文件清空root密码 或者 passwd直接更改密码; // 方法三: 使用Linux启动软盘引导 1. 出现boot后,输入linux single 回车; 2. 进入单用户模式; 3. 修改root密码;
禁止进入单用户模式
禁止直接进入单用户模式, 对 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" 命令输入正确的密码后才能启动标签进行编辑;相对比较安全;
减少开放终端个数
// 编辑 /etc/init/start-ttus.conf 及 /etc/sysconfig/init 配置文件 // 设置所有用户仅可以从 tty1 , tty2 , tty3 三个终端登录 vim /etc/init/start-ttys.conf ... ... env ACTIVE_CONSOLES=/dev/tty[1-3] ... ... vim /etc/sysconfig/init ... ... # What ttys should gettys be started on? ACTIVE_CONSOLES=/dev/tty[1-3] ... ... // 重启后, 仅能从 tty1 , tty2 , tty3 登录
设置登录用户无操作超时自动退出
// 针对指定用户设置, 首先进入用户的家目录, 修改 .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 // 声明生效, 或者退出终端重新登录生效;
只允许 root登录, 禁止其他用户登录
// 使用场景: 系统需要升级等, 只允许 root 用户操作, 暂时进制其他用户登录, // 操作步骤: 使用 root 用户在 /etc/ 目录下创建 nologin 文件即可; vim /etc/nologin // 可为空, 也可以写入登录不上回显提示的内容; Sorry, the system is under health examination, please try again in an hour ... ... // 使用用户 tian 登录测试 Connecting to 192.168.9.27:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Sorry, the system is under health examination, please try again in an hour ... ...
只有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
修改 账户 密码
// 一 : passwd 直接修改 passwd tian Changing password for user tian. New password: Retype new password: passwd: all authentication tokens updated successfully. // 二 : 重定向 echo "666666" | passwd --stdin tian
系统账号管理
// 设置非登录用户的 shell 设置为 /sbin/nologin // 方法一 usermod -s /sbin/nologin tian // 方法二 chsh -s /sbin/nologin tian // 方法三 chsh tian Changing shell for tian. New shell [/bin/bash]: /sbin/nologin Shell changed. // 方法四 -- 直接在 /etc/passwd 文件中进行修改 // 查看 grep tian /etc/passwd tian:x:502:502::/home/tian:/sbin/nologin // 锁定长期不使用的账号 // 方法一, 密文前增加 2 个 "!" ; 使用 passwd -u 进行解锁 passwd -l // 方法二, 密文前增加 1 个 "!" ; 使用 passwd -U 进行解锁; 两次执行可解上面的锁定 usermod -L // 查看 passwd -S tian tian LK 2019-03-20 0 60 7 -1 (Password locked.) // 已锁定;
禁止 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 -M 天数 用户名 // 方法一 passwd -x 天数 用户名 // 方法二 // 操作 grep tian /etc/shadow tian:!!:17976:0:99999:7::: chage -M 60 tian grep tian /etc/shadow tian:!!:17976:0:60:7:::
密码定期修改
// 查看用户的定期修改的信息 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的机密方法;
// 要求用户下次登录时修改密码
chage -d 0 用户名
重设密码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
作者:TZHR —— 世间一散人
出处:https://www.cnblogs.com/haorong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明