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.gzpassword=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.gzpassword=$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 tiantian : 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 tianChanging shell for tian.New shell [/bin/bash]: /sbin/nologin    Shell changed.
// 方法四 -- 直接在 /etc/passwd 文件中进行修改
// 查看
grep tian /etc/passwdtian:x:502:502::/home/tian:/sbin/nologin// 锁定长期不使用的账号
// 方法一, 密文前增加 2 个 "!" ; 使用 passwd -u 进行解锁
passwd -l
// 方法二, 密文前增加 1 个 "!" ; 使用 passwd -U 进行解锁; 两次执行可解上面的锁定
usermod -L
// 查看
passwd -S tiantian LK 2019-03-20 0 60 7 -1 (Password locked.)        // 已锁定;

禁止 root 直接登录


// 修改ssh配置文件,开启 RermitRootLogin, 并改为 no;
vim /etc/ssh/sshd_config#LoginGraceTime 2mPermitRootLogin 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 2mPermitRootLogin no                PermitRootLogin noAllowUsers zeng rong            DenyUsers tian hao#StrictModes yes                #StrictModes yes#MaxAuthTries 6                    #MaxAuthTries 6#MaxSessions 10                    #MaxSessions 10
// 上面配置文件中左右的配置效果一样;
// 修改sshd配置文件;
vim /etc/ssh/sshd_configAllowUsers 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/sshdauth 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/sshuserstianzong

修改系统 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 tianLogin           Failures Latest failure     Fromtian                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/shadowtian:!!:17976:0:99999:7:::
chage -M 60 tian
grep tian /etc/shadowtian:!!:17976:0:60:7:::

密码定期修改


// 查看用户的定期修改的信息
chage -l tianLast password change                    : Mar 21, 2019Password expires                    : neverPassword inactive                    : neverAccount expires                        : neverMinimum number of days between password change        : 0Maximum number of days between password change        : 99999Number 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-authpassword    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/sshdauth   required     pam_tally2.so deny=5 unlock_time=12000

CentOS 安全配置相关推荐

  1. CentOS下配置VNCServer,重启服务仍然生效

    CentOS下配置VNC Server,重启服务,配置仍然生效的方法: 本文前提:系统已安装好gnome桌面,如果没有请执行下面的命令安装即可. yum groupinstall "Desk ...

  2. centos oracle 服务自动启动,CentOS下配置Oracle 11gR2为系统服务自动启动

    CentOS下配置Oracle 11gR2为系统服务自动启动 CentOS下配置Oracle 11gR2为系统服务自动启动 为什么80%的码农都做不了架构师?>>> PS:在Wind ...

  3. linux vnc服务重启,CentOS下配置VNCServer,重启服务仍然生效

    CentOS下配置VNC Server,重启服务,配置仍然生效的方法: 本文前提:系统已安装好gnome桌面,如果没有请执行下面的命令安装即可. yum groupinstall "Desk ...

  4. CentOS 7配置LNMP开发环境及配置文件管理详解

    本篇文章主要介绍了CentOS 7配置LNMP开发环境及配置文件管理,详细的介绍了MySQL 5.6,PHP 5.6,Nginx的安装与配置,有兴趣的可以了解一下. 安装并配置MySQL 5.6 从C ...

  5. Dockerfile文件创建centos:7,配置JDK8的环境变量,与运行springboot的jar包,的镜像

    DockerFile文件创建centos:7 配置JDK8的环境变量 与运行springboot的jar包 准备文件 一:官网下载Linux的JDK包 https://www.oracle.com/j ...

  6. 为CentOS 6 配置本地YUM源

    在网上找了很多为CentOS 6配置本地YUM源的方法,其中有很多是与网络相关的,我只想配个自己用的,结果就发现这个方法比较简单实用,就转过来了. 环境:CentOS 6.0 默认的yum是以网络来安 ...

  7. 项目七samba服务器,Centos 7 配置Samba服务器

    Centos 7配置Samba服务器 1.Centos 7版本,内核: Linux 3.10.0-514.el7.x86_64 [root@tommy /]# hostnamectl #查看版本号 O ...

  8. 在CentOS上配置Percona XtraDB集群(Percona XtraDB Cluster)

    原作者:Percona官网 翻译&转载来源:https://www.percona.com/doc/percona-xtradb-cluster/LATEST/howtos/centos_ho ...

  9. Linux系统CentOS 7配置Spring Boot运行环境

    从阿里云新买的一台Linux服务器,用来部署SpringBoot应用,由于之前一直使用Debian版本,环境配置有所不同,也较为繁琐,本文主要介绍CentOS下配置SpringBoot环境的过程 新建 ...

最新文章

  1. [推荐]在JavaScript中实现命名空间
  2. ajax得到session,Ajax如何使用Session
  3. 00后社交突围:今天你CDX了吗?
  4. IOS基础之愤怒的小方块
  5. c++父类和子类转化致命的代码错误
  6. 解决python 提示 SyntaxError: Missing parentheses in call to 'print'
  7. python 线程池用法_python 线程池 ThreadPoolExecutor 的用法
  8. [PyTorch] 安装
  9. 站在物联网风口,如何抢滩千亿级智能家居市场?
  10. leetcode-680-Valid Palindrome II
  11. php qr生成二维码
  12. YANG-SUITE安装步骤
  13. PHP 图片处理类 错误处理方法:
  14. Scrypt哈希算法简介
  15. 李阳疯狂英语助教工作总结
  16. Eclipse下载、安装、配置教程
  17. 日订单超1000万,美团外卖是如何设计广告推送系统的?
  18. C# 实现 简体<--->繁体 的互相转换
  19. 学Java可以不学算法吗-学java有必要学算法吗?
  20. 强化学习之Q-learning算法

热门文章

  1. gz文件解压命令 linux_linux常用命令和文件上传(FZ)、解压、配置环境变量(JDK)
  2. 高会的计算机模块,2017高会《职称计算机》模块精讲:写字板和便笺
  3. MySQL约束不起作用怎么解决_MySQL中的CHECK约束不起作用
  4. 二次元老婆生成器,想要什么样的老婆就靠自己勤劳的双手啦
  5. 通过学历造假获得面试机会,并成功拿到 Offer,这样的操作你认可吗?
  6. Java版的开源 Flappy Bird 复刻项目
  7. 数据库界的Swagger:一键生成数据库文档!你不了解一下?
  8. Nginx配置中一个不起眼字符/的巨大作用,失之毫厘谬以千里
  9. 每日一皮:离职时候的项目交接...
  10. 华北电力大学保定校区计算机专业,华北电力大学保定校区本科计算机科学与技术_华北电力大学保定校区本科计算机科学与技术简介-查字典学校网...