CT.*_*CT. 14 security ssh shell proxy socks
我正在考虑将 SSH 隧道实现为一种廉价的 VPN 解决方案,供外部用户访问仅面向 Intranet 的 Web 应用程序。
我目前正在使用安装了 OpenSSH 的 Ubuntu Server 10.04.1 64 位。
我在 Windows 机器上使用 Putty 在本地端口上创建到我的 ssh 服务器的隧道。
start putty -D 9999 mysshserver.com -N
Run Code Online (Sandbox Code Playgroud)
然后我使用 tell Firefox 在 localhost:9999 上使用 SOCKS 代理。
-N 标志将从客户端禁用交互式 shell。有没有办法在服务器端做到这一点?
除了禁用 root 访问,使用 rsa 密钥认证,并更改默认端口;为此,我还应该遵循任何其他明显的安全实践吗?我的目标是简单地能够隧道网络流量。
0xC*_*22L 19
四年后,这个答案值得更新。虽然最初我authorized_keys自己使用并且在某些特定情况下可能仍会使用它,但您也可以使用中央sshd_config服务器配置文件。
您可以(针对您的特定用例)指定一个组,例如proxy-only或Match单个用户。在sshd_config. 这是在全局设置和撤销、重复或改进全局设置中给出的一些设置之后完成的。
注:一些使用的语法/指令sshd_config(5)在被记录man的页面ssh_config(5)。尤其是务必阅读格局的部分ssh_config(5)。
对于一个组,这意味着您的Match块将像这样开始:
Match group proxy-only
Run Code Online (Sandbox Code Playgroud)
您可以Match在以下标准:User,Group,Host,LocalAddress,LocalPort和Address。要匹配多个标准,只需用逗号分隔标准-模式对(group proxy-only如上)。
在这样的块中,传统上为了简洁起见相应地缩进(但不需要),然后您可以声明要应用于用户组的设置,而无需编辑authorized_keys该组成员的每个文件。
在no-pty从设置authorized_keys将由镜像PermitTTY no设置,command="/sbin/nologin"将成为ForceCommand /sbin/nologin。
此外,您还可以设置更多设置来满足管理员的偏执,例如 -chroot将用户放入他的主文件夹,最终会得到如下结果:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)
(检查自己是否需要或想要注释掉的行并根据需要取消注释)
该%h是用户的主目录取代(令牌%u将产生的用户名和%%百分号)。我发现ChrootDirectory限制我的sftp-only用户特别有用:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
请注意,块中只能使用某些指令Match。有关详细信息,请参阅man页面sshd_config(5)(搜索Match)。
注意:此评论下方的部分是我的原始答案。同时 - 但这也取决于您的确切sshd版本的功能- 在大多数情况下,我会采用上述方法。
是的,您可以,尽可能细粒度地分配公钥。除了 ajdecon 推荐的 nologin 之外,我建议在 中的关键条目前面设置以下内容authorized_keys:
no-pty ssh-rsa ...
Run Code Online (Sandbox Code Playgroud)
no pty 告诉服务器端不应为该密钥分配伪终端。
您还可以通过预先添加以下内容来强制执行特定键的 nologin 之类的操作:
command="/sbin/nologin",no-pty ssh-rsa ...
Run Code Online (Sandbox Code Playgroud)