设置和目标
我正在运行一台服务器,ssh
并且shellinabox
希望将登录限制为 shellinabox
仅限一个特定用户。
推理与方法
出于安全原因,主用户仅main_acc
具有基于证书的ssh
访问权限(直接使用ssh
且在 LAN IP 范围之外时)。我可以确认通过命令从互联网访问时密码访问不起作用ssh
。
在shellinabox
使用情况下,必须通过密码登录,因为这是专门针对我的电脑没有可用私钥的情况。这个想法是通过使用具有受限制的 shell 的“代理”用户来添加一层安全性,shiabox_acc
其中唯一允许的命令是在本地主机上ssh
执行的main_acc
。这样我就拥有两层密码和两层可以用来fail2ban
给暴力攻击者带来困难的层。
所以我所做的是
- 在
sshd_config
- 用户
main_acc
一般没有密码认证 main_acc
允许从 LAN-IP 范围和端口 22 进行密码身份验证(出于本地维护原因)- 用户
shiabox_acc
在端口 1011(shellinabox 端口)上允许从本地主机进行密码身份验证
- 在
apache
网站设置中
- revese 代理将对我网站的 ssh-loaction 的访问转发到
shellinabox
端口
- 在路由器防火墙设置上
- 无法从 WAN 访问端口 1011
- 端口 22 和 443 已开放
现在问题来了:
仍然可以main_acc
通过via和密码登录。shellinabox
为什么?如何限制shiabox_acc
只能访问?
根据我的理解,apache 在端口 443 上接收基于网站的请求,并将其在本地主机上转发到端口 1011。然后ssh
规则应该将访问端口与 1011 匹配,因此不允许main_acc
.
我哪里错了?
PS:我知道用于apache
身份验证的选项,但更想了解为什么我的方法失败。
设置在/etc/ssh/sshd_config
#Global:
#DenyUsers
AllowUsers main_acc
PasswordAuthentication no
#shellinabox access
Match LocalPort 1011 User shiabox_acc
PasswordAuthentication yes
PubkeyAuthentication no
#LAN access w/ password
Match Address <LAN-IP>,127.0.0.1,::1 LocalPort 22 User main_acc
PasswordAuthentication yes
PubkeyAuthentication yes
站点中的设置apache
:
<Location /shellinabox>
ProxyPass http://localhost:1011/
Order allow,deny
Allow from all
</Location>
shellinabox
设置:
SHELLINABOX_PORT=1011
SHELLINABOX_ARGS="--no-beep --localhost-only --disable-ssl"
版本
- 阿帕奇/2.4.57
- ShellInABox 版本 2.20
- 操作系统:Raspbian 12