ssh远程服务端口修改及sudo权限的配置
[C:\~]$ ssh yidong@192.168.8.240 2023
Connecting to 192.168.8.240:2023...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Thu Apr 6 10:13:22 2023 from 192.168.8.11
[yidong@zabbix-agent ~]$
[yidong@zabbix-agent ~]$
[yidong@zabbix-agent ~]$
[yidong@zabbix-agent ~]$
Linux修改ssh远程登录配置
C:\~]$ telnet 192.168.8.110 22
Connecting to 192.168.8.110:22...
Could not connect to '192.168.8.110' (port 22): Connection failed.
Type `help' to learn how to use Xshell prompt.
[C:\~]$ telnet 192.168.8.110 2023
Connecting to 192.168.8.110:2023...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4
Protocol mismatch.
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(192.168.8.110:2023) at 10:19:02.
Type `help' to learn how to use Xshell prompt.
telnet测试端口是否存在,从以上可以看出22端口没有,2023端口是存在的
常见的ssh配置:
修改ssh远程登录端口:将默认端口22改为1022
1.修改ssh服务的配置文件:/etc/ssh/sshd_config ,将 Port 22 改为 Port 1022 保存退出
2.防火墙上开放tcp 1022端口
3.重启防火墙与ssh服务
service sshd restart
1
禁止root远程登录
1.修改ssh服务的配置文件:/etc/ssh/sshd_config ,找到PermitRootLogin,将后面的yes改为no,这样root就不能远程登录了,保存退出。
2.重启sshd服务
限制用户 SSH 登录
1.只允许指定用户进行登录(白名单):
在 /etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项,(配置完成需要重启 SSHD 服务)格式如下:
AllowUsers test test@192.168.1.1 # 允许 test 和从 192.168.1.1 登录的 test 帐户通过 SSH 登录系统。
1
2.只拒绝指定用户进行登录(黑名单):
在 /etc/ssh/sshd_config 配置文件中设置 DenyUsers 选项,(配置完成需要重启 SSHD 服务)格式如下:
DenyUsers zhangsan test # 拒绝 zhangsan、test 帐户通过 SSH 登录系统
DenyUsers lisi@135.12.15.2 # 拒绝 lisi 帐户且IP为135.12.15.2 通过 SSH 登录系统
1
2
限制IP SSH 登录
除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这两个文件,可以实现限制或者允许某个或者某段IP地址远程 SSH 登录服务器。
hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,按照此方法设置后服务器只允许 192.168.0.1 这个 IP 地址的 ssh 登录,其它的 IP 都会拒绝。
1.vim /etc/hosts.allow, 添加
sshd:ALL # 允许全部的 ssh 登录
sshd:192.168.0.1:allow # 允许 192.168.0.1 这个 IP 地址 ssh 登录
sshd:192.168.0.1/24:allow # 允许 192.168.0.1/24 这段 IP 地址的用户登录
1
2
3
4
2.vim /etc/hosts.deny,添加
sshd:ALL # 拒绝全部的 ssh 登录
————————————————
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
sudo命令配置使用
1.sudo介绍
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
2.原理
在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
sudo语法
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command
3.安装
检测是否安装了sudo:
[root@localhost ~]# rpm -q sudo
sudo-1.8.19p2-13.el7.x86_64
如果没有安装,下载软件包进行安装
##如果是centos下,直接执行命令安装
yum install -y sudo
1
2
4.配置
编辑配置文件命令:visudo , 等同于 vi /etc/sudoers
※注意:编辑sudo的配置文件/etc/sudoers是一般不要直接使用vi(vi /etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。
默认配置文件位置:/etc/sudoers
范例1
sudo -l 列出目前的权限
若用户不在sudoers中会提示不能运行sudo命令,存在则会显示详细的权限。
sudo -V 列出 sudo 的版本
范例2
1. testuser具体sudo权限, 拥有所有权限,相当于root,需要输入testuser的密码,在/etc/sudoers中加入以下行。
testuser ALL=(ALL) ALL
2. testuser具体sudo权限, 拥有所有权限,相当于root,不需要输入testuser的密码,在/etc/sudoers中加入以下行。
testuser ALL=(ALL) NOPASSWD:ALL
3. testuser具体sudo权限,能执行命令/usr/sbin/iptables,/usr/sbin/useradd需要密码,在/etc/sudoers中加入以下行。
testuser ALL=(ALL) /usr/sbin/iptables,/usr/sbin/useradd
4. testuser具体sudo权限, 能执行命令/usr/sbin/iptables,/usr/sbin/useradd不需要密码,在/etc/sudoers中加入以下行。
testuser ALL=(ALL) NOPASSWD:/usr/sbin/iptables,/usr/sbin/useradd
5. testuser具体sudo权限, /usr/sbin/iptables不需要密码,/usr/sbin/useradd,/usr/sbin/userdel需要密码,在/etc/sudoers中加入以下行。
testuser ALL=(ALL) NOPASSWD:/usr/sbin/iptables, PASSWD:/usr/sbin/useradd,/usr/sbin/userdel
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Linux 中 root 与 sudo 的用法与区别,居然这么多人搞不清楚!
那么 sudo 和 root 的区别到底是什么呢,为什么我们建议使用 sudo 而不是直接使用 root 账户?在本教程中,您将了解 root 访问、sudo 命令、如何使用 sudo 运行命令以及 sudo 访问和 root 之间的区别。
什么是 root?
root 是指 Linux 等类 Unix 系统中的超级用户帐户。它是用于系统管理的系统上具有最高访问权限的特权帐户。此根/超级用户帐户的用户标识符 (UID) 为零,无论帐户名称如何。
root 用户拥有整个系统的完全权限(root 特权)。它可以做诸如修改系统的核心部分、升级系统、更改系统配置以及启动、停止和重新启动所有正在运行的系统服务之类的事情。
以 root 身份登录(使用 su -)时,终端命令提示符符号从
$ echo 'You are in a normal shell'
变成
# echo 'This is a root shell'
在某些系统(如 Ubuntu)上,root 用户默认被锁定。(备注:并不会锁定,但是腾讯云默认会锁定)。
什么是 Sudo?
sudo
(superuser do) 命令是一个命令行实用程序
,它允许用户以 root 或其他用户身份执行命令。它提供了一种有效的方式来授予某些用户适当的权限以使用特定的系统命令或以 root 用户身份运行脚本。
虽然有点类似于 su 命令,但 sudo 的不同之处在于它默认需要用户的密码进行身份验证,而不是 su 需要的目标用户的密码。Sudo 也不会产生 root shell;相反,它以提升的权限运行程序或命令,不像 su,它产生一个 root shell。
使用 sudo,系统管理员可以执行以下操作:
- 授予用户或用户组以提升或 root 权限运行某些命令的能力。
- 查看每个使用 sudo 的用户的用户 ID 的日志。
- 控制用户可以在主机系统上使用什么命令。
Sudo 会记录在 /var/log/auth.log 文件中执行的所有命令和参数的日志,可以在出现故障时进行分析。
sudoers 文件
sudo 使用默认的 sudoers 安全策略,并保留一个特殊的配置文件 /etc/sudoers。该文件可用于控制访问权限和密码提示超时。
注意:您必须具有提升的权限才能查看 sudoers 文件
打开 /etc/sudoers 文件;它应该是这样的:
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d
其中这行:
root ALL=(ALL:ALL)ALL
意味着 root 用户拥有无限的权限并且能够在系统上运行任何命令。
%sudo ALL=(ALL:ALL)ALL
允许组 sudo 的所有成员执行任何命令。
注意
:sudoers 文件中的 ‘%’ 代表一个组,而不是注释。
从 /etc/sudoers 文件的第一行可以看出:
# This file MUST be edited with the 'visudo' command as root
不要尝试直接编辑 sudoers 文件。使用具有 root 权限的 visudo 命令。
使用 sudo 运行命令很简单,只需要在命令前面加上 sudo 即可:
$ sudo command
一般来说会提示输入密码,输入密码后回车即可。
$ sudo command
[sudo] password for user:
Sudo 对比 Root
最小权限原则是一种信息和计算机安全概念,它认为授予程序和用户执行任务所需的最少或最低限度的权限。
以 root 用户登录后,输入到终端的每一条命令都以系统最高权限运行,违反了最小权限原则。像 rm 这样的简单命令可用于删除核心根目录或文件,而不会在意外时提示用户。例如,如果您尝试使用以下命令删除 /etc 之类的根目录:
$ rm -rf /etc
当您以普通用户身份登录时,您将被拒绝许可。当以 root 身份登录时,不会显示任何提示,并且整个文件夹将被删除 – 这很可能会破坏您的系统,因为运行系统所需的特殊配置文件存储在 /etc 目录中。您也可能最终错误地格式化磁盘,并且系统不会提示您。
此缺陷还扩展到以 root 身份运行代码或应用程序;应用程序中的一个小错误可能会删除一些系统文件,因为该应用程序是在最高权限下运行的。
Sudo 提供细粒度的访问控制。它仅向需要它的特定程序授予提升的权限。您知道哪个程序以提升的权限运行,而不是使用 root shell(以 root 权限运行每个命令)。
Sudo 也可以配置为以另一个用户身份运行命令,指定允许哪些用户和组使用 sudo 运行命令,或者通过编辑 sudoers 文件设置以 root 权限运行程序的超时。
因此,不建议使用 root shell 运行命令,因为您破坏系统的机会要高得多。如果您需要更高权限或 root 权限来运行命令,请使用 sudo 确保只有该命令以 root 权限运行。