我已经用 Nginx + PHP5-FPM 配置了一个 Ubuntu 网络服务器。我创建了一个 chrooted 环境(使用 jailkit),我将我的开发人员投入其中,他们可以从那里开发他们的测试应用程序。
Chroot 监狱:/home/jail
Nginx 和 PHP5-FPM 在 chroot 之外运行,但被配置为在 chroot 环境中与网站一起运行。
到目前为止,Nginx 和 PHP5-FPM 提供文件没有问题,除了以下问题: 尝试连接到 MySQL 时,我们收到此错误:SQLSTATE[HY000] [2002] 无法通过套接字连接到本地 MySQL 服务器 ' /var/run/mysqld/mysqld.sock'
现在,我认为问题是由于非 chroot 的 php.ini 引用了 chroot 环境之外的 mysqld.sock(它目前实际上使用的是 MySQL 默认设置)。
我的问题是,如何配置 PHP 以通过环回或类似方式访问 MySQL?(在谷歌结果中发现这是一个建议,但没有任何说明)
或者,如果我遗漏了一些其他明显的设置,请告诉我。如果可以选择创建硬链接(即使重新启动 mysql 也将保持可用),那也会很方便。
希望你们能帮忙看看我是否在这里做了一些奇怪的事情,我正在尝试使用我设置的用户登录,FileZilla 显示给我:
Command: open "///@///" Command: Pass: ********
Status: Connected to ///
Error: Connection closed by server with exitcode 1
Error: Could not connect to server
Run Code Online (Sandbox Code Playgroud)
所以,我进入了 auth.log,我看到了这个:
Feb 12 11:08:49 sshd[12056]: Accepted password for /// from /// port /// ssh2
Feb 12 11:08:49 sshd[12056]: pam_unix(sshd:session): session opened for user /// by (uid=0)
Feb 12 11:08:50 sshd[12164]: subsystem request for sftp by user ///
Feb 12 11:08:50 sshd[12056]: pam_unix(sshd:session): session closed for user ///
Run Code Online (Sandbox Code Playgroud)
这是相关用户的密码条目:
///:x:666:666:///,,,:/chroot:/usr/bin/rssh
Run Code Online (Sandbox Code Playgroud)
如果我尝试自己运行 rssh,我会发现Allowed commands: …
我安装了 vsFTPd 以在Debian 7.3 (Wheezy)上运行 FTP 服务器。我检查了 vsFTPd 版本是2.3.5,我像这样配置它:
listen=YES
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_min_port=15000
pasv_max_port=15200
allow_writeable_chroot=YES
Run Code Online (Sandbox Code Playgroud)
我按照这些文章来解决这个问题:
和谷歌和论坛上的许多其他人一样,但我的问题没有解决。
注意:我已经在Ubuntu 12.04(精确穿山甲)上解决了这个问题,但该解决方案在 Debian 7.3 上不起作用。
我真的搞混了?!
我正在阅读维基百科上关于 setuid 的描述 http://en.wikipedia.org/wiki/Setuid
我无法理解 chroot 如何与 setuid 相关,如维基百科的以下段落所述
setuid 可执行文件的存在解释了为什么 chroot 系统调用对 Unix 上的非 root 用户不可用。有关更多详细信息,请参阅 chroot 的限制。
我的网络中有以下设置:
Internet <--> Bastion <--> Local Network
Run Code Online (Sandbox Code Playgroud)
我有几个用户,每个用户都分配到一台特定的机器。或者换句话说:每个用户必须只能访问这些服务器之一。例如:User1 --> Machine1、User2 --> Machine2 等等。
这些用户将从我的网络外部连接,我已经考虑了许多选项如何通过我的堡垒主机将他们的连接转发到我的网络。
最终我选择了 Match Blocks 和 forcecommand。
所以,我在堡垒上的 /etc/ssh/sshd_config 看起来像这样:
Match User User1
ForceCommand ssh User1@Machine1 $SSH_ORIGINAL_COMMAND
Run Code Online (Sandbox Code Playgroud)
User1 连接到堡垒主机,堡垒主机自动与 Machine1 建立连接。
据我了解 ForceCommand,User1 不会真正访问堡垒主机,因为他的所有操作都将首先由 match 块处理,因此重新路由到 Machine1。然而这是真的吗?这是否已经足以成为一个安全的设置?无论如何,用户在 Machine1 上被监禁,所以他在那里不会有很多可能性。
我有以下容器设置。
在裸机服务器上安装并运行了两个 Docker 守护进程。
我想让客户访问Plugin Docker Daemon的 API (2376),以便客户可以部署/启动/停止他自己的容器。客户只能访问 API,而不能访问主机 (SSH)。
我目前面临的问题是,如果客户运行的容器执行诸如docker run -v /:/host/root Ubuntu rm -rf /host/root.
我的问题是我能做些什么来防止插件 Docker 守护程序挂载根目录/或外部的任何其他目录/home/user/,
/home/user/?--userns-remap帮助我实现我的目标吗?服务器完全属于单个客户。因此,安全性或数据泄漏不是我的主要关注点。我真正想防止的是Plugin Daemon中的某个人正在做一些愚蠢的事情,这会影响我在Main Docker Daemon中运行的容器。我想保持精益并坚持仅使用 docker 的工作流程,并且不会为 VM 创建设置额外的工作流程。
令人沮丧的是,SFTP 用户突然无法连接到我的 Amazon Linux 服务器。
/var/log/secure 显示以下错误:
sshd[7291]: fatal: safely_chroot: stat("/chroot/uhleeka"): Permission denied [postauth]
Run Code Online (Sandbox Code Playgroud)
/var/日志/安全:
==> /var/log/secure <==
Nov 21 23:49:23 amzl-lamp sshd[7291]: Accepted password for uhleeka from 172.31.0.254 port 47170 ssh2
Nov 21 23:49:24 amzl-lamp sshd[7291]: pam_unix(sshd:session): session opened for user uhleeka by (uid=0)
Nov 21 23:49:24 amzl-lamp sshd[7291]: fatal: safely_chroot: stat("/chroot/uhleeka"): Permission denied [postauth]
Nov 21 23:49:24 amzl-lamp sshd[7291]: pam_unix(sshd:session): session closed for user uhleeka
Run Code Online (Sandbox Code Playgroud)
SSHD 的调试输出:
$ /usr/sbin/sshd -ddd -p 33333
...
debug1: SELinux support disabled
debug1: …Run Code Online (Sandbox Code Playgroud) 服务器:Ubuntu 12.04 LTS
我正在使用 openSSH 并创建了一个名为bobwho owns group 的 SFTP 用户sftponly。我已将 bob chroot 到他的主目录,即/usr/share/nginx/www/bob/.
bob 能够通过 SFTP 连接到服务器并且查看主目录,但是他无法编辑他目录中的文件。我已经运行chown -R bob /usr/share/nginx/www/bob/*让鲍勃成为他的文件的所有者,但他仍然无法编辑它们。
为什么会这样?
我想将 SFTP 命令记录到一个单独的文件中,但它仅适用于root但不适用于 chroot 用户:
# cat /etc/ssh/sshd_config
...
Subsystem sftp internal-sftp -l INFO
Match Group user1
ChrootDirectory /chroot
ForceCommand internal-sftp -l INFO
AllowTcpForwarding no
X11Forwarding no
Run Code Online (Sandbox Code Playgroud)
——
根据手册页,默认工具是 AUTH
# cat /etc/rsyslog.d/sshd.conf
auth.* /var/log/sftp.log
Run Code Online (Sandbox Code Playgroud)
——
tail -F /var/log/secure /var/log/sftp.log
==> /var/log/secure <==
Dec 27 12:35:09 lab sshd[43014]: Accepted publickey for root from 192.168.1.100 port 44706 ssh2
Dec 27 12:35:09 lab sshd[43014]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec 27 12:35:09 lab sshd[43014]: subsystem …Run Code Online (Sandbox Code Playgroud) 我已经用 chroot 配置了一个 sftp 服务器,它工作正常,唯一困扰我的是初始登陆目录,因为 sftp 用户在登陆文件夹中没有写权限,他必须转到以他自己命名的文件夹上传文件的用户名。
我设置了:ForceCommand internal-sftp -d %u,我在一些配置指南中找到的,他们说它应该更改登陆文件夹,但它不起作用。一开始我在 passwd 为用户登录配置了一个空脚本,但我将其更改为 /bin/bash 以防它可能与此有关。我重新启动了服务,所以可能也不是这个原因。
也许这可能与我使用的发行版所具有的 ssh 版本有关,或者 sshd 根本无法做到这一点?
这是我关于 sshd 的配置:
CentOS 6.6 版(最终版)
OpenSSH_5.3p1、OpenSSL 1.0.1e-fips 201 年 2 月 11 日
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -d %u
Run Code Online (Sandbox Code Playgroud)