Linux下搭建ftp服务
Linux下搭建ftp服务一般都用vsftpd(very secure ftp daemon),因为ftp协议是采用明码传输的,没有安全性可言,vsftpd则是一个提供较安全的ftp服务软件,下面简单介绍一下vsftpd的搭建,测试环境为centos 6.3。
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:off1:off2:on3:on4:on5:on6:off
[root@localhost tmp]#
从上面输出可以看到防火墙开着,如果想关闭防火墙可以执行下面的命令:
[root@localhost tmp]# chkconfig iptables off
[root@localhost tmp]# chkconfig iptables --list
iptables 0:off1:off2:off3:off4:off5:off6:off
[root@localhost tmp]#
可以看到防火墙都关了,想重启防火墙则可以执行下面的命令。
[root@localhost tmp]# chkconfig iptables on
[root@localhost tmp]# chkconfig iptables --list
iptables 0:off1:off2:on3:on4:on5:on6: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
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:off1:off2:on3:on4:on5:on6: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服务已经搭建好了。
更多相关文章
- 开发板挂载vmware虚拟机linux下nfs服务器共享文件
- 一键安装linux (附带各种命令,登录欢迎界面,用户登录模块。)
- Linux 删除除了某个文件之外的所有文件
- linux设置了 /etc/profile ~/.bashrc等配置文件不重启生效方法【
- Inotify: 高效、实时的Linux文件系统事件监控框架
- Linux中/proc目录下文件详解之(二)
- Linux如何查找大文件
- Linux第三章 命令基本格式及文件处理命令
- NFS实现开发板和虚拟机之间的文件共享