xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。能有效的防止拒绝服务攻击(Denial of Services):
1、限制同时运行的进程数。
通过设置instances选项设定同时运行的并发进程数:
instances=20
当服务器被请求连接的进程数达到20个时,xinetd将停止接受多出部分的连接请求。直到请求连接数低于设定值为止。
2.限制一个IP地址的最大连接数:
通过限制一个主机的最大连接数,从而防止某个主机独占某个服务。
per_source=5
这里每个IP地址可以连接单个IP地址的连接数是5个。
3.限制负载。
xinetd还可以使用限制负载的方法防范拒绝服务攻击。用一个浮点数作为负载系数,当负载达到这个数目的时候,该服务将暂停处理后续的连接:
max_load = 2.8
上面的例子中当一项系统负载达到2.8时,所有服务将暂时中止,直到系统负载下降到设定值以下。说明要使用这个选项,编译时要加入--with- loadavg ,xinetd将而已处理max-load配置选项。从而在系统负载过重时关闭某些服务进程,来实现某些拒绝服务攻击。
4.限制所有服务器数目(连接速率) 。
xinetd可以使用cps选项设定连接速率,下面的例子:
cps = 25 60
第一个参数表示每秒可以处理的连接数,如果超过了这个连接数之后进入的连接将被暂时停止处理;第二个参数表示停止处理多少秒后继续处理先前暂停处理的连接。即服务器最多启动25个连接,如果达到这个数目将停止启动新服务60秒。在此期间不接受任何请求。
使用xinetd方式运行ProFTPD的步骤:
(1)检查确省运行情况
确省情况下ProFTPD以stand-alone工作模式运行,可以使用"ps aux| grep proftpd"命令查看进程号,然后使用kill命令中止运行。
(2)修改配置文件
修改/etc/proftpd.conf文件的ServerType选项由"standalone"改为"inetd"。
(3)建立用户组
groupadd nogroup
(4)创建配置文件/etc/xinetd.d/proftpd,代码如下:
service ftp
{
flags = REUSE socket_type =
stream instances = 30 cps =
25 60max_load = 3.0wait =
no user = root server =
/usr/local/sbin/proftpd log_on_success =
HOST PID log_on_failure =
HOST RECORD disable = no
}
(5)重新启动xinetd配置
killall -USR1 xinetd
(6)使用命令连接服务器
可以使用"ftp localhost"连接本地服务器,如果连接被拒绝,可以使用命令:
tail -f /var/log/messages
查看错误信息。
3.隐藏ProFTPD服务器版本信息
通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求最有价值的信息。隐藏ProFTPD版本号比较简单,修改配置文件:
/etc/Proftpd.conf:
ServerIdent off
4.伪装ProFTPD服务器
Windows下的FTP服务多是Serv-U,可以把ProFTPD伪装为Serv-U,方法是修改配置文件proftpd.conf,添加如下内容:
ServerIdent on \"Serv-U FTP
Server v5.0 for WinSock ready...\"
存盘退出后,重新启动proftpd服务,登录到修改了提示信息的FTP服务器进行测试:
C:\\>ftp 192.168.0.1Connected to
192.168.0.1.220 Serv-U FTP Server
v5.0 for WinSock ready...
User (192.168.0.1:(none)):
331 Password required for (none).
Password: 530 Login incorrect.
Login failed.
ftp > quit 221 Goodbye.
这样从表面上看,服务器就是一个运行着Serv-U的Windows了。
5. 使用非root权限运行ProFTPD
以非root权限运行ProFTPD。修改配置文件:
/etc/Proftpd.conf:
User nobody
#设置FTP服务以nobody运行 Group nogroup
#注意:原来是"Group nobody",一定要改为"Group nogroup "
上面的配置表示以nobody用户身份运行ProFTPD服务器。使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险。
6.监控ProFTPD服务器运行情况
通常新部署一个ProFTPD服务器之后需要进行一段时间的监控:记录FTP连接记录、谁连接到我的FTP服务器。Proftpd本身附带了几个命令可以使用。
(1)记录FTP连接数
使用usr/local/bin/ftpcout命令,可以显示FTP服务器连接用户数量信息。 我们还可以使用watch命令配合使用,运行下面命令:
watch -n 360 /usr/local/bin/ftpcount
这个命令每三百六十秒显示一次连接用户数量的信息。
(2)查找谁与FTP服务器连接
使用usr/local/bin/ftpwho命令可以显示谁连接到FTP服务器。一个简单的输出如下:
Master proftpd process 8322:
8387 0m1s proftpd: sheila -
reboot.intevo.com: IDLE 8341
3m59s proftpd: kabir -
k2.intevo.com: IDLE - - 2 users
以上输出显示有两个用户(sheila和kabir)从不同的计算机连接到FTP服务器,输出内容还包括:为这些用户服务的ProFTPD的进程和主ProFTPD的进程ID。
(http://www.fanqiang.com)