一、sshd_config文件说明
sshd_config 是 OpenSSH SSH 服务器守护进程配置文件,主要用于设置ssh server服务的相关参数,包括监听地址、监听端口、允许验证次数、是否允许root账户登录等等。sshd服务从/etc/ssh/sshd_config(或命令行中用-f指定的文件)读取配置数据。该文件包含关键字参数对,每行一对。以“#”开头的行和空行被解释为注释。参数可以用双引号(“)括起来,以表示包含空格的参数。改配置文件,只有root账户或者拥有root权限的账户可以配置和修改,配置文件修改后,重启sshd服务后参数生效。
二、使用实践
1、修改默认监听端口
ssh server服务默认监听端口为22,为了系统安全,我们可以修改默认端口号。对应参数为Port,默认值为22,我们可以根据规划设置为指定端口。
[root@s142 ~]# cd /etc/ssh/
[root@s142 ssh]# vim sshd_config
…
Port 22222
…
[root@s142 ssh]# systemctl restart sshd
[root@s142 ssh]# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 15808/sshd
…
2、指定监听地址
如果服务器有多个网卡,我们只希望在某网卡提供sshd服务,则我们可以设置监听地址。
[root@s142 ssh]# vim sshd_config
…
ListenAddress 192.168.0.142
…
[root@s142 ssh]# systemctl restart sshd
[root@s142 ssh]# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.0.142:22222 0.0.0.0:* LISTEN 15819/sshd
…
3、禁止root账户登录
centos是默认运行root登录的,Ubuntu是默认禁止root登录的。如果我们需要禁止root账户登录,可以通过设置参数PermitRootLogin no,重启sshd服务后可以达到禁止root账户登录的目的。
[root@s142 ssh]# vim sshd_config
…
PermitRootLogin no
…
4、设置每个连接最大允许的认证次数
MaxAuthTries,指定每个连接最大允许的认证次数。默认值是 6 。如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。
[root@s142 ssh]# vi sshd_config
…
MaxAuthTries 2
…
…[root@s142 ssh]# ssh wuhs@192.168.0.142 -p 22222
wuhs@192.168.0.142’s password:
Permission denied, please try again.
wuhs@192.168.0.142’s password:
Received disconnect from 192.168.0.142 port 22222:2: Too many authentication failures
Authentication failed.
5、设置Banner语
设置登录前的横幅语,默认是空。Banner参数后参数值为路径及文件名。
[root@s142 ssh]# vi sshd_config
…
Banner /tmp/hi
…
[root@s142 ssh]# systemctl restart sshd
[root@s142 ssh]# cat /tmp/hi
欢迎登陆s142
[root@s142 ssh]# systemctl restart sshd
[root@s142 ssh]# ssh wuhs@192.168.0.142 -p 22222
欢迎登陆s142
wuhs@192.168.0.142’s password:
6、登录后显示上次登录信息
PrintLastLog参数控制是否显示上一次登录信息,默认是yes,即显示。通过登录信息我们可以了解上一次是否登录成功或者失败,会显示上一次登录的IP地址。这个信息有利有弊,利是可以显示上一次登录信息记录,如果显示陌生地址登录失败,说明有人在尝试登录服务器。弊端自然就是会暴露一些你实际的使用源地址信息。
Last failed login: Mon Sep 19 16:38:42 CST 2022 from s142 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Sep 19 16:38:25 2022 from 192.168.0.32
三、sshd_config配置文件参数说明
1、常见参数说明
实际上sshd_config参数除了如下表格中,还有很多,只是我们大部分我们都使用默认值即可。如果想了解每个参数的用途和说明,我们可以使用man sshd_config命令进行查看。
参数 默认值 参数说明
Port 22 sshd服务默认的端口22,为了安全考虑建议修改成其它端口
AddressFamily any 设置协议簇,默认支持IPV4和IPV6
ListenAddress 0.0.0.0 默认监听网卡所有的IP地址
PermitRootLogin yes 是否允许root登陆,默认是允许的,建议设置成no
StrictModes yes 当使用者的host key改变之后,server就不接受其联机
MaxAuthTries 6 最多root尝试6次连接
MaxSessions 10 最大允许保持多少个未认证的连接。默认值是 10 到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
PrintMotd yes 登陆后是否显示一些默认信息
PrintLastLog yes 显示上次登录的信息
TCPKeepAlive yes ssh server会传keepalive信息给client以此确保两者的联机正常,任何一端死后,马上断开
PasswordAuthentication yes 是否允许使用基于密码的认证。默认为”yes”。
PermitEmptyPasswords no 是否允许密码为空的用户远程登录。默认为”no”。
2、相关重要文件说明
~/.ssh/known_hosts文件
ssh 会把每个你访问过的计算机的公钥(public key)都记录到~/.ssh/known_hosts文件中,当你下次访问该计算机时,openss会核对公钥。如果公钥不同,那openssh就会发出警告,避免你收到DNSHijack等攻.
/etc/host.allow和/etc/hosts.deny
这两个文件时控制远程访问设置的,通过该设置可以允许或者拒绝某个ip或者ip段访问linux的某项服务。我们可以用于限制访问服务器sshd服务的源地址,host.allow文件对应白名单,hosts.deny文件对应黑名单。
3、sshd_config配置文件验证
我们可以使用sshd -t命令验证配置文件语法是否正确,如果配置文件中语法错误会有提示,我们根据提示修改配置文件即可。
[root@s142 ~]# sshd -t
/etc/ssh/sshd_config: line 15: Bad configuration option: semanage
/etc/ssh/sshd_config: terminating, 1 bad configuration options
————————————————
admin
发表于 6个月前
一、sudo介绍
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
它的特性主要有这样几点:
§ sudo能够限制用户只在某台主机上运行某些命令。
§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。
二、配置文件/etc/sudoers
它的主要配置文件是sudoers,linux下通常在/etc目录下,如果是solaris,缺省不装sudo的,编译安装后通常在安装目录的 etc目录下,不过不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。
三、配置support
1,最基础的配置:
大概位于98行上下,其所代表的含义分别是:
用户帐号,也就是我们想要配置的让哪个系统帐号可以使用sudo命令
允许用户从哪些地方连接到这台主机,linux作为服务器,管理员是有可能从别的主机远程连接过来的
允许切换的身份,
允许执行的命令
照葫芦画瓢,在下面增加一行
当用户jiaxu使用sudo执行的时候,就可以像root那样为所欲为了。
2,根据用户组及无密码的配置:
跟第一种配置方式相比,也就在前面多了一个“%”,用来表示用户组。最前面的“#”表示注释, 把"#"去掉即可生效; 而后面的"NOPASSWD:"即表示不需要输入密码就可以执行命令
设置了某个用户组具有sudo权限之后,只需要使用usermod命令把相应的用户添加到该用户组就可以了:
3,有限制的命令操作:
允许hr用户组的用户以root权限修改其他用户的密码。
当用户以"sudo passwd"或者"sudo passwd root"方式运行命令的时候,可以直接把root用户的密码改掉,这真是太危险了,必须要把这两条命令禁止调,在命令前面加上"!"来表示不可执行的命令,如下所是:
4,通过别名问题来设置,有命令别名,账户别名,主机别名等,具体参考sudoers文件提供的例子:
## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2 # Host_Alias MAILSERVERS = smtp, smtp2 ## User Aliases ## These aren't often necessary, as you can use regular groups ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS # User_Alias ADMINS = jsmith, mikem ## Command Aliases ## These are groups of related commands... ## Networking # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
5,在sudoers文件的最后面有如下几行,利用include引入/etc/sudoers.d目录下的配置文件
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d
sudo与su的联合使用
评论列表
加载数据中...