千家信息网

多方面保证Linux服务器的基本系统安全?

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,博文目录一、账号安全控制二、基本安全措施三、用户切换与提权四、开关机安全控制五、终端及登录控制一、账号安全控制用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入
千家信息网最后更新 2024年09月22日多方面保证Linux服务器的基本系统安全?

博文目录
一、账号安全控制
二、基本安全措施
三、用户切换与提权
四、开关机安全控制
五、终端及登录控制

一、账号安全控制

用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux操作系统中提供了多种机制来确保用户账号的正当、安全使用。

二、基本安全措施

1、系统账号

各种非登录用户账号中,还有相当一部分是很少用到的,如"games"等,这些用户账号可以视为冗余账号,直接删除即可,包括一些程序账号,若卸载程序后,账号没能被删除,则需要我们手动进行删除。

对于Linux服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。示例如下:

1)usermod命令锁定账户:

[root@centos01 ~]# usermod -L zhangsan   [root@centos01 ~]# passwd -S zhangsan   zhangsan LK 2019-11-22 0 99999 7 -1 (密码已被锁定。)[root@centos01 ~]# usermod -U zhangsan   [root@centos01 ~]# passwd -S zhangsan     zhangsan PS 2019-11-22 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

2)passwd命令锁定账户:

[root@centos01 ~]# passwd -l zhangsan锁定用户 zhangsan 的密码 。passwd: 操作成功[root@centos01 ~]# passwd -S zhangsan   zhangsan LK 2019-11-22 0 99999 7 -1 (密码已被锁定。)[root@centos01 ~]# usermod -U zhangsan [root@centos01 ~]# passwd -S zhangsan    zhangsan PS 2019-11-22 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

2、锁定账户配置文件

如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用chattr命令,分别结合"+i" "-i"选项来锁定、解锁文件,使用lsattr命令可以查看文件锁定情况。示例如下:

[root@centos01 ~]# chattr +i /etc/passwd /etc/shadow [root@centos01 ~]# lsattr /etc/passwd /etc/shadow  ----i----------- /etc/passwd----i----------- /etc/shadow[root@centos01 ~]# chattr -i /etc/passwd /etc/shadow [root@centos01 ~]# lsattr /etc/passwd /etc/shadow---------------- /etc/passwd---------------- /etc/shadow

在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登录Shell、宿主目录等属性信息。

3、密码安装控制

为了降低密码被第三方破解或被猜出的危险性,可以设置密码有效期来限制密码最大有效天数,对于密码已过期的用户,登录时则必须重置密码,否则将拒绝登录。

[root@centos01 ~]# vim /etc/login.defs   ........................   PASS_MAX_DAYS   10    [root@centos01 ~]# chage -d 5 zhangsan  [root@centos01 ~]# cat /etc/shadow zhangsan:$6$cigVri.K$wME7C78i0uvZpCSBzpYdoKcuxX.QkiLw7/3bsEZz5/IZWm9jZtT6ExSzmiwa0eFqjGQuuSza8CX7TeITQQNYJ/:5:0:99999:7:::[root@centos01 ~]# chage -d 0 zhangsan   更改用户 zhangsan 的密码 。为 zhangsan 更改 STRESS 密码。(当前)UNIX 密码:   新的 密码:重新输入新的 密码:      passwd:所有的身份验证令牌已经成功更新。[zhangsan@centos01 ~]$

4、命令历史、自动注销

Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。示例如下:

[root@centos01 ~]# export HISTSIZE=5  [root@centos01 ~]# history       6  chage -d 0 zhangsan    7  export HISTSIZE=10    8  history     9  export HISTSIZE=5   10  history[root@centos01 ~]# vim .bash_logout   # ~/.bash_logouthistory -cclear[root@centos01 ~]# export TMOUT=500  

需要注意的是,当正在执行程序代码编译、修改系统配置等时间较长的操作时,应避免设置TMOUT变量。必要时可以执行"unset TMOUT"命令取消TMOUT变量设置。

三、用户切换与提权

Linux系统为我们提供了su、sudo两种命令。

  • su命令:主要用来切换用户;
  • sudo命令:用来提升执行权限;

1、su命令--切换用户

su命令可以使用的选项如下:

  • -:单纯使用-,如"su -"代表使用login-shell的变量文件读取方式来登录系统;若没有指定用户名,则代表切换为root的身份。

  • -l:与"-"类似,但后面需要加想要切换的使用者账号,也是login-shell的方式。

  • -m:表示使用目前的环境设置,而不读取新使用者的环境变量的配置文件。

  • -c:仅进行一次指令,所以-c后面需要加上指令,命令格式为:su - -c "head -n 3 /etc/shadow",双引号内的就是要执行的命令。

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。当然,切换时需要对目标用户的密码进行验证(从root用户切换为其他用户时除外)。
默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证。启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令,尝试进行切换时将提示"拒绝权限",从而将切换用户的权限控制在最小范围内。

示例如下:

[zhangsan@centos01 ~]$ su       密码:[root@centos01 zhangsan]# cd[root@centos01 ~]#[zhangsan@centos01 ~]$ su --login密码:上一次登录:六 11月 23 07:53:15 CST 2019pts/2 上[root@centos01 ~]#[root@centos01 ~]# su zhangsan   [zhangsan@centos01 root]$ cd[zhangsan@centos01 ~]$[root@centos01 ~]# gpasswd -a zhangsan wheel   正在将用户"zhangsan"加入到"wheel"组中[root@centos01 ~]# grep wheel /etc/group    wheel:x:10:test,radmin,zhangsan[root@centos01 ~]# vim /etc/pam.d/su    #%PAM-1.0auth            sufficient      pam_rootok.soauth            required        pam_wheel.so use_uidi[lisi@centos01 ~]#$su -root        密码:su:拒绝权限                 

使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看。

2、sudo命令--提升执行权限

通过su命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登录密码。若要从普通用户切换为root用户,必须知道root用户的密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分。

sudo命令的控制只需在/etc/sudoers配置文件中添加授权即可,文件的默认权限为440,需要使用专门的visudo工具进行编辑。虽然也可以用vim进行编辑,但保存时必须执行":wq!"命令来强制操作,否则系统将提示为只读文件而拒绝保持。

配置文件/etc/sudoers中,授权记录的基本配置格式如下所示:

user MACHINE=COMMANDS

授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令,各部分的具体含义如下:

  • 用户(user):直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)。
  • 主机(MACHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共有同一份sudoers文件,一般设为localhost或者时间的主机名即可。
  • 命令(COMMANDS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。

典型的sudo配置记录中,每行对应一个用户或组的sudo授权配置。若要授权用户zhangsan能够执行ifconfig命令来修改IP地址,而wheel组的用户无需验证密码即可执行任何命令。示例如下:

[root@centos01 ~]# vim /etc/sudoers  root    ALL=(ALL)       ALLzhangsan localhost=/sbin/ifconfig %wheel  ALL=NOPASSWD:ALL:wq![zhangsan@centos01 ~]$ sudo ifconfig ens32 192.168.100.20 255.255.255.0   [sudo] zhangsan 的密码:

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。示例如下:

[root@centos01 ~]# vim /etc/sudoers  .........................    User_Alias      OPERATORS=lisi,wangwu,zhaoliu    Host_Alias      MAILSVRS=smtp,pop            Cmnd_Alias      PKGTOOLS=/bin/rpm,/usr/bin/yum   OPERATORS       MAILSVRS=PKGTOOLS    

sudo配置记录的命令部分可以使用通配符 " * " 、取反符号" !",当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。。例如:授权用户zhangsan可以执行/sbin/目录下除了ifconfig、route以外的其他命令,并且启用日志记录:

[root@centos01 ~]# vim /etc/sudoers   .........................zhangsan        localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route Defaults logfile = "/var/log/sudo"    

sudo命令使用中注意事项:

1、第一次通过sudo命令执行命令时,必须以用户自己的密码进行验证,此后再次执行sudo命令,只要与前一次sudo操作的间隔时间不超过5分钟,则不需重复验证。

2、若想要查看用户自己获得哪些sudo授权,可以执行" sudo -l",若是某个用户的sudo权限列表中出现了(ALL) ALL字样,则表示授权有误,此时,该用户拥有所有命令的执行权限。若visudo命令编辑的授权列表没有错误的话,就需要看看是否将该用户添加到了wheel组中,并且启用了pam_wheel认证。

四、开关机安全控制

通常大部分服务器是通过远程登录的方式来进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、安全的管控制度时,如何防止其他用户的非授权介入就成为必须重视的问题。

1、调整BIOS引导设置

1)将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
2)禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项为"Disabled"。
3)将BIOS的安全级别改为"setup",并设置好管理密码,以防止未授权的修改。

2、禁止ctrl+alt+del快捷键重启

[root@centos01 ~]# systemctl mask ctrl-alt-del.target[root@centos01 ~]# systemctl daemon-reload

若要重新开启ctrl-alt-del快捷键功能,示例如下:

[root@centos01 ~]# systemctl unmask ctrl-alt-del.target Removed symlink /etc/systemd/system/ctrl-alt-del.target.[root@centos01 ~]# systemctl daemon-reload 

3、限制更改GRUB引导参数

当Linux系统在启动时,到了下面这个界面,按"e"就可以进入GRUB引导菜单,并且通过修改配置后,无须任何密码就可以进入系统环境中,这个漏洞显然对服务器是一个极大的漏洞,那么可以执行以下操作,为grub菜单设置一个密码,只有提供正确的密码才被允许修改引导参数:

[root@centos01 ~]# grub2-mkpasswd-pbkdf2   输入口令:Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.7CC8455D40E48C538EFD1A8541FD31AA47AE61F4F39BD9F6E54994208810EA376BFBB96C3DDC0890B9F5109F83D2C7DEDBEACFD82C50790663396800FB3A3D3B.ECEF6AB02079526822C2722ADC8E4427783F30C0CDA26BC930FA067F10C5D9A583DA5861D4546F2976FCEB037A3F3BEB0164C8748F1D40791656389DC72EC31B[root@centos01 ~]# cp /etc/grub.d/00_header   /etc/grub.d/00_header.bak[root@centos01 ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak[root@centos01 ~]# vim /etc/grub.d/00_header   cat <Generating grub configuration file .../etc/grub.d/00_header.bak: line 360: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-2b580d1a2e8348b8aa9f78be11137b41Found initrd image: /boot/initramfs-0-rescue-2b580d1a2e8348b8aa9f78be11137b41.imgdone

现在重启服务器,进入grub菜单时,按E键将无法修改引导参数,若要修改,还需输入正确的grub用户名及密码:

五、终端及登录控制

1、禁止root用户登录

在Linux系统中,login程序会读取/etc/securetty文件,以决定允许root用户从哪些终端(安全终端)登录系统。若要禁止root用户从指定的终端登录,只需从该文件中删除或者注释掉对应的行即可。例如,若要禁止root用户从tty5、tty6登录,可以修改/etc/securetty文件,将tty5、tty6行注释掉:

[root@centos01 ~]# vim /etc/securetty  .........................  #tty5#tty6

2、禁止普通用户登录

当服务器正在进行备份或调试等维护工作时,可能不希望再有新用户登录系统的话,这时候,可以建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制)。这个方法只建议在服务器维护期间临时使用,当手动删除/etc/nologin文件或者重新启动主机后,即可恢复正常,如下:

[root@centos01 ~]# touch /etc/nologin

------ 本文至此结束,感谢阅读 ------

用户 命令 密码 文件 登录 账号 系统 安全 切换 配置 控制 服务器 服务 权限 主机 示例 环境 程序 终端 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器安装数据库是要干嘛的 六安出入库软件开发平台 服务器有两个系统怎么快捷切换 网络安全新技术对疫情的应用 广西东塔安全网络安全培训 计算机三级网络技术apk 电大数据库应用考试题及答案 网络安全小卫士演讲视频 网络安全和信息化是互相 莆田网络技术推广平台 网络安全法个人信息保护部分 服务器 445端口 软件开发培训咨询电话 web服务器怎么知道网址 数据库 ppt 信息技术 华为软件开发工具下载 计算机网络安全与策略的预期 山东中职计算机网络技术教材 app抢单软件开发高手 肥东有私人网络技术员吗 查询数据库用户创建的时间 哪里的软件开发好知聚顶科技 学软件开发需要学历吗 娄底软件开发专业技校 数据库 视图 网络安全形势分析讨论 做软件开发成本怎么算 大学生如何避免网络安全隐患 网络安全办官网 国家为什么高度重视网络安全工作
0