Sftp部署及优化
1.SFTP规划SFTP Server Port: 30022
按照项目进行分类,来创建sftp账号
命名规范:
用户名权限sftp目录Chroot目录Group地区+项目+用户(组或个人)rw/r/data/项目/项目/项目项目+RW例:CHN-projectname-arw/data/projectname/projectname/projectnameprojectnameRWCHN-projectname-br/data/projectname/projectname/projectname只有写权限才需要加入对应的组2.配置SFTP
2.1 修改ssh配置
只用第一次修改ssh配置文件
~]# vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
Match LocalPort 20912
ChrootDirectory%h #chroot到所创建用户时的家目录
ForceCommand internal-sftp
~]# systemctl restart sshd3.创建sftp账号
下面是每次创建账号需要的操作
3.1 创建目录结构
~]# mkdir –p /data/projectname/projectname
~]# chmod 775 /data/projectname/projectname3.2 创建sftp用户
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-b
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-a3.3设置sftp用户密码
~]# echo ‘CHN-projectname-b:password1’|chpasswd
~]# echo ‘CHN-projectname-a:password2’|chpasswd
#可以使用其他方式配置密码3.4 创建权限组
~]# groupadd projectnameRW3.5 把需要写权限加入到权限组中
~]# usermod -aG projectnameRW CHN-projectname-b
如果CHN-projectname-a也需要写权限,加入到权限组(projectnameRW)即可3.6 配置目录权限
~]# chown root:projectnameRW /data/projectname/projectname3.7 配置ACL权限
#针对需要多个用户对同一个目录进行读写,需要使用到ACL权限
如果是第一次新建,比较简单,2条命令即可
~]# chmod –R g+s /data/CN-project/CN-project
~]# setfacl -Rm d:g:groupname:rwx /data/CN-project/CN-project
如果是已经在使用的sftp,并且sftp的家目录有数据,手动执行以下命令
~]# chmod -R g+s /data/CN-project/CN-project
~]# setfacl -Rm d:g:groupname:rwx /data/CN-project/CN-project
~]# chown -R :groupname /data/CN-project/CN-project
~]# chmod -R 775 /data/CN-project/CN-project3.8重启sshd服务
~]# systemctl restart sshd4.sftp客户端使用
4.1 Linux6
~]# sftp -oPort=30022 CHN-project-user@10.0.0.1
-oPort=30022:SFTP server Port
CHN-project-user:SFTP Username
10.0.0.1:SFTP Server address4.2 Linux7
~]# sftp -P 30022 CHN-project-user@10.0.0.1
CHN-project-user@10.0.0.1's password: <--输入密码7.sftp开启每个用户连接数限制
~]# cat /etc/ssh/sshd_config
......
Subsystem sftp internal-sftp -l VERBOSE -f AUTHPRIV
Match Group sftp
Match LocalPort 20912
ChrootDirectory%h
ForceCommand internal-sftp -l VERBOSE -f AUTHPRIV8.sftp打开用户认证数量限制
~]# cat /etc/rsyslog.conf
......
authpriv.* /var/log/sftp.log9.sftp配置每个用户最大打开文件数
~]# systemctl restart sshd
~]# systemctl restart rsyslog10.sftp监控项
10.1 监控sftp连接数
~]# cd /etc/logrotate.d/
~]# vi sftp
/var/log/sftp.log {
monthly #默认每月执行一次日志轮询
missingok
rotate 6 #保存6个日志文件
compress
delaycompress
dateext
create 0600 root root
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
~]# systemctl restart rsyslog
测试
~]# logrotate --dbug --verbose --force /etc/logrotate.d/sftp10.2 sftp日志监控,触发连接数限制
监控sftp日志,指定sftp用户触发连接数限制,告警通知
~]# cat /etc/security/limits.d/95-sftp-limit.conf
@sftpusername hard nproc 400 #限制用户连接数为200,这里配置数量为连接数*211.SFTP高可用
11.1 多台sftp底层存储使用阿里云NAS
使用nas作为/data盘. acl授权命令改为nfs4_setfacl.
11.2 多台sftp创建用户时,保持UID,GID一致.
多台sftp server创建用户用此脚本创建.
#!/bin/bash########################################################## Function : Add user in 2 SFTP servers ## Version: 1.0 ######################################################################env define############sshuser=osadmin #多台sftp配置免密用户workdir=/tmpshijian=`date +%Y_%M_%d_%H_%m`server1=10.0.0.1server2=10.0.0.2server3=10.0.0.3server4=10.0.0.4sftpport=30022sshport=22new_user=${1}user_pass=${2}############env define######################## USAGE ############if [[ $# != 2 ]];then echo -e "\033thenecho "No input , please check"else min=$1 max=$1 sum=0 for i in "$@" do if [ $min -gt $i ] then min=$i fi if [ $max -lt $i ] then max=$i fi sum=$[$sum+$i]done echo $maxfi}### check if all server alivecheck_server_alive() {nc -4 -w 2 -z ${1} ${2}if [ $? -eq 0 ]then echo -e "\033then echo -e "\033then echo -e "\033[32;1m User ${1} creation in ${serverip} done \033[0m"else echo -e "\033[31;5m User ${1} creation in ${serverip} failed , please check it manually ~! \033[0m" exitfissh ${sshuser}@${serverip} "sudo /bin/passwd ${1}
页:
[1]