CentOS7配置FTP服务器增强版~(零基础学会FTP配置)

ps:原文不知出处,但是原文也不能正常启动,这里做了一些修改!如果能正常配置请在下方留言让更多的人看到,因为之前我本人照着网上的教程安装卸载了十多次也无法正常使用,不希望后面的兄弟继续浪费时间,如果不能使用,也请劳烦贴出相应的错误!
参考:
一、 防火墙设置(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(局域网)测试!
可以登录但是无法上传下载,接下来:
 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.其它用户组可读可执行
 
posted @ 2017-06-28 09:56  748573200000  阅读(2352)  评论(0编辑  收藏  举报