在CentOS上创建SFTP用户并越狱到chroot-用户身份验证错误


18

我有一个使用Digital Ocean的CentOs版本6.4,并且想要成功创建SFTP用户并将其监禁到用户自己的chroot主目录中,但是我担心我会弄得一团糟。

我已经尝试了很多事情,但实际上太多了,因此无法在这里列出,因为大多数可能是不正确的或没有多大意义,但我认为应该是正确的过程,而我尝试的是:

为以下组创建一个组sftp

groupadd sftp

创建一个用户并设置其主目录:

useradd -d /var/www/vhosts/domain.com dummyuser

为用户设置密码:-

passwd dummyuser

将用户组更改为“ sftp”:-

usermod -g sftp dummyuser

将用户的外壳设置为/bin/false:-

usermod -s /bin/false dummyuser

sshd_config/etc/ssh/)中编辑子系统:-

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

将以下内容添加到sshd_config文件的底部:

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

我确保以下所有目录均为root:root:-

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

如果然后我尝试使用用户dummyuser(在WinSCP中)通过SFTP登录服务器,则会得到以下信息:-

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

我要实现的只是将用户锁定到其主目录。我还设置并配置了vsftpd。用户可以很好地登录,但可以访问整个服务器-我只是没有设法工作而已。

编辑

忘了提一下,然后我又重新启动了sshd:-

service sshd restart

当WinSCP中产生错误时,其帮助页面在此处

记录结果

/var/log/secure

我将实际的服务器名称替换为server_name

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser

重新启动了sshd吗?服务器上的日志文件中包含什么?
造假者2014年

是的,我确实做到了,很抱歉我忘了在问题末尾添加(现在将包括在内)。到目前为止,我找不到“会话日志”文件,应该查看哪个日志文件(和位置)?谢谢。
zigojacko 2014年

您将要看一看/var/log/secure
骗子

太好了,谢谢您-这会有所帮助(使用日志条目更新问题)。
zigojacko 2014年

致命:chroot目录组件“ / var / www / vhosts /”的所有权错误或模式错误,我怀疑vhosts是这样的root:root
zigojacko 2014年

Answers:


14

这是一个常见的陷阱:
直到chroot主目录的所有文件夹都必须拥有,并且只能由root用户写入。
文件夹不能写成组-即使组是可写的root


4
我刚刚学到了一种方便检查的技巧:namei -l /var/www/vhosts
clockworkgeek

5

我在CentOS 6.5上找到并成功配置了sftp:http//www.thegeekstuff.com/2012/03/chroot-sftp-setup/

编辑sshd配置:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

退出并保存。

然后:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

对于名为“ testuser”的新用户(GID 500的sftp-only组的成员):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(我使用空的/ etc / skel2,因此CentOS默认不复制.bashrc等)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

因此,在此示例中,我实现了对管理网站的外部咨询公司的安全访问。创建完所有这些之后,您可以执行以下操作:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

可以根据需要微调所有这些。

希望这对您有所帮助!

Guy Boisvert IngTegration inc。 http://www.ingtegration.com


欢迎来到服务器故障!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
masegaloeh 2014年

1
既然你改变sshd的配置,我建议你重新启动:service sshd restart
卢瓦克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.