CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
1. 安装iptables防火墙
# 先检查是否安装了iptables(如果提示iptables:unrecognized service 则表示系统尚未安装)
service iptables status
# 安装iptables
yum install iptables
# 升级iptables
yum update iptables
# 安装iptables-services
yum install iptables-services
2. 关闭Firewall
# 停止firewall 服务
systemctl stop firewalld.service
# 禁用firewall 服务
systemctl mask firewalld.service
# 禁止firewall服务开机启动
systemctl disable firewalld.service
# 查看firewall服务状态
firewall-cmd --state
3. 查看Iptables所在目录与配置文件
#安装完成后,配置文件默认所在位置
# /etc/sysconfig/iptables
4. 设置现有规则
# 查看iptables现有规则
iptables -L -n
# 先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
# 清空所有默认规则
iptables -F
# 清空所有自定义规则
iptables -X
# 所有计数器归0
iptables -Z
4.1 iptables 规则设置
# 允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
# 允许本机对外访问
iptables -A OUTPUT -j ACCEPT
# 允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 开放22端口(SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 开放21、20端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# 开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# 10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。
并且发送一条host prohibited的消息给被拒绝的主机。
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
注:防火墙的规则是从上到下解析的
4.2 保存规则设定
# 保存上述规则
service iptables save
# 查看iptables现有规则
iptables -L -n
4.3 开启iptables服务
# 最后重启防火墙使配置生效
systemctl restart iptables.service
# 设置防火墙开机启动
systemctl enable iptables.service
# 查看状态
systemctl status iptables.service
# 确定是否enabled
systemctl list-unit-files | grep iptables
二、 关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing # 注释掉
#SELINUXTYPE=targeted # 注释掉
SELINUX=disabled # 增加
:wq! # 保存退出
如果在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled
那么说明selinux已经被彻底的关闭了
如果需要重新开启selinux,请按下面步骤:
vi /etc/selinux/config
更改为:SELINUX=1
必须重启linux,不重启是没办法立刻开启selinux的
三、 安装vsftpd
# 安装vsftpd
yum install -y vsftpd
yum -y install ftp vsftpd
# 安装vsftpd虚拟用户配置依赖包
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
# 启动
systemctl start vsftpd.service
# 查看vsftpd服务的状态
systemctl status vsftpd.service
systemctl list-unit-files | grep vsftpd.service
# 设置vsftpd开机启动
systemctl enable vsftpd.service
四、 配置
# 备份默认配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
# 执行以下命令进行设置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
#之后添加下列内容到vsftpd.conf末尾
vim /etc/vsftpd/vsftpd.conf
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \
ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd \
nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \
npasv_min_port=10060\npasv_max_port=10090 \
naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
五、 建立虚拟用户名单文件
touch /etc/vsftpd/virtusers
# 编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
六、 生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
chmod 600 /etc/vsftpd/virtusers.db
七、 在/etc/pam.d/vsftpd文件添加以下信息
# 修改前先备份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
# 将auth及account的所有配置行均注释掉
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注:如果系统为32位,上面改为lib,否则配置失败
八、 新建系统用户vsftpd,用户目录为/home/vsftpd, 用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd
九、 建立虚拟用户个人Vsftp的配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1 web2 web3 # 这里创建三个虚拟用户配置文件
mkdir -p /home/vsftpd/web1/
vi web1 # 编辑用户web1配置文件,其他的跟这个配置文件类似
local_root=/home/vsftpd/web1/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
十、 重启vsftpd服务器
systemctl restart vsftpd.service
# 查看vsftpd服务的状态
systemctl status vsftpd.service
systemctl list-unit-files | grep vsftpd
CentOS7配置FTP服务器增强版~(零基础学会FTP配置)的更多相关文章
- 【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-上位机源码
[CC2530入门教程-增强版]基础技能综合实训案例(基础版)-上位机源码 广东职业技术学院 欧浩源 一.需求分析 按照指定参数打开串口,与测控终端建立数据传输通道,并根据应用要求实现程序逻辑,具体 ...
- 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)
大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...
- Linux ftp服务器部署(最简单的ftp教程)
之前在阿里云领了一个ECS服务器(顺便说一句,白嫖的,真香~),就想着做点什么,然后试着做个 ftp 站点,因为第一次尝试,结果走了不少弯路.最后终于完成了,研究了两天(哎~,脑壳笨没办法)就想着记录 ...
- ftp服务器搭建(windows)+实现ftp图片上传对接
ftp服务器搭建(windows): vsftpd简介: vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 下载地址: http: ...
- 搭建FTP(win10版)以及基本FTP操作
参考链接:https://www.jianshu.com/p/ece21421e246 一.FTP服务器搭建 控制面板 - 程序和功能 - 启动或关闭Windows功能 启动以下功能: 搜索 “Int ...
- 阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇
开始安装软件了,我们需要安装的软件有apache,php和MySQL. ps:如果你购买的是北京的服务器,有个安全组需要设置,我全部用的默认设置,暂时还没发现会有什么影响. 首先关闭SELINUX(S ...
- Spark (Python版) 零基础学习笔记(一)—— 快速入门
由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为: http://spark.apache.org/do ...
- Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例
1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...
- webpack4.x 从零开始配置vue 项目(二)基础搭建loader 配置 css、scss
序 上一篇已经把基本架子搭起来了,现在来增加css.scss.自动生成html.css 提取等方面的打包.webpack 默认只能处理js模块,所以其他文件类型需要做下转换,而loader 恰恰是做这 ...
随机推荐
- Tornado学习笔记(一) helloword/多进程/启动参数
前言 当你觉得你过得很舒服的时候,你肯定没有在进步.所以我想学习新的东西,然后选择了Tornado.因为我觉得Tornado更匹配目前的我的综合素质. Tornado学习笔记系列主要参考<int ...
- 通过printf从目标板到调试器的输出
最近在SEGGER的博客上看到Johannes Lask写的一篇关于在调试时使用printf函数从目标MCU输出信息到调试器的文章,自我感觉很有启发,特此翻译此文并推荐给各位同仁.当然限于个人水平,有 ...
- RianbowDesign
换了很多个名字,最后换成这个. 主要考虑把自己所学的.所经历的都结合到一起,用这种方式来保持热情. 算是一个设计网站,管理咨询,游戏设计,平面logo之类,想最多地攘括到里边.就像自己不确定的主业一样 ...
- LeetCode(80):删除排序数组中的重复项 II
Medium! 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额 ...
- laravel 兜底路由
在 Laravel 5.6 中,引入了兜底路由功能.所谓兜底路由,就是当路由文件中定义的所有路由都无法匹配用户请求的 URL 时,用来处理用户请求的路由,在此之前,Laravel 都会通过异常处理器为 ...
- C++ GetSystemDirectory()
关于GetSystemDirectory function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724373(v ...
- jenkins+git+maven 增量部署思路以及相关脚本
之前通过jenkins+Git+maven这种方式打war包然后scp到测试环境使用,但是现在项目组要求打增量包,即只部署修改的文件和配置文件. 核心问题:如何获取到变动的文件??? 前置条件:初始化 ...
- c++ 链表基础功能实现
#include<stack> struct ListNode { int m_nValue; ListNode* m_pNext; }; ListNode* CreateListNode ...
- 上手TensorFlow
tensorflow中softmax_cross_entropy和sparse_softmax_cross_entropy的区别 都是softmax cross entropy损失函数,区别在于lab ...
- 【C++ Primer | 07】泛型算法
定制操作 #include <iostream> #include <string> #include <vector> #include <algorith ...