Linux上搭建FTP服务器-从基础到进阶

一、安装、创建基础的匿名FTP服务器。
1.检查vsftpd是否安装
root@DB105 ~]# rpm -qa|grep vsftpd
vsftpd-2.2.2-14.el6.x86_64
1.1 如未安装,进行yum或其他方式安装vsftpd,例:
[root@DB105 ~]# yum install vsftpd -y

2.配置防火墙

vsftpd软件安装完后,默认端口是21,所以需要在防火墙配置中开放21端口;
[root@DB105 ~]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT  //新加行
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
防火墙配置完后,需要重启防火墙服务,配置才会生效
[root@DB105 ~]# service iptables restart

3.启动vsftpd前的一些必要配置

3.1 关闭selinux,将enforcing改为disabled
[root@DB105 ~]# cat /etc/selinux/config |grep ^[^#]
SELINUX=disabled
SELINUXTYPE=targeted
[root@DB105 ~]# setenforce 0
注:
selinux的修改需要重启后生效;
如果不想重启系统,使用命令setenforce修改当前状态
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式

4.启动vsftpd服务,并设置为开机自启动

[root@DB105 ~]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@DB105 ~]# chkconfig vsftpd on
[root@DB105 ~]# netstat -lnput |grep vsftpd
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1797/vsftpd

5.与 vsftpd服务器有关的文件和文件夹

vsftpd服务器的配置文件的是:/etc/vsftpd/vsftpd.conf
vsftpd服务器的根目录,即FTP服务器的主目录:/var/ftp/pub

小结:至此已经完成了初步的ftp服务器搭建,你可以在本地PC直接输入[htp://ip:[port]]进行访问,不需要用户名密码,端口21可省略,即 htp://192.168.10.4。系统默认在目录下创建了文件夹pub。

二、配置用户/密码,让其使用特定的目录。

6.添加FTP本地用户(虚拟用户)
FTP大家可能都用过,通过给定的HOST、账号、密码就可以访问服务器对应的目录空间了。但是,这个FTP账号只能访问FTP服务,不能登录服务器系统,且只能访问自己的目录(区别与默认的/var/ftp/pub)。这样的用户就叫虚拟用户(并不准确),仅仅只是为了能访问某个文件夹而已。

6.1 创建一个FTP用户的命令如下:

useradd -d /ftp -g ftp -s /sbin/nologin ftpserver
此命令的含义:
使用shell命令useradd添加一个ftpserver的用户,但是不能登录操作系统(-s /sbin/nologin),该账户的主目录在(-d /ftp 可自定义目录),属于ftp这个用户组(-g ftp 组名可自定义)
6.2 现在来设置账户的密码,命令如下
[root@DB105 ~]passwd ftpserver

7.vsftpd配置文件的调整 

[root@DB105 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
//设定不允许匿名访问,默认为YES

xferlog_file=/var/log/vsftpd.log
//设定vsftpd的服务日志保存路径,默认被#注释。注意,该文件默认不存在。必须要手动touch

[root@DB105 ~]# touch /var/log/vsftpd.log 

以下为本机使用的参数文件配置,除了上述两条,其他几乎都是默认配置。
[root@DB105 ~]# cat /etc/vsftpd/vsftpd.conf|grep ^[^#]
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=600
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

小结:至此你可以在本地PC使用“用户名/密码”登录,访问该用户指定的目录。在文件夹地址栏输入htp://ip,输入用户名/密码即可(如登录的是匿名默认地址/var/ftp/pub,则在窗口中右击,选择登录)。勾选匿名登录即会登录系统默认的地址(很多攻城狮在配置虚拟用户时,习惯禁用匿名登录)。


三、配置特殊需求,继续打怪升级。

7.vsftpd配置文件的调整 
[root@DB105 ftp]# vim /etc/vsftpd/vsftpd.conf


local_enable=YES
//设定本地用户可以访问,默认为YES。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。
 
chroot_local_user=YES
//使所有用户不能离开主目录,默认被#注释,
注:如果要限制特定用户不可以切换主目录
将#chroot_list_enable=YES,#chroot_list_file=/etc/vsftpd/chroot_list前#注释掉,并在/etc/vsftpd/chroot_list下添加制定的用户即可
 
listen_port=2510
//默认端口为21,为了安全性可以修改该端口,修改后记得重启ftp服务、加入防火墙配置,登录地址也发生了改变htp://IP:[port]
 
idle_session_timeout=600
//默认为600秒,空闲时间过久连接会中断,默认未启用,需将#号删除
 
注:vsftpd配置文件的调整,水很深,需要深究的朋友可参考下面大神总结:
更详细的参数解析:http://blog.csdn.net/u011364306/article/details/49078127
 
8.限制客户端的可连接IP地址

8.1首先检查vsftpd.conf中的tcp_wrappers
[root@DB105 vsftpd]# grep "tcp_wrappers" /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES

8.2配置hosts.deny文件,限制所有网段不能连接
[root@DB105 ~]# cat /etc/hosts.deny |grep ^[^#]
vsftpd:all:Deny   //限制所有网段都不可以连接

8.3接下来编辑hosts.allow文件,允许192.168.1网段可以连接
[root@DB105 ~]# cat /etc/hosts.allow |grep ^[^#]
vsftpd:192.168.1.*:Allow  //开放192.168.1网络可以连接

9.使用chattr命令可以对某个文件夹下的内容只允许上传和下载,而不许删除

[root@DB105 /]# chattr +a /ftp/Upload

10.对目录设置500权限就将该文件夹只许下载,不许上传和删除

[root@DB105 /]# chmod -R 500 /ftp/Upload

猜你喜欢

转载自blog.csdn.net/karloo/article/details/52400824