⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1477.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 3 页
字号:
                        align=center border=0>
                          <TBODY>
                          <TR>
                            <TD>
                              <TABLE cellSpacing=0 cellPadding=3 width="100%" 
                              border=0>
                                <TBODY>
                                <TR>
                                      <TD vAlign=top> 
<p><FONT class=normalfont><B><font color=blue>用vsftpd架设安全的FTP服务器</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:高凯<br>来自:Linux知识宝库<br>联系方式:无名<br><br>  在网站的建设中,FTP是一项重要的服务,利用它可以更容易分享有限的软件资源。Linux下有代表性的FTP服务器软件是Wu-FTP、ProFTP 及vsftpd。Wu-FTP(Washington University FTP)是由美国华盛顿大学开发的、以效率和稳定性为参考量的FTP软件。它的功能强大,配置较复杂,由于开发时间较早,应用十分广泛,也因此成为黑客们主要的攻击目标。Wu-FTP的早期各级版本不断出现安全漏洞,系统管理员不得不因安全因素而经常对其进行升级。ProFTP针对Wu-FTP的弱项而开发,除了在安全性方面进行了改进外,还具备设置简单的特点,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。vsftpd 则凭借在安全性方面的出色表现,被很多大型网站广为采用。<br>
<br>
  vsftpd简介<br>
<br>
  vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。在安全方面,它从原理上修补了大多数Wu-FTP、ProFTP,乃至BSD-FTP的安装缺陷,使用安全编码技术解决了缓冲溢出问题,并能有效避免“globbing”类型的拒绝服务攻击。目前正在使用vsftpd的官方网站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。<br>
<br>
  安装<br>
<br>
  本文以1.1.3版本为例进行介绍(这是2002年11月9日发布的最新正式发行版本)。下载地址为ftp://vsftpd.beasts.org/users/cevans/。<br>
<br>
  1.构建vsftpd<br>
<br>
  首先解压缩包,代码如下:<br>
<br>
$ tar xzvf vsftpd-1.1.3.tar.gz<br>
<br>
<br>
<br>
  进入安装目录cd vsftpd-1.1.3。如果想在以后使用中启用tcp_wrapper功能,可在编译前修改“builddefs.h”文件中的语句,将 “#undef VSF_BUILD_TCPWRAPPERS”改为“#define VSF_BUILD_TCPWRAPPERS”。tcp_wrapper功能主要应用于IP管理控制,比如可以为单独的一个IP地址使用特殊优先的FTP 配置文件。然后,键入“make”生成一份可执行二进制程序代码。<br>
<br>
  2.前期准备<br>
<br>
  vsftpd的默认配置中需要用户“nobody”。添加该用户命令如下:<br>
<br>
$ useradd nobody<br>
<br>
<br>
<br>
  vsftpd的默认配置中需要目录“/usr/share/empty”。添加该目录的命令如下:<br>
<br>
$ mkdir /usr/share/empty/<br>
<br>
<br>
<br>
  匿名FTP需要用户“ftp”的存在,并有一个有效的主目录(不允许用户“ftp”有拥有权和可写权)。如没有此目录则建立它,命令如下:<br>
<br>
$ mkdir /var/ftp/<br>
$ useradd -d /var/ftp ftp<br>
<br>
<br>
<br>
  3.安装相关配置文件、执行文件、帮助手册页等<br>
<br>
  运行“make install”,将源代码、帮助手册页等复制到相关路径。如果采用手工复制,命令如下:<br>
<br>
$ cp vsftpd /usr/local/sbin/vsftpd<br>
$ cp vsftpd.conf.5 /usr/local/man/man5<br>
$ cp vsftpd.8 /usr/local/man/man8<br>
<br>
<br>
<br>
  另外,“make install”不能复制样例配置文件,建议手工复制,命令如下:<br>
<br>
$ cp vsftpd.conf /etc<br>
<br>
<br>
<br>
  整个安装过程很简单,下面来看看如何操纵vsftpd的强大功能,进行vsftpd.conf文件的配置。<br>
<br>
  两种运行模式<br>
<br>
  像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。简单解释一下, standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。<br>
<br>
  1.inetd运行模式<br>
<br>
  从某种inetd运行 vsftpd可以提供一种不错的功能——per_IP连接限制。这也是vsftpd 1.1.3版本最新推出并推荐的一种运行模式。实现per_IP连接限制要依赖于vsftpd提供的tcp_wrappers支持。如果使用标准的 “inetd”,需编辑/etc/inetd.conf文件,并添加下面一行代码:<br>
<br>
$ ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd<br>
<br>
<br>
<br>
  确保删除或注释掉任何原存的FTP服务语句行。假如没有安装tcp_wrappers,或不需要使用它,可去掉“/usr/sbin/tcpd”部分。然后重载配置文件,命令如下:<br>
<br>
$ kill -SIGHUP 'pidof inetd'<br>
<br>
<br>
<br>
  大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:<br>
<br>
disable = no<br>
socket_type = stream<br>
wait = no<br>
<br>
<br>
<br>
  # 这表示设备是激活的,它正在使用标准的TCP Sockets。<br>
<br>
user = root<br>
server = /usr/local/sbin/vsftpd<br>
<br>
<br>
<br>
  # 说明服务程序/usr/local/sbin/vsftpd已被用来控制FTP接入请求,并且该程序是作为root身份运行的(可能瞬间拥有过大的特权)。请确信已经把vsftpd二进制执行代码安装在了“/usr/local/sbin”目录下。<br>
<br>
per_source = 5<br>
instances  = 200<br>
<br>
<br>
<br>
  # 由于安全原因,从一个单一IP地址联入的最大允许数值是5。当前最大连接总数是200。<br>
<br>
no_access  = 192.168.1.3<br>
<br>
<br>
<br>
  # 地址192.168.1.3将被拒绝访问。<br>
<br>
banner_fail = /etc/vsftpd.busy_banner<br>
<br>
<br>
<br>
  # 显示给用户当连接被禁止时的文件。不论因任何原因而被拒绝(太多用户,IP被禁止)。<br>
<br>
  下面一行是产生的例子:<br>
<br>
echo "421 Server busy, please try later." &gt; /etc/vsftpd.busy_banner<br>
log_on_success  += PID HOST DURATION<br>
log_on_failure  += HOST<br>
<br>
<br>
<br>
  这将按照时间顺序日志所有尝试连接的IP地址,无论连接成功与否。假如连接启动了一个FTP服务,其进程ID和使用期也将被载入日志。如果使用的是Red Hat,这个日志信息将出现在/var/log/secure文件中。<br>
<br>
  最后,重启xinetd,命令如下:<br>
<br>
$ /etc/rc.d/init.d/xinetd restart<br>
<br>
<br>
<br>
  需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。<br>
<br>
  2.standalone模式<br>
<br>
  standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置“disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.conf”中的选项为“listen= YES”。<br>
<br>
  配置vsftpd.conf<br>
<br>
  下面来了解一下核心配置文件vsftpd.conf。它的地址为“/etc/vsftpd.conf”,控制语句格式为“语句=值”,注意不要在格式间加入任何空格和标点符号。man手册页中把控制语句分为布尔类(值为YES或NO)、数字类(值为数字)和字符串类(值为字符串)三种。为了管理方便、思路清晰,按照访问权(Access rights)、安全(Security)、功能(Features)和性能(Performance)分成四大类。下面是一个样本配置文件内容,用来说明常用的控制语句:<br>
<br>
# Access rights<br>
anonymous_enable=YES  <br>
/*若不想启用匿名访问请修改值为NO*/<br>
local_enable=NO  <br>
/*关闭本地用户登陆服务,指所有非匿名用户*/<br>
write_enable=NO  <br>
/*关闭任何用户的写权限*/<br>
anon_upload_enable=NO  <br>
/*关闭匿名用户上传数据的能力*/<br>
anon_mkdir_write_enable=NO  <br>
/*关闭匿名用户建立目录的能力*/<br>
anon_other_write_enable=NO  <br>
/*关闭匿名用户执行建立和上传之外的写入类命令的操作,比如更<br>
改名字和删除操作的能力*/<br>
<br>
# Security<br>
anon_world_readable_only=YES  <br>
/*开启匿名用户只能使用许可权为全部可读的资源*/<br>
connect_from_port_20=YES  <br>
/*从标准端口20触发连接*/<br>
hide_ids=YES  <br>
/*隐藏FTP服务器中用户的ID,用“FTP"取代*/<br>
pasv_min_port=50000  <br>
pasv_max_port=60000  <br>
/*设置pasv传输模式下的端口范围为50000-60000*/<br>
<br>
# Features<br>
xferlog_enable=YES  <br>
/*开启日志,记录传输状态到文件/var/log/vsftpd.log*/<br>
ls_recurse_enable=NO  <br>
/*关闭“ls -R"命令,该命令常被用于DoS攻击,非常浪费系统资源,<br>
但“mirror"镜像工具会用到它*/<br>
ascii_download_enable=NO  <br>
/*关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担*/<br>
async_abor_enable=YES  <br>
/*开启支持早期FTP客户端“async ABOR"命令的能力*/<br>
<br>
# Porformance<br>
one_process_model=YES  <br>
/*开启每个IP单一进程模式,该模式仅支持具备一定能力的内核,<br>
比如linux kernel 2.4*/<br>
idle_session_timeout=120  <br>
/*踢出空闲了两分钟后的用户*/<br>
data_connection_timeout=300  <br>
/*踢出空闲了五分钟后的下载*/<br>
accept_timeout=60  <br>
/*踢出挂起了一分钟后的passive连接*/<br>
connect_timeout=60  <br>
/*踢出挂起了一分钟后的活动连接*/<br>
anon_max_rate=50000  <br>
/*限止单个用户的下载速度为不超过50kbytes每秒*/<br>
<br>
<br>
<br>
  至此,一个匿名服务器已经可以正常运行了,并且进行了安全方面的设置。实际中,根据FTP服务器不同的需求,比如想启用本地用户登录、想让某类用户具备上传能力、想让登录者看到一份友好的欢迎信息等,还可以在vsftpd.conf中进行相应的设置(用“man vsftpd.conf”参考man手册可获得更多的详细资料)。<br>
<br>
  有一些设置选项跟运行模式或外挂模块有关,还有一些选项必须依赖于另一个选项的启用状态。总之,只要精心搭配,完全可以定制出一个称心的FTP服务器。<br>
<br>
  tcp_wrappers的应用<br>
<br>
  要使用这项功能需要在安装编译之前构建包含tcp_wrappers的vsftpd。可通过编辑“builddefs.h”文件,将“#undef VSF_BUILD_TCPWRAPPERS”修改为“#define VSF_BUILD_TCPWRAPPERS”,然后重新构建编译,生成可执行代码。其次,要开启在配置文件vsftpd.conf中的选项 “tcp_wrappers=YES”。该功能依赖于对文件“/etc/hosts.allow”的配置。以下是一个样例:<br>
<br>
vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf<br>
vsftpd: 192.168.1.4: DENY<br>
<br>
<br>
<br>
  其中,第一行表示如果一个客户端从192.168.1.3连接,那么vsftpd将应用“/etc/vsftpd_tcp_wrap.conf”的 vsftpd配置文件给该连接。这些设置被应用在默认的vsftpd.conf之前。这一点十分有用,可用它为一些IP应用不同的访问限制(例如上传的能力);还可以指定某些IP有能力来超越连接限制(max_clients=0);或者为某些IP增减带宽限制。第二行表示拒绝192.168.1.4连接的能力。这一点对别有用心的连接者很有用。<br>
<br>
  PAM的应用<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -