CentOS7 下的配置FTP服务器增强版~(零基础学会FTP配置)
2017-06-27 17:54
489 查看
ps:原文不知出处,但是原文也不能正常启动,这里做了一些修改!如果能正常配置请在下方留言让更多的人看到,因为之前我本人照着网上的教程安装卸载了十多次也无法正常使用,不希望后面的兄弟继续浪费时间,如果不能使用,也请劳烦贴出相应的错误!
参考:
http://blog.csdn.net/qq_26941173/article/details/54575952
http://blog.csdn.net/u012456926/article/details/50096473
一、
防火墙设置(CentOS
7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙)
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
0 # 使配置立即生效
如果出现:setenforce:
SELinux is disabled解决办法(很多是没有注意到这个细节导致最后ftp无法访问!)
如果在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled
那么说明selinux已经被彻底的关闭了
如果需要重新开启selinux,请按下面步骤:
vi /etc/selinux/config
更改为:SELINUX=1
必须重启linux,不重启是没办法立刻开启selinux的
重启完以后,使用getenforce,setenforce等命令就不会报“setenforce:
SELinux is disabled”了
然后再重复:
SELINUX=disabled #
增加
保存退出
setenforce 0 #
使配置立即生效
如果没有出现setenforce: SELinux is disabled就继续下一步,否则请先将此问题解决!
三、 安装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'
sed
-i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed
-i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./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
connect_timeout=1
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
最后在浏览器或者我的电脑里输入ftp://192.168.163.126(局域网)测试!
可以登录但是无法上传下载,接下来:
新建文件夹m:
mkdir /home/vsftpd/web1/m/
因为web1目录的所有者为root,所以ftp帐号web1不能进行下载
chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
这样 /home/vsftpd/web1/m/ m这个目录的所有者为vdftpd即ftp帐号自己,web1帐号就能在m文件夹下进行上传下载删除!
/****************************************************************************************************************************************************************************/
一般情况下,为了网站更安全,我们需要给文件或文件夹设置权限,在采用FTP登录的方式下,经常会用到755,766,777,644等设置。
具体这些数字都代表什么意思呢?
这三个数字分别表示:不同用户或用户组的权限。
第一个数字 表示文件所有者的权限
第二个数字 表示与文件所有者同属一个用户组的其他用户的权限
第三个数字 表示其它用户组的权限。
权限分为三种: 读(r=4),写(w=2),执行(x=1)。
综合起来还有可读可执行5(rx=5=4+1)、可读可写6(rw=6=4+2)、可读可写可执行7(rwx=7=4+2+1)。
所以,755 设置用户的权限为:
1.文件所有者可读可写可执行 2.与文件所有者同属一个用户组的其他用户可读可执行 3.其它用户组可读可执行
参考:
http://blog.csdn.net/qq_26941173/article/details/54575952
http://blog.csdn.net/u012456926/article/details/50096473
一、
防火墙设置(CentOS
7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙)
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
0 # 使配置立即生效
如果出现:setenforce:
SELinux is disabled解决办法(很多是没有注意到这个细节导致最后ftp无法访问!)
如果在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled
那么说明selinux已经被彻底的关闭了
如果需要重新开启selinux,请按下面步骤:
vi /etc/selinux/config
更改为:SELINUX=1
必须重启linux,不重启是没办法立刻开启selinux的
重启完以后,使用getenforce,setenforce等命令就不会报“setenforce:
SELinux is disabled”了
然后再重复:
SELINUX=disabled #
增加
保存退出
setenforce 0 #
使配置立即生效
如果没有出现setenforce: SELinux is disabled就继续下一步,否则请先将此问题解决!
三、 安装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'
sed
-i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed
-i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./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
connect_timeout=1
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
最后在浏览器或者我的电脑里输入ftp://192.168.163.126(局域网)测试!
可以登录但是无法上传下载,接下来:
新建文件夹m:
mkdir /home/vsftpd/web1/m/
因为web1目录的所有者为root,所以ftp帐号web1不能进行下载
chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
这样 /home/vsftpd/web1/m/ m这个目录的所有者为vdftpd即ftp帐号自己,web1帐号就能在m文件夹下进行上传下载删除!
/****************************************************************************************************************************************************************************/
一般情况下,为了网站更安全,我们需要给文件或文件夹设置权限,在采用FTP登录的方式下,经常会用到755,766,777,644等设置。
具体这些数字都代表什么意思呢?
这三个数字分别表示:不同用户或用户组的权限。
第一个数字 表示文件所有者的权限
第二个数字 表示与文件所有者同属一个用户组的其他用户的权限
第三个数字 表示其它用户组的权限。
权限分为三种: 读(r=4),写(w=2),执行(x=1)。
综合起来还有可读可执行5(rx=5=4+1)、可读可写6(rw=6=4+2)、可读可写可执行7(rwx=7=4+2+1)。
所以,755 设置用户的权限为:
1.文件所有者可读可写可执行 2.与文件所有者同属一个用户组的其他用户可读可执行 3.其它用户组可读可执行
相关文章推荐
- [置顶]CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
- CentOS7安装及配置vsftpd (FTP服务器)
- CentOS7服务器基础配置
- CentOS7安装及配置vsftpd (FTP服务器)
- CentOS7 配置FTP服务器
- CentOS7安装配置FTP服务器
- centos7的yum源配置,web和ftp服务器挂载
- CentOS7安装配置FTP服务器
- centos7 配置ftp服务器
- reeBSD网站平台建设全过程(四、安装配置ftp服务器)
- Windows中IIS内FTP服务器高级配置
- Linux下FTP服务器vsftp配置大全超完整版
- FTP之‘基础连接已关闭:服务器提交了协议冲突’错误探析
- Ubuntu 网络应用服务器 Apache 配置基础
- Web和Ftp服务器管理配置完全解析
- FTP基础连接已关闭:服务器提交了协议冲突(C#)解决办法
- Linux_第3章 Linux下FTP服务器的配置和使用
- ftp服务器配置测试步骤
- vsftpd + rhel5.0 虚拟ftp服务器配置手记。
- Linux网络服务器配置基础