linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录

1.

限制su命令切换到root用户

不希望所有用户都可以通过su命令切换身份,

启用pam_wheel认证模块
vim /etc/pam.d/su
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第1张图片
取消注释以强制用户成为组根的成员
才能使用“su”。如果您想使用默认“root”以外的组,也可以在这行的末尾添加“group=foo”(但这可能会有拒绝“root”用户的副作用,除非她是“foo”的成员或前面明确允许的,例如“SU_WHEEL_ONLY"). (替换来自登录名.defs)

去掉这一行的#
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第2张图片

这样执行su命令的用户都将受到限制,只有root组中的成员才有权限执行su命令。

linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第3张图片
如果想让某个组中的成员有su root的权限,可以像上图这样改,这样ubuntu组中的成员都有权限执行su命令。

当不属于root用户组、ubuntu用户组的成员使用su命令切换到root时会被拒绝,即使输入了正确的root密码。


2.

设置其他用户不能使用sudo passwd root修改root密码
root~# visudo 或者 vim /etc/sudoers
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第4张图片
像上图这样给那么多ALL=(ALL:ALL) ALL权限是非常危险的行为
意味着这些用户都能轻松通过sudo passwd root修改root的密码

主机=(用户:用户组) 命令
ALL=(ALL:ALL) ALL 的意思就是被授权的用户,在所有的主机、获取所有用户|用户组的身份、使用所有的sudo命令。

限制权限可以像下图这样修改:
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第5张图片

一般来说允许的sudo命令设置的越准确越安全,就是具体需要哪些命令,ALL=要的命令,而不是直接授权所有。
设置免密并且禁止某操作:ALL=NOPASSWD:ALL,!/usr/bin/passwd root

/etc/sudoers文件
这是一个只读文件,可以用vim /etc/sudoers来修改并且使用:wq!退出,不过更推荐root权限下使用visudo命令来打开这个文件,退出保存的时候还能检测是否有格式错误。

这个文件里可以授权用户,也可以授权用户组,以%开头的是用户组。
这个文件其实可以设置的东西有很多,这里就不说了。


su
sudo
sudo su

su命令的主要作用是让你可以在已登录的会话中切换到另外一个用户。
su命令经常被用于切换到超级用户或root用户,同样也可以切换到任意用户。
su root 需要输入root用户密码,别的也一样。
su root切换用户后仍然保持原用户的环境,
如果使用su - root,则是创建一个新的环境(由root用户~/.bashrc文件所设置的环境),相当于使用root用户正常登录(从登录屏幕登录)。

sudo命令需要输入当前用户的密码,当然可以像上面设置的那样设置NOPASSWD来免密切换root。

就安全而言,sudo命令更好,不需要共享root的密码。

两个命令之间的另外一个区别是其默认行为。
sudo命令只允许使用提升的权限运行单个命令,而su命令会启动一个新的shell,同时允许使用root权限允许尽可能多的命令,直到明确退出登录。

尽管sudo是以目标用户(默认root)的身份执行命令,但是会使用sudoers所配置的用户名来记录是谁执行命令。而su命令是无法直接跟踪记录用户切换到root用户之后执行了什么操作。

当你使用sudo su的时候,不用输入密码就可以获得root权限。


最后还是建议可以不启用root账户,其实sudo su已经够用


为了系统安全,禁用root用户是最安全的。
并且ssh登录不再使用密码,而是使用密钥来直接远程登录。
sshd提供的另外一种安全登录方式。
需要在本地生成密钥对,然后把密钥对中的公钥传到服务器。
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第6张图片
本地安全的话就一直回车回车就行。
然后会在上面所说的目录里生成公钥和私钥。

复制公钥的内容到服务器上,cd 隐藏目录 cd .ssh 目录, 然后nano回车,加上复制的公钥,
ctrl X退出,Y保存,回车
然后指定用户、ssh链接设置里绑上私钥
linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录_第7张图片
这样就可以不通过密码进行SSH远程连接了。
再修改sshd_config文件,
#禁用密码登录
PasswordAuthentication no
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes
#指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys

重启SSH服务之前建议多保留一个会话,万一有问题

你可能感兴趣的:(linux,linux)