侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 163 篇文章
  • 累计创建 66 个标签
  • 累计收到 2 条评论

利用VSFTP搭建交换机配置文件自动上传服务

liveJQ
2022-04-27 / 0 评论 / 0 点赞 / 754 阅读 / 2,475 字

vsftpd/focal 3.0.3-12 amd64

lightweight, efficient FTP server written for security.

添加用户

这里以 Ubuntu 20.04 为例

sudo adduser junos
mkdir /home/junos/ftp
chown nobody:nogroup /home/junos/ftp
chmod a-w /home/junos/ftp
mkdir /home/junos/ftp/configs
chown junos:junos /home/junos/ftp/configs

CentOS的方式为:useradd -d /home/junos -g ftp -s /sbin/nologin junos

安装

sudo apt install vsftpd -y
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

/etc/vsftpd.conf 关键配置

listen=YES
#允许用户创建目录
write_enable=YES
#允许本地用户登录,必须启用此选项才能使任何非匿名登录正常工作
local_enable=YES
#指定下默认权限
local_umask=022
#允许客户端查看目录下的信息,文件列表、大小、创建或修改日期等
dirmessage_enable=YES
#采用本地时区
use_localtime=YES
#FTP数据传输默认端口
connect_from_port_20=YES
#打开日志记录
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#限制用户只能在home主目录下切换,无法通过根目录进入到其他目录
chroot_local_user=YES
#让家目录可写(不设置YES无法上传文件)
allow_writeable_chroot=YES
#设置默认存储目录
user_sub_token=$USER
local_root=/home/$USER/ftp/configs
#允许下面端口通过防火墙,指定动态端口范围,对于开启了防火墙来说很有用,作用于某些客户端采用的passive模式
pasv_min_port=40000
pasv_max_port=50000
#结合hosts.allow和hosts.deny文件允许特定IP连接
tcp_wrappers=YES
#禁止登录的用户列表(默认,设置 userlist_deny=NO 则变为允许登录的用户列表)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

然后加上允许 FTP 登录的用户,这里是junos

cat <<EOF>/etc/vsftpd.userlist
junos
EOF

防火墙放行端口

sudo ufw allow ssh
sudo ufw allow 20,21/tcp
sudo ufw allow 40000:50000/tcp

启动服务

systemctl start vsftpd

测试

root@user:~# ftp -p localhost
Connected to localhost.
220 Welcome to Switches FTP service.
Name (localhost:root): junos
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,193,164).
150 Here comes the directory listing.
drwxr-xr-x    2 1000     1000         4096 Apr 28 02:15 configs
226 Directory send OK.
ftp> 

这里是指定使用Passive Mode(服务端分配动态端口),默认是使用pftp(tcp_ftp)的Active Mode(服务端使用固定的20端口)

如果没有加上allow_writeable_chroot=YES,会报错:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Juniper 配置

[edit system archival configuration]
archive-sites {
 ftp://username<:password>@host-address<:port>/url-path;
 scp://username<:password>@host-address<:port>/url-path;
 http://username @host-address :url-path <password>;
}
transfer-interval interval;
transfer-on-commit;

我这边是 FTP 的配置,示例:

ftp://junos:dpb3XyG6P@10.10.10.100

配置成功的前提是你的 Juniper 设备首先能 ping 通 FTP 主机IP,或直接尝试在该设备上使用 ftp 命令

有两种触发方式:

  • transfer-interval interval

定时备份,interval 范围为 15 至 2880 分钟。

  • transfer-on-commit

在每次提交候选配置时将其当前活动配置传输到存档站点。

相关资料

  1. vsftpd.conf(5) - Linux man page
  2. 配置 vsftpd 使用 SSL 证书加密数据传输
  3. chroot_local_user与chroot_list_enable详解
  4. How To Set Up vsftpd for a User's Directory on Ubuntu 20.04
  5. Active vs. passive FTP Simplified
  6. vsftpd超实用技巧详解(二)限制用户逃出家目录
0

评论区