使用sshdo限制incoming ssh只能执行指定命令

Posted 王万林 Ben

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sshdo限制incoming ssh只能执行指定命令相关的知识,希望对你有一定的参考价值。

前言

系统管理员经常面临一个问题,如何将用户的incoming ssh限制在一个命令白名单里,达到安全的目的。本文介绍sshdo工具,来实现该功能。

仓库地址

https://github.com/wanlinwang/sshdo

安装

tar xzf sshdo-1.1.tar.gz #如果是直接clone仓库则无需解压。
cd sshdo-1.1
make check
sudo make install

阅读手册

sshdo手册

sshdoers手册

本质上,是sshdo拦截了ssh请求,并通过读取sshdo配置文件来判断待运行命令是否在白名单里。

总的来说,管理员需在两处设置

  • 在ssh配置文件,设置incoming ssh只能运行 `/usr/bin/sshdo [label]` 命令;

  • 在sshdo配置文件设置,设置具体谁可以执行什么命令。

实验

实验一

说明:本方式适用于key-pair认证

ssh配置文件

[root@centos7-9-vm-120 ~]# cat /root/.ssh/authorized_keys 
command="/usr/bin/sshdo" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDxXoyal7McujoUIeQe8uellc/iaET9WU0cubaYn4RKSX8oxrNhK81HphpAdVe37Rnv2wd3AHChcJ88IdgFo6KRUEJimIskQLkTll57uAq+cNu3hxPqcgfRMzosDU1VWFwNqpcEjqDosn0ule6oK+DP2sobND7w4KsUDaTAb+1vPMFgpO0UJ49hu+4LUeNxL4e1N57CQ6rOwRmYbzMcEz3PHC3h1gKlvVZfzcCH5waaRFfFCXtxnVTAyzdpStbTQcUokvef+r+RDiNl9UGtf6SpII1K6pgG8iai7xC1Uplup0tqM7cPerUdU7gSQTDWkFfFfH6DE3b3Tj1HkM7A2HOBjh6iSMY2fMktwf4iz/LIW1NnXkpXGGplvu8FG5otirOcU6OeAJGRSbdkHruo6ZiryeYfos5gQHkOU9HV4F3KHWdRrveEWVYCJAop4DZX/fUuMTDP4nXIIrlTqxcJj9dSk+L6Ff56h3vxqKE/QawZ385v1A2iXkdIKva33IAhK+U= ben@Bens-MBP

sshdo配置文件

[root@centos7-9-vm-120 ~]# cat /etc/sshdoers| grep -v '^#' | grep -v '^$'
root: hostname

效果

实验二

说明:本方式同时适用于密码、key-pair认证

ssh配置文件

注意:修改完请重启sshd,使得其生效。

[root@centos7-9-vm-120 ~]# tail -3 /etc/ssh/sshd_config
# added by wanlinwang for testing sshdo
Match User root
ForceCommand /usr/bin/sshdo

sshdo配置文件

[root@centos7-9-vm-120 ~]# cat /etc/sshdoers| grep -v '^#' | grep -v '^$'
root: hostname

效果

使用密码

使用key-pair

总结

本质上,利用了ssh内建的能力,限制incoming ssh只能执行sshdo。当ssh过来时,sshdo拦截了ssh请求,并通过读取sshdo配置文件来判断待运行命令是否在白名单里,来决定是否执行。

借助这个工具,我们可以做关于安全相关的事,比如login server只允许用户的incoming ssh执行vnc启动命令等。

以上是关于使用sshdo限制incoming ssh只能执行指定命令的主要内容,如果未能解决你的问题,请参考以下文章

用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录

使用firewall-cmd限制ssh只能从指定IP段访问

JSP控制输入框只能输入数字并且限制输入小数为两位

linux shell ssh调用,为啥只能循环一次(TEST文件里多行,只能执行一行)

ssh/sftp配置和权限设置

chroot限制普通用户登录特定目录