linux 切换root账号_Linux 服务器的安全保障,看看这些

856c11b5580d6b8e83a032fa20c14f0d.png

作为一种开放源代码的操作系统,Linux 服务器以其安全,高效和稳定的显著优势而得以广泛应用,但是,若不加以控制,也不见得安全到哪里,这篇博文主要从账号安全控制、系统引导和登录控制的角度,来进行Linux系统安全优化。并且使用辅助工具来查找安全隐患,以便我们运维人员及时采取相应的措施。

安全方面确实需要注意的比较多,这篇博文从各个方面写了下来,比较琐碎,还需要耐心些看,根据需要来配置服务器的安全性。

一、基本安全措施

1、系统各种冗余账号,如“games”等,可直接删除,包括一些程序账号,若卸载程序后,账号没能被删除,则需要我们手动进行删除。

2、当服务器中的用户账号已经固定,不再进行更改,可以直接锁定账号配置文件,锁定以后,便不可以添加用户及更改用户密码:

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow #锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看是否锁定
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow #解锁文件

3、密码的有效期控制:为了降低密码被暴力破解或被猜出的风险,可以设置密码有效期来限制密码最大有效天数,对于密码已过期的用户,登录时则必须重置密码,否则将拒绝登录。

[root@localhost ~]# vim /etc/login.defs #适用于新建的用户
........................
PASS_MAX_DAYS 30 #将该配置项默认的值“99999”改为所期望的值,如30天。
[root@localhost ~]# chage -M 30 lv #适用于已经存在的用户
[root@localhost ~]# chage -d 0 zhangsan #张三下次登录必须修改密码

4、命令历史、自动注销

#适用于新登录用户
[root@localhost ~]# vim /etc/profile
................
HISTSIZE=200 #命令历史记录为200条
export TMOUT=600 #自动注销时间为600秒

#适用于当前用户
[root@localhost ~]# export HISTSIZE=200 #命令历史记录为200条
[root@localhost ~]# export TMOUT=600 #自动注销时间为600秒

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

二、用户切换与提权该怎么控制

1、su命令——切换用户

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,这样就有了安全隐患,为了避免这种情况,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。

实现过程如下:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证:

[root@localhost ~]# gpasswd -a admin wheel #添加授权用户admin
正在将用户“admin”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group #确认wheel组成员
wheel:x:10:lv,admin
[root@localhost ~]# vim /etc/pam.d/su

#%PAM-1.0
auth sufficient pam_rootok.so
...................
auth required pam_wheel.so use_uid #去掉此行开头的 # 号

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

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

使用su命令可以方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码。若想要切换到root用户,那么必须知道root用户的密码,对于生产环境中的Linux服务器来说,每多一个人知道root密码,其安全风险也就增加一分。所以sudo命令就由此而生了。

sudo命令的控制只需在/etc/sudoers配置文件中添加授权即可,需使用专门的visudo工具进行编辑,用vi也可以,但是保存时必须执行“ w!”命令来进行强制保存,否则系统将提示文件为只读文件而拒绝保存。

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

user MACHINE=COMMANDS

上述三个部分的具体含义如下:

  • user:直接授权指定的用户名,或采用“%组名”的形式(授权一个组中的所有用户)。

  • MACHINE:使用此配置文件的主机名称,这个部分主要是方便在多个主机间共用同一份sudoers文件,一般设置为localhost或实际的主机名即可。

  • COMMANDS:允许授权的用户通过sudo方式执行的特权命令,需填写命令的绝对路径,多个命令之间以逗号“ ,”进行分隔。

若现在的需求是jerry用户能够执行ifconfig命令,而wheel组的用户不需验证密码即可执行任何命令,可以进行以下修改:

[root@localhost ~]# visudo
.........................
jerry localhost=/sbin/ifconfig
%wheel ALL=NOPASSWD:ALL

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。如:允许用户user1、user2、user3在主机smtp、pop中执行rpm、yum命令:

[root@localhost ~]# visudo
.........................
User_Alias OPERATORS=user1,user2,user3 #定义用户名列表
Host_Alias MAILSVRS=smtp,pop #定义主机列表
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum #定义命令列表
OPERATORS MAILSVRS=PKGTOOLS #使定义的列表关联起来

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

sudo命令使用中注意事项:

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

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

三、终端及登录控制:

1、禁止root用户登录:login程序是通过读取 /etc/securetty文件,以决定允许root用户从哪些终端登录的,若要禁止root用户从tty5、tty6登录,只需将文件中对应的行注释掉即可:

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

2、禁止普通用户登录:

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

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

四、开关机安全控制

1、调整bios引导设置,给BIOS设置密码,并启用;2、禁止Ctrl+Alt+Del快捷键重启主机:

[root@localhost ~]# systemctl mask ctrl-alt-del.target #注销ctrl-alt-del服务
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/.
[root@localhost ~]# systemctl daemon-reload #重载systemd配置

若要重新开启ctrl-alt-del快捷键功能,只需执行以下即可:

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

3、限制更改GRUB引导参数:

[root@localhost ~]# grub2-mkpasswd-pbkdf2 #根据提示指定密码
输入口令:#设置密码为“111111”
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.F7169053E0A4C582D0D65D3181CBDF7306E56AAB4D5F6910A576FA42CAD66DE8A28019CC403E8A0A75C56B517325A10D63DF85BD018FEF345359677B403F9FE4.C1E18CA9FFB54BF3AAE7EC0A03B41DD384A5ECB38A42F651C9467442EB41F7319BF4B3C600EC8CC7562C3AF188DB77BDA5FDE4E978E72BD715A77F965CC9EFBD #经过加密的密码字符串
#为了防止更改grub菜单错误,所以先将相关文件进行备份
[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
[root@localhost ~]# vim /etc/grub.d/00_header
#将以下内容添加到文件中的最后
cat << EOF
set superusers="change"
password_pbkdf2 change grub.pbkdf2.sha512.10000.F7169053E0A4C582D0D65D3181CBDF7306E56AAB4D5F6910A576FA42CAD66DE8A28019CC403E8A0A75C56B517325A10D63DF85BD018FEF345359677B403F9FE4.C1E18CA9FFB54BF3AAE7EC0A03B41DD384A5ECB38A42F651C9467442EB41F7319BF4B3C600EC8CC7562C3AF188DB77BDA5FDE4E978E72BD715A77F965CC9EFBD
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的grub.cfg文件
Generating grub configuration file ...
/etc/grub.d/00_header: line 361: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-095dca7b09764ecf91e366075c160144
Found initrd image: /boot/initramfs-0-rescue-095dca7b09764ecf91e366075c160144.img
done

现在重启服务器,进入grub菜单时,按e将无法修改引导参数,若要修改,还需输入正确的grub用户名及密码(根据上面的操作,这里需要输入的用户名为“change”,密码为“111111”):

fb581477f299b4d2686502df95e618e1.png

杂七杂八的写了这么多,还有两个辅助工具没写,好了,这篇博文就此打住吧,两个辅助工具是弱口令扫描和端口扫描,还是写到另一篇博文里吧!可以点击下面的链接进行查看:https://blog.51cto.com/14154700/2408106

作者:warrent来源:https://blog.51cto.com/14154700/2408108

GOPS全球运维大会 2019 · 上海站,最想听的专场,你来做主

67083f928c8e04ab9fb5c457761efd67.png

扫描查看专场设置 ▼

1079302a9dcc042a71aa91f596363977.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA进阶开发之(异常类)

保姆级别的异常类教学&#xff08;附代码&#xff09; 目录 1、什么是异常&#xff1a; 2、 java语言中异常以什么形式存在的呢&#xff1f; 3、异常对应的现实生活中是怎样的&#xff1f; 4、异常处理机制 5、异常处理的具体方式 6、运行时异常编写程序时可以不处理 7…

bat文件打开一闪就没了_window文件夹目录树的创建

问题描述当我们的项目文件夹逐渐丰满&#xff0c;各类文件种类繁多&#xff0c;为了增强项目资料的自明性&#xff0c;便于资料管理和交接&#xff0c;有必要对项目文件进行汇总说明。要进行文件汇总&#xff0c;首先要提取文件的目录树。什么是目录树呢&#xff1f;在cmd黑窗口…

JAVA进阶开发之(异常练习题)

编写程序模拟用户注册&#xff1a; 1、程序开始执行的时候&#xff0c;提示用户输入“用户名”和“密码”信息 2、输入信息之后&#xff0c;后台JAVA程序模拟用户注册 3、注册时用户名要求长度在【6-14】之间&#xff0c;小于或者大于都表示异常 注意&#xff1a; 完成注册的…

boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)

前面几节Amy给大家分享了STE集合类型和枚举类型ENUM的测试数据&#xff0c;还没来得及看到的读者可以点击这里查看往期文章。之前看到一些平台上很多人咨询mysql是否提供布尔类型的问题。MySQL数据库确实提供布尔类型&#xff0c;此数据类型的关键字可以写成&#xff1a;布尔类…

netty cpu 占用率 高_Netty 是如何支撑高性能网络通信的?

作为一个高性能的 NIO 通信框架&#xff0c;Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求&#xff0c;作为综合性能最高的 NIO 框架 之一&#xff0c;Netty 可以完全满足不同领域对高性能通信的需求。…

JAVA进阶教学之(单链表数据结构)

什么是链表&#xff1a; 内存地址不连续&#xff0c;基本单元是节点对象Node&#xff0c;单链表尾结点默认是null 什么是链表中的节点&#xff1a; 节点是单链表中的基本单元&#xff0c;每一个节点都有两个属性 属性一&#xff1a;存储的数据 属性二&#xff1a;下一个节点的内…

eclipse maven打包_Maven 学习

1 Maven 简介Maven 使用项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09; 的概念&#xff0c;可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具2 Maven 的下载与IDE 的整合1 下载地址http://maven.apche.org2 Eclipse 整合Mave…

口琴膜片什么作用_2020年半音阶口琴选购攻略,让小白告别选择困难

为什么我会喜欢上口琴&#xff0c;其实是因为小时候看到《数码宝贝》里的阿和吹奏口琴&#xff0c;当时觉得很酷。不过家里条件很差&#xff0c;想要一个但是没提&#xff0c;后来工作买了一把铃木的。不过选口琴是一个很麻烦的事情&#xff0c;品类太多。在了解的过程中&#…

JAVA进阶教学之(集合)

目录 1、集合概述 2、集合存储的数据类型 3、不同的集合&#xff0c;底层都会对应不同的数据结构 4、集合继承结构图&#xff08;部分接口和类&#xff09; 5、Collection接口中常用的方法 6、Collection 集合迭代&#xff08;遍历&#xff09; 7、Collection的contains…

python中有数组吗_python有数组吗

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01;感悟&#xff1a; 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排序操作&#xff0c;这个是满足…

flutter天气_牛笔!自己用Flutter撸一个天气APP

这是一款简约风格的 flutter 天气项目&#xff0c;提供实时、多日、24 小时、台风路径以及生活指数等服务&#xff0c;支持定位、删除、搜索等操作。下图为主页效果&#xff1a;开始本身作为天气 APP&#xff0c;自定义绘制自然少不了&#xff0c;首页多样的背景效果&#xff0…

电脑远程凭证不工作:解决

电脑 远程桌面连接你的凭据不工作解决方法 方法/步骤 第一步我们首先需要知道远程桌面连接你的凭据不工作原因是&#xff0c;远程的电脑拒绝了访问&#xff0c;需要设置在远程的电脑上设置安全选项&#xff0c;按winR键&#xff0c;打开运行&#xff0c;输入“gpedit.msc”&a…

python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

历史传说&#xff1a; 在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候&#xff0c;在其中一根针上从下到上地穿好了由大到小的64片金片&#xff0c;这就是所谓的汉诺塔。不论白天黑夜…

转-递归教学

作者&#xff1a;帅地 链接&#xff1a;https://www.zhihu.com/question/31412436/answer/683820765 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 递归专题连续刷题半年&#xff0c;从小白到学会了套路&#xff…

android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

很多编程爱好者都编写过推箱子游戏编程吧&#xff0c;最近有好些朋友看见我以前的推箱子程序后&#xff0c;问我是怎么做的。我一直想把这个程序的整个过程写一份详细的东西&#xff0c;与各位编程爱好者分享&#xff0c;一直没空。正好现在放假了&#xff0c;而且离回家还有几…

c++ h cpp文件如何关联_C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件

SF.5: A .cpp file must include the .h file(s) that defines its interfaceSF.5: .cpp文件必须包含定义它接口的.h文件Reason(原因)This enables the compiler to do an early consistency check.这样可以让编译器尽早进行一致性检查。Example, bad(反面示例)// foo.h:void f…

JAVA进阶教学之(IO流)

目录 1、什么是IO流 2、流的分类 3、流的四大家族首领 4、java.io.*包下需要掌握的16个流 5、FileInputStream的实用方法 6、FileOutputStream的方法 7、文件复制/拷贝 8、FileReader的使用 9、FileWriter的使用 10、复制普通文本文件 11、BufferedReader带有缓冲区…

devtools安装_R语言如何批量安装软件包

1. 为什么要批量安装R语言包当你在新的环境下&#xff0c; 安装R语言时&#xff0c;你需要安装很多包&#xff0c;比如tidyverse&#xff0c;比如data.table&#xff0c;这里你可以写一个函数&#xff0c;将所有需要的包写进去&#xff0c;然后进行批量安装2. 程序如下&#xf…

JAVA进阶教学之(序列化和反序列化)

目录 1、序列化Serialize和反序列化的概念 2、序列化和反序列化的代码演示&#xff1a; 3、序列化多个对象&#xff08;序列化集合&#xff09; 4、transient关键字将部分属性不参与序列化 1、序列化Serialize和反序列化的概念 在内存和硬盘的数据交互过程中&#xff0c;将…

java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...

引言MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c…