Linux下搭建ftp服务
2012-10-30 14:31
549 查看
Linux下搭建ftp服务一般都用vsftpd(very secure ftp daemon),因为ftp协议是采用明码传输的,没有安全性可言,vsftpd则是一个提供较安全的ftp服务软件,下面简单介绍一下vsftpd的搭建,测试环境为centos 6.3。
什么都不显示则表示系统还没有安装该软件,否则会显示安装软件的版本信息。
vsftpd安装成功。
从上面输出可以看到防火墙开着,如果想关闭防火墙可以执行下面的命令:
可以看到防火墙都关了,想重启防火墙则可以执行下面的命令。
如果不想关闭防火墙的话,那么就需要添加端口号,执行下面命令:
从上面的status中可以看到21端口已经开启,21端口是ftp的默认端口号,保存对防火墙的设置执行下面的命令:
如果仅仅是在防火墙中添加端口是不行的,因为服务端的数据通道到了防火墙之后就找不到原始的客户端了,所以还是连接不上的。要解决这个问题就需要在防火墙中添加ip_nat_ftp和ip_conntrack_ftp两个模块,如下所示:
进入iptables-config配置文件中修改IPTABLES_MODULES参数,两个模块名称以空格隔开,保存退出后重启服务就可以了。
默认模式为enforcing的将其改为disabled就可以了。(如果不关闭selinux的话,本人在配置过程中发现客户端连接不上)
以上面方式修改selinux后不要忘记重启。
以上是selinux中默认的ftp参数设置,如果想连接ftp需修改allow_ftpd_full_access和ftp_home_dir两个参数值。
执行以上命令后就可以在selinux处于enforcing模式下连接ftp了。
如上所示代表我系统中的这些用户无法登录ftp,如果不想让某个实体用户不能登录ftp,只需将用户名写入这个文件就可以了。
以上参数配置都是安装好之后的默认参数值,下面简单介绍一下一些常用的参数。
connect_from_port_20=YES <<==主动连接时,服务端数据传输的端口号
listen_port=21 <<==ftp命令通道的端口号(默认就是21),端口适用于standalone启动模式
dirmessage_enable=YES <<==当用户进入某个目录后,显示需要注意的内容,跟message_file参数有关
message_file=./message <<==当dirmessage_enable=YES显示指定文件中的信息
listen=YES <<==表示vsftpd是以stand alone方式启动的
pasv_enable=YES <<==支持被动式联机模式
use_localtime=YES <<==使用本地时间
write_enable=YES <<==允许用户上传数据
connect_timeout=60 <<==主动模式下,60秒内得不到客户端响应则强制断线
accept_timeout=60 <<==被动模式下,60秒内得不到客户端响应则强制断线
data_connection_timeout=180 <<==如果客户在180秒内无法完成数据的传输,则强制断线
idle_session_timeout=180 <<==180秒内无任何操作则强制断线
max_clients=10 <<=限制同一时间最多可以有10个客户端连接到vsftpd(适用于stand alone启动)
max_per_id=1 <<==表示每个ip来源只能建立一个连接
ftpd_banner=welcome <<==登录vaftpd后的提示信息
banner_file = /file <<==表明用某个文件中的内容作为提示信息
guest_enable=YES <<==任何实体账户登入后都被认为是guest
guest_username=ftp <<==当guest_enable有效时,guest所拥有的权限跟ftp用户的权限一样
local_enable=YES <<== 表示系统用户能以实体用户的方式登录ftp
local_max_rate=0 <<==实体用户的传输速度,单位bytes/second,0为不限制
local_umask=022 <<==实体用户上传文件的权限
chroot_local_user=YES <<==限制实体用户是否在自己的家目录下
chroot_list_enable=YES <<==表示只有chroot_list_file参数指定的文件下的用户才会chroot
chroot_list_file=/etc/vsftpd/chroot_list <<==指定只有在chroot_list文件中的用户才用chroot,如果登入的用户名不在chroot_list中,则用户无法登录
userlist_enable=YES <<==控制user_list文件是否有效,但还要看user_deny参数
userlist_deny=YES <<==配合userlist_enable参数来限制某些账号的登入
userlist_file=/etc/vsftpd/user_list <<==指定userlist文件所在
anonymous_enable=YES <<==是否允许匿名登录
xferlog_enable=YES <<==使用者上传下载都会被记录下来
xferlog_std_format=YES <<==支持wuftp登录格式
tcp_wrappers=YES <<==是否支持tcp wrappers
pam_service_name=vsftpd <<==pam模块的名称,表示支持pam模块的管理
如果执行ftp localhost时报命令找不到,则需要安装ftp软件包。
执行到这里就表示ftp服务已经搭建好了。
1、检查是否已安装软件
[root@localhost ~]# rpm -qa | grep vsftpd [root@localhost ~]#
什么都不显示则表示系统还没有安装该软件,否则会显示安装软件的版本信息。
2、安装vsftpd
没有rpm安装包的话可以到系统安装盘中的package文件夹下去找,也可以通过yum安装,下面用rpm安装方式。[root@localhost tmp]# rpm -ivh vsftpd-2.2.2-11.el6.i686.rpm Preparing... ########################################### [100%] 1:vsftpd ########################################### [100%] [root@localhost tmp]#
vsftpd安装成功。
3、查看防护墙
[root@localhost tmp]# chkconfig iptables --list iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost tmp]#
从上面输出可以看到防火墙开着,如果想关闭防火墙可以执行下面的命令:
[root@localhost tmp]# chkconfig iptables off [root@localhost tmp]# chkconfig iptables --list iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost tmp]#
可以看到防火墙都关了,想重启防火墙则可以执行下面的命令。
[root@localhost tmp]# chkconfig iptables on [root@localhost tmp]# chkconfig iptables --list iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
如果不想关闭防火墙的话,那么就需要添加端口号,执行下面命令:
[root@localhost tmp]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT [root@localhost tmp]# /etc/init.d/iptables status Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination [root@localhost tmp]#
从上面的status中可以看到21端口已经开启,21端口是ftp的默认端口号,保存对防火墙的设置执行下面的命令:
[root@localhost tmp]# /etc/init.d/iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] [root@localhost tmp]#
如果仅仅是在防火墙中添加端口是不行的,因为服务端的数据通道到了防火墙之后就找不到原始的客户端了,所以还是连接不上的。要解决这个问题就需要在防火墙中添加ip_nat_ftp和ip_conntrack_ftp两个模块,如下所示:
[root@localhost ~]# vi /etc/sysconfig/iptables-config # Load additional iptables modules (nat helpers) # Default: -none- # Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which # are loaded after the firewall rules are applied. Options for the helpers are # stored in /etc/modprobe.conf. #IPTABLES_MODULES="" IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
进入iptables-config配置文件中修改IPTABLES_MODULES参数,两个模块名称以空格隔开,保存退出后重启服务就可以了。
4、查看selinux
[root@localhost tmp]# sestatus SELinux status: enabled <==是否启动 SELinux SELinuxfs mount: /selinux Current mode: enforcing <==目前的模式 Mode from config file: enforcing Policy version: 24 Policy from config file: targeted [root@localhost tmp]#
4.1、关闭selinux
[root@localhost ~]# vi /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
默认模式为enforcing的将其改为disabled就可以了。(如果不关闭selinux的话,本人在配置过程中发现客户端连接不上)
以上面方式修改selinux后不要忘记重启。
4.2、开启selinux
如果不想关闭selinux的话,可以在selinux中修改ftp的参数设置:[root@localhost ~]# getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off [root@localhost ~]#
以上是selinux中默认的ftp参数设置,如果想连接ftp需修改allow_ftpd_full_access和ftp_home_dir两个参数值。
[root@localhost ~]# setsebool -P allow_ftpd_full_access=1 [root@localhost ~]# setsebool -P ftp_home_dir=1 [root@localhost ~]# service vsftpd restart
执行以上命令后就可以在selinux处于enforcing模式下连接ftp了。
5、vsftpd配置文件
vsftpd安装好之后配置文件都放在/etc/vsftpd/目录下面[root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd]# ll -a total 36 drwxr-xr-x. 2 root root 4096 Oct 29 16:03 . drwxr-xr-x. 117 root root 12288 Oct 29 16:03 .. -rw-------. 1 root root 125 Jun 22 15:54 ftpusers -rw-------. 1 root root 361 Jun 22 15:54 user_list -rw-------. 1 root root 4599 Jun 22 15:54 vsftpd.conf <<==主配置文件 -rwxr--r--. 1 root root 338 Jun 22 15:54 vsftpd_conf_migrate.sh [root@localhost vsftpd]#
5.1、ftpusers文件
用于限制实体账户无法登录ftp[root@localhost vsftpd]# cat ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody [root@localhost vsftpd]#
如上所示代表我系统中的这些用户无法登录ftp,如果不想让某个实体用户不能登录ftp,只需将用户名写入这个文件就可以了。
5.3、user_list文件
该文件的作用跟ftpusers文件的作用是一样的,都是限定用户登录ftp的,区别在于user_list中的配置是否起作用还要跟vsftpd.conf文件中的userlist_enable和userlist_deny两个参数有关系。5.4、chroot_list文件
该文件默认是没有创建的,主要用于将某些账号的目录限制在家目录下,这样就提高了安全性,这个文件要起作用的话还依赖于vsftpd.conf文件中的chroot_enable和chroot_list_file两个参数。5.5、vsftpd.conf主配置文件
[root@localhost vsftpd]# cat vsftpd.conf | grep -v '^#' anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES [root@localhost vsftpd]#
以上参数配置都是安装好之后的默认参数值,下面简单介绍一下一些常用的参数。
connect_from_port_20=YES <<==主动连接时,服务端数据传输的端口号
listen_port=21 <<==ftp命令通道的端口号(默认就是21),端口适用于standalone启动模式
dirmessage_enable=YES <<==当用户进入某个目录后,显示需要注意的内容,跟message_file参数有关
message_file=./message <<==当dirmessage_enable=YES显示指定文件中的信息
listen=YES <<==表示vsftpd是以stand alone方式启动的
pasv_enable=YES <<==支持被动式联机模式
use_localtime=YES <<==使用本地时间
write_enable=YES <<==允许用户上传数据
connect_timeout=60 <<==主动模式下,60秒内得不到客户端响应则强制断线
accept_timeout=60 <<==被动模式下,60秒内得不到客户端响应则强制断线
data_connection_timeout=180 <<==如果客户在180秒内无法完成数据的传输,则强制断线
idle_session_timeout=180 <<==180秒内无任何操作则强制断线
max_clients=10 <<=限制同一时间最多可以有10个客户端连接到vsftpd(适用于stand alone启动)
max_per_id=1 <<==表示每个ip来源只能建立一个连接
ftpd_banner=welcome <<==登录vaftpd后的提示信息
banner_file = /file <<==表明用某个文件中的内容作为提示信息
guest_enable=YES <<==任何实体账户登入后都被认为是guest
guest_username=ftp <<==当guest_enable有效时,guest所拥有的权限跟ftp用户的权限一样
local_enable=YES <<== 表示系统用户能以实体用户的方式登录ftp
local_max_rate=0 <<==实体用户的传输速度,单位bytes/second,0为不限制
local_umask=022 <<==实体用户上传文件的权限
chroot_local_user=YES <<==限制实体用户是否在自己的家目录下
chroot_list_enable=YES <<==表示只有chroot_list_file参数指定的文件下的用户才会chroot
chroot_list_file=/etc/vsftpd/chroot_list <<==指定只有在chroot_list文件中的用户才用chroot,如果登入的用户名不在chroot_list中,则用户无法登录
userlist_enable=YES <<==控制user_list文件是否有效,但还要看user_deny参数
userlist_deny=YES <<==配合userlist_enable参数来限制某些账号的登入
userlist_file=/etc/vsftpd/user_list <<==指定userlist文件所在
anonymous_enable=YES <<==是否允许匿名登录
xferlog_enable=YES <<==使用者上传下载都会被记录下来
xferlog_std_format=YES <<==支持wuftp登录格式
tcp_wrappers=YES <<==是否支持tcp wrappers
pam_service_name=vsftpd <<==pam模块的名称,表示支持pam模块的管理
6、启动vsftpd服务
vaftpd可以用stand alone和super daemon两种模式启动,一般情况下我们都用stand alone启动。[root@localhost ~]# chkconfig iptables on [root@localhost ~]# service iptables start [root@localhost ~]# chkconfig iptables --list iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost ~]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:root): yao 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> bye 221 Goodbye. [root@localhost ~]#
如果执行ftp localhost时报命令找不到,则需要安装ftp软件包。
执行到这里就表示ftp服务已经搭建好了。
相关文章推荐
- proftp搭建linux的ftp服务
- Linux下ftp服务的搭建和windows下连接及问题解决
- Linux系列-Red Hat5平台下的FTP服务搭建
- Linux 在 linux 中搭建 FTP 服务
- Linux下FTP服务搭建
- Linux系列-Red Hat5平台下的FTP服务搭建
- linux下ftp服务搭建
- linux 搭建rsync服务、ftp服务、svn服务
- linux下ftp服务各种模式和ca证书认证的搭建
- linux管理员root账号搭建ftp服务怎么让其他账户访问
- linux下搭建ftp服务
- linux下搭建ftp服务并设置权限
- linux搭建FTP服务
- linux环境搭建ftp服务以及遇到的问题总结:上传不成功,ftp:connection refused等等
- linux中搭建ftp服务配置
- Linux下快速搭建FTP服务
- linux搭建我校FTP服务
- Linux下搭建FTP服务
- Linux 第25课——NFS/FTP服务搭建与配置
- Linux下搭建ftp服务