linux的sftp需求配置过程方案_Linux服务器维护_龙虎鹰师网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

linux的sftp需求配置过程方案

作者:龙虎鹰师网安linux教程网 来源:龙虎鹰师网安linux教程网 浏览次数:0

本篇关键词:linuxsftp
龙虎鹰师网安网讯:
背景:由于vsftp采用明文传输,用户名密码可通过抓包得到,故为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器。

背景:由于vsftp采用明文传输用户名密码可通过抓包得到故为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器

   需求如下:
   为安全且方便王五公司的数据传回,以及我公司(张三和李四公司子公司)提供数据给王五公司具体要求如下
   1、需分别创建3个普通sftp账号,给张三公司(zhangsan)、李四公司(lisi)及王五公司(wangwu)使用
   2、需建立3个目录,分别保存我公司(张三和李四公司)的数据和王五公司的数据,
其中我公司账号(张三公司和李四公司账号),不允许对方进入各自的目录,共享各自的数据
   3、王五公司账号对我公司(张三和李四公司的目录)数据只有读取权限。对其自身数据有读写权限;张三公司、
李四公司的账号对王五的数据仅有读的权限,对我公司数据按各自家目录拥有读写权限
   4、再设置一管理员账号(sftpadm),对所有公司的数据都具有读写权限

1、当前系统版本:suse 10 sp2 64bit
station91:~ # cat /etc/issue.net
Welcome to SUSE Linux Enterprise Server 10 SP2 (x86_64) - Kernel %r (%t).
station91:~ # uname -a
Linux station91 2.6.16.60-0.21-smp #1 SMP Tue May 6 12:41:02 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux
2、将用户锁定目录,需满足2个条件:
   2.1、OpenSSH版本必须不低于openssh-5.1p1才能够支持锁定目录的功能,suse系统默认suse SP4及以上版本才能够支持,SP4以下版本需要单独升级OpenSSH版本。执行ssh -V,查看openssh版本,如下所示,已经满足要求:之前安全加固已安装符合要求的openssh
station91:~ # ssh -V
OpenSSH_5.1p1, OpenSSL 0.9.8a 11 Oct 2005
   2.2、被锁定的那个目录必须是:root:root,并且权限为:755
3、 创建目录。因需要创建的账号为sftp账号,故不使用useradd -d /home/lhf -m lhf的方式创建账号,而是先使用root创建出用户存放数据的目录,然后使用-d指定该目录为家目录,无需使用-m参数,这样当使用sftp账号登入 后,是一个干净的目录
station91/# mkdir -p /sftpserver/wangwusftp/
station91/# mkdir -p /sftpserver/wangwusftp/wangwu
station91/# mkdir -p /sftpserver/wangwusftp/zhangsan
station91/# mkdir -p /sftpserver/wangwusftp/lisi
station91/# mkdir -p /sftpserver/wangwusftp/sftpadm
4、创建组,将要创建的3个用户的组都属于gwangwusftp组,管理员属于gwangwusftpadm组
station91/# groupadd gwangwusftp
station91/# groupadd gwangwusftpadm
5、创建用户,指定SHELL为/bin/false,指定普通用户组为gwangwusftp,管理员用户组为:gwangwusftpadm
station91/# useradd -d /sftpserver/wangwusftp/wangwu -g gwangwusftp -s /bin/false wangwu
station91/# useradd -d /sftpserver/wangwusftp/zhangsan -g gwangwusftp -s /bin/false zhangsan
station91/# useradd -d /sftpserver/wangwusftp/lisi -g gwangwusftp -s /bin/false lisi
station91/# useradd -d /sftpserver/wangwusftp/sftpadm -g gwangwusftpadm -s /bin/false sftpadm
6、批量更改用户密码
station91/sftpserver/wangwusftp# cat /root/passwd.txt
wangwu:$98#ukDe
zhangsan:#kuE4$3!
lisi:kdE9#%hp
sftpadm:weE$%kPq
station91/sftpserver/wangwusftp# chpasswd < /root/passwd.txt
station91/sftpserver/wangwusftp# rm -i /root/passwd.txt
rm: remove regular file `/root/passwd.txt'? y
7、对用户的家目录赋予正确的用户和属组关系
station91/# cd /sftpserver/wangwusftp/
station91/sftpserver/wangwusftp# chown wangwu:gwangwusftp  wangwu
station91/sftpserver/wangwusftp# chown zhangsan:gwangwusftp  zhangsan
station91/sftpserver/wangwusftp# chown lisi:gwangwusftp  lisi
station91/sftpserver/wangwusftp# chown sftpadm:gwangwusftpadm sftpadm

8、为了数据的安全性,不允许other用户访问zhangsan,lisi,wangwu,sftpadm目录
station91/sftpserver/wangwusftp# pwd
/sftpserver/wangwusftp
station91/sftpserver/wangwusftp# ls -ld * //默认为755
drwxr-xr-x 2 lisi     gwangwusftp    4096 Nov  2 10:54 lisi
drwxr-xr-x 2 sftpadm  gwangwusftpadm 4096 Nov  2 10:54 sftpadm
drwxr-xr-x 3 wangwu   gwangwusftp    4096 Nov  2 11:13 wangwu
drwxr-xr-x 2 zhangsan gwangwusftp    4096 Nov  2 10:54 zhangsan
station91/sftpserver/wangwusftp# chmod 750 *
station91/sftpserver/wangwusftp# ls -ld * //更改后为750
drwxr-x--- 2 lisi     gwangwusftp    4096 Nov  2 10:54 lisi
drwxr-x--- 2 sftpadm  gwangwusftpadm 4096 Nov  2 10:54 sftpadm
drwxr-x--- 3 wangwu   gwangwusftp    4096 Nov  2 11:13 wangwu
drwxr-x--- 2 zhangsan gwangwusftp    4096 Nov  2 10:54 zhangsan

9、配置/etc/ssh/sshd_config,限制访问的账号和地址,修改配置前请先备份
station91/# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_20121102.bak
station91/# cd /etc/ssh/
station91/etc/ssh#vim sshd_config
//在# Authentication:下面新增如下四行,指的是只允许zhangsan,lisi,wangwu,sftpadm用户从10.46网段登入
# Authentication:
AllowUsers zhangsan@10.46.*.*
AllowUsers lisi@10.46.*.*
AllowUsers wangwu@10.46.*.*
AllowUsers sftpadm@10.46.*.*

//对下面这行进行注释,不使用标准的sftp
#Subsystem      sftp    /usr/lib64/ssh/sftp-server
//新增一行如下:
Subsystem sftp internal-sftp

//在/etc/ssh/sshd_config最后面添加如下:属于gwangwusftp组的用户都锁定在/sftpserver/wangwusftp/,且创建的文件的权限为660,目录为770
用户sftpadm锁定在/sftpserver/wangwusftp/,如上所述,/sftpserver/wangwusftp/目录必须为root:root,权限为755,否则锁定失败
Match group gwangwusftp
   ForceCommand internal-sftp -u 007
   ChrootDirectory /sftpserver/wangwusftp/
   X11Forwarding no
   AllowTcpForwarding no
Match user sftpadm
   ForceCommand internal-sftp -u 007
   ChrootDirectory /sftpserver/wangwusftp/
   X11Forwarding no
   AllowTcpForwarding no

/etc/ssh/sshd_config的全部配置如下:
station91/# cat /etc/ssh/sshd_config | grep -v ^# | grep -v ^$
AllowUsers zhangsan@10.46.*.*
AllowUsers lisi@10.46.*.*
AllowUsers wangwu@10.46.*.*
AllowUsers sftpadm@10.46.*.*
PermitRootLogin no
PasswordAuthentication no

UsePAM yes
X11Forwarding yes
UseDNS no //将DNS解析设置为no,避免DNS解析失败,导致长时间无法登入sftp
Subsystem       sftp   internal-sftp
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
Match group gwangwusftp
   ForceCommand internal-sftp -u 007
   ChrootDirectory /sftpserver/wangwusftp/
   X11Forwarding no
   AllowTcpForwarding no
Match user sftpadm
   ForceCommand internal-sftp -u 007
   ChrootDirectory /sftpserver/wangwusftp/
   X11Forwarding no
   AllowTcpForwarding no

10、设置acl,不允许zhangsan,lisi互相访问各自的数据
station91/sftpserver/wangwusftp# setfacl -m u:zhangsan:- lisi
station91/sftpserver/wangwusftp# setfacl -m u:lisi:- zhangsan
station91/sftpserver/wangwusftp# getfacl  lisi
# file: lisi
# owner: lisi
# group: gwangwusftp
user::rwx
user:zhangsan:---
group::r-x
mask::r-x
other::---

station91/sftpserver/wangwusftp# getfacl zhangsan
# file: zhangsan
# owner: zhangsan
# group: gwangwusftp
user::rwx
user:lisi:--- //张三这个目录,lisi用户无访问权限,但能看得到zhangsan这个目录,因为能否看是看上一级目录是否有r权限
group::r-x
mask::r-x
other::---

//设置acl后,测试结果,是OK的
station91/sftpserver/wangwusftp# sftp zhangsan@10.46.14.91
Connecting to 10.46.14.91...
Password:
sftp> pwd
Remote working directory: /
sftp> ls
lisi      sftpadm   wangwu    zhangsan
sftp> cd lisi
sftp> ls
Couldn't get handle: Permission denied //zhangsan用户读取不了lisi的数据了
sftp>

10、设置acl,允许管理员对所有用户的数据都有读写权限
设置acl前,是没有读写权限的,如下所示:
station91/sftpserver/wangwusftp# sftp sftpadm@10.46.14.91
Connecting to 10.46.14.91...
Password:
sftp> pwd
Remote working directory: /
sftp> ls
lisi      sftpadm   wangwu    zhangsan
sftp> cd lisi
sftp> mkdir lisi1 //管理员sftp无法在lisi家目录创建目录
Couldn't create directory: Permission denied
sftp> cd ../sftpadm
sftp> mkdir sftpadm1
sftp>

设置相应的acl:
station91/sftpserver/wangwusftp# setfacl -m u:sftpadm:rwx lisi
station91/sftpserver/wangwusftp# setfacl -m u:sftpadm:rwx zhangsan
station91/sftpserver/wangwusftp# setfacl -m u:sftpadm:rwx wangwu
station91/sftpserver/wangwusftp# setfacl -m d:u:sftpadm:rwx lisi //为了让lisi以后创建的文件都可以让sftpadm读写,所以要设置默认权限(d参数的作用)
station91/sftpserver/wangwusftp# setfacl -m d:u:sftpadm:rwx zhangsan
station91/sftpserver/wangwusftp# setfacl -m d:u:sftpadm:rwx wangwu
station91/sftpserver/wangwusftp# ls -ld *
drwxrwx---+ 2 lisi     gwangwusftp    4096 Nov  2 10:54 lisi
drwxr-x---  3 sftpadm  gwangwusftpadm 4096 Nov  2 11:37 sftpadm
drwxrwx---+ 3 wangwu   gwangwusftp    4096 Nov  2 11:13 wangwu
drwxrwx---+ 2 zhangsan gwangwusftp    4096 Nov  2 10:54 zhangsan
station91/sftpserver/wangwusftp# getfacl lisi
# file: lisi
# owner: lisi
# group: gwangwusftp
user::rwx
user:zhangsan:---
user:sftpadm:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:sftpadm:rwx //sftpadm对lisi家目录的文件和目录都有默认rwx的权限
default:group::r-x
default:mask::rwx
default:other::---

设置相应的acl后,管理员sftpadm是可以在在所有目录上传数据和删除数据,但是上传的数据为sftpadm:gwangwusftpadm,而文件权限为660,目录权限为770,所以
导致管理员sftpadm创建的文件无法让普通用户读和写,如下所示:
station91/sftpserver/wangwusftp# sftp sftpadm@10.46.14.91
Connecting to 10.46.14.91...
Password:
sftp> pwd
Remote working directory: /
sftp> ls
lisi      sftpadm   wangwu    zhangsan
sftp> cd lisi
sftp> mkdir lisi2
sftp> quit
station91wangwusftp/lisi# ls -ld lisi2
drwxrwx---+ 2 sftpadm gwangwusftpadm 4096 Nov  2 11:40 lisi2 //所属的组为gwangwusftpadm,而权限为770,导致lisi用户无法对管理员上传给lisi家目录的数据做处理
这种情况,使用sgid来实现,不管谁创建的文件都属于gwangwusftp这个组所拥有,就可以很好的解决,安全性方面就做的狠到位了。
FJXM-DM-Test-bossinfo-01 /sftpserver/wangwusftp# chmod g+s *
FJXM-DM-Test-bossinfo-01 /sftpserver/wangwusftp# ls -ld *
drwxrws---+ 4 lisi     gwangwusftp    4096 Nov  2 14:24 lisi
drwxr-s---  3 sftpadm  gwangwusftpadm 4096 Nov  2 11:37 sftpadm
drwxrws---+ 6 wangwu   gwangwusftp    4096 Nov  2 11:46 wangwu
drwxrws---+ 5 zhangsan gwangwusftp    4096 Nov  2 14:23 zhangsan
station91/sftpserver/wangwusftp# sftp sftpadm@10.46.14.91
Connecting to 10.46.14.91...
Password:
sftp> pwd
Remote working directory: /
sftp> cd lisi
sftp> mkdir lisi_laici
sftp> quit
station91/sftpserver/wangwusftp# cd lisi
station91wangwusftp/lisi# pwd
/sftpserver/wangwusftp/lisi
station91wangwusftp/lisi# ls -ld lisi_laici/
drwxrws---+ 2 sftpadm gwangwusftp 4096 Nov  2 14:20 lisi_laici/ //这时候由管理员sftpadm创建的目录就不再属于gwangwusftpadm了,管理员存放在lisi
家目录的数据就可以让lisi读写,同理,存放在其他普通用户家目录的数据也可以让他们各自读写了

解决该需求用到的知识点:sshd_config关于sftp的配置,sgid,acl
解决该需求用到的思路:王五要能访问张三,李四目录读取数据,所以王五对张三和李四目录就必须也只能有rx的权限;而张三,李四不能互相访问对方目录读取数据,
张三和李四各自的目录对各自没有rx权限,如果是这样的话,也就是说张三和李四的家目录权限都只能是700,那么王五如何来读取张三和李四的数据???看上去变的该需求不能实现了
这时候就需要想到linux下的acl了,到现在为止,我们要知道的是,我们会用到acl,但怎么用,还得细想,提到上面的思路,可能会让你误解,那就设置张三和李四的家目录权限为700,然后
设置acl,让王五对张三和李四的目录有读取数据的权限不就得了,设置如下:
chmod 700 zhangsan
chmod 700 lisi
setfacl -m u:wangwu:rx zhangsan
setfacl -m u:wangwu:rx lisi
setfacl -m d:u:wangwu:rx zhangsan
setfacl -m d:u:wangwu:rx lisi
但如果这样,我们后面的管理员sftpadm呢,他在zhangsan,lisi,wangwu创建的文件属性为:sftpadm:gwangwusftpadm,创建的目录权限为770,文件权限为:660
那么管理员sftpadm上传数据到在lisi目录,是为了让lisi能读写管理员上传到他家目录的数据,结果却不行,所以正确的思路为:
zhangsan,lisi,wangwu属于同一个组gwangwusftp,家目录的权限均为750,从安全性方面考虑,不允许other用户对他们的数据可以下载,所以other谓设置为0,
设置acl,让张三李四不能互访各自的家目录,而王五仍旧是可以的
setfacl -m u:zhangsan:- lisi
setfacl -m u:lisi:- zhangsan
这时候管理员sftpadm上传给lisi,wangwu,zhangsan的数据仍为sftpadm:gwangwusftpadm,权限为660或者770,导致普通用户无法读写管理员上传给他的数据,这时候就要想到sgid了,连selinux
都要遵守他的规则
chmod g+s lisi
chmod g+s wangwu
chmod g+s zhangsan
这时候sftpadm再上传数据到lisi,wangwu,zhangsan,他们就可以对这些数据进行读写操作了
花了些时日,才理清这些思路的,现共享出来,希望对一些人有用。

    龙虎鹰师网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-19616-1.html
网站维护教程更新时间:2013-01-14 22:13:49  【打印此页】  【关闭
全站连接N点 | 龙虎鹰师网安 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。龙虎鹰师网安服务器维护基地招商进行中!请致电24小时热线: 13910257075 王先生
  开户名:王俊鹏 开户行:招商银行清华园支行:9555500101708872 建设银行清华园分行 6227000014970239251 

footer  footer  互联网安全  footer