linux下sftp安全配置,如何构建安全的sftp

搭建一个sftp服务器,

可断点续传文件, 同时要求安全性高:

1. 开启selinux, 使用chroot

2. 同时运行两个sshd服务, 暂时称作sshd-a, sshd-b, 并提供user-a来使用sftp.

那么:

2.1. sshd-a的端口, 不会限制ip访问. user-a只能连接到sshd-a服务上, 除user-a之外的账户,

不能连到sshd-a服务上.

2.2. sshd-b的端口(默认是22), 会限制ip访问, 除user-a之外的账户,

能且只能连到sshd-b服务上.

下面的链接已经包含了所有的操作和说明, 本文档只是整理而已

一. 新建group和user

1. 新建一个group(sftponly), 属于该group的用户, 都将被限制只能访问sftp:

groupadd sftponly

2. 创建一个账户(sftponlyuser),

用于sftp操作.

useradd -M -g sftponly sftponlyuser

上面的命令, 新建了一个sftponlyuser, 隶属于sftponly用户组.

默认的该账户的home目录是/home/sftponlyuser, 但 "-M" 选项, 使该命令并未创建该目录.

究其原因, 是因为chroot-ed的目录, 属主必须是root, 且不能被其他账户write.当然, 该目录下用来上传文件的子目录(比如upload),

属主必须是sftponlyuser

mkdir -p

/home/sftponlyuser/upload

chown sftponlyuser:

/home/sftponlyuser/upload

restorecon -R -v

/home/sftponlyuser

3.

给sftponlyuser设置密码

passwd sftponlyser

二. 在一个linux服务器上, 同时运行两个sshd服务. 以 centos6.x x86_64

为例:

1. 复制sshd: cp /usr/sbin/sshd /usr/sbin/sshd2

2. 复制sshd的配置文件: cp /etc/ssh/sshd_config /etc/ssh/ssh2d_config,

并在/etc/ssh/ssh2d_config中,

添加如下配置:

#新的sshd服务(ssh2d),

监听33端口

Port 33

#使用pam,

默认亦如此

UsePAM yes

#override

default of no subsystems

#开启sshd的内部sftp服务

#Subsystem

sftp

/usr/libexec/openssh/sftp-server

Subsystem

sftp

internal-sftp

#限制sftponly组的账户, 都只能访问sftp子系统.

且chroot-ed了.

Match

Group sftponly

ForceCommand internal-sftp

X11Forwarding no

AllowTcpForwarding no

ChrootDirectory %h

3. cp /etc/sysconfig/sshd /etc/sysconfig/ssh2d,

并修改/etc/sysconfig/ssh2d的内容如下:

#

Configuration file for the sshd service.

# The

server keys are automatically generated if they

ommited

# to

change the automatic creation uncomment the approprite

line.

#

AUTOCREATE_SERVER_KEYS=RSAONLY

#

AUTOCREATE_SERVER_KEYS=NO

AUTOCREATE_SERVER_KEYS=YES

# Do not

change this option unless you have hardware random

#

generator and you REALLY know what you are doing/

export

SSH_USE_STRONG_RNG=0

# export

SSH_USE_STRONG_RNG=1

#指向新的配置文件

OPTIONS="-f

/etc/ssh/ssh2d_config"

4. cp /etc/init.d/sshd /etc/init.d/ssh2d , 并根据上面的内容,

仔细修改/etc/init.d/ssh2d. 5.  复制一个pam的配置文件

cp /etc/pam.d/sshd /etc/pam.d/ssh2d

注意: 现在的sshd, 都会以当前的可执行文件的文件名, 来选取pam的配置文件.

我们可使用下面的命令来验证这一点:

#-f表示亦追踪子进程的系统调用

strace -fp {ssh2d_pid} -e trace=open

可以在输出中, 看到打开的文件是/etc/pam.d/ssh2d, 而不再是/etc/pam.d/sshd

5. 添加我们刚做的第二个sshd服务(ssh2d), 并设置成自启动:

chkconfig --add ssh2d

chkconfig ssh2d on

三. 限制账户只能在连接到指定的sshd服务上

1. 修改/etc/pam.d/sshd, 在最前添加下面的行:

auth required pam_listfile.so item=user sense=deny

file=/etc/sshd/sshd.deny onerr=succeed

并新建/etc/sshd/sshd.deny文件, 同时加入下面的内容,

如此阻止sftponlyuser登录到第一个sshd服务上

sftponlyuser

2. 修改/etc/pam.d/ssh2d, 在最前添加下面的行:

auth required pam_listfile.so item=user sense=allow

file=/etc/ssh/ssh2d.allow onerr=fail

并新建/etc/sshd/ssh2d.allow文件,

同时加入下面的内容, 如此只允许sftponlyuser登录到ssh2d服务上

sftponlyuser

3. 重启 sshd 和 ssh2d 服务:

/sbin/service sshd

restart

/sbin/service ssh2d

restart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值