教你配置安全的ProFTPD服务器
xinetd能有效的防止拒绝服务攻击(Denial of Services)原理:
(a)限制同时运行的进程数:
通过设置instances选项设定同时运行的并发进程数:
instances=20
当服务器被请求连接的进程数达到20个时,xinetd将停止接受多出部分的连接请求。直到请求连接数低于设定值为止。
(b)限制一个IP地址的最大连接数:
通过限制一个主机的最大连接数,从而防止某个主机独占某个服务。
per_source=5
这里每个IP地址可以连接单个IP地址的连接数是5个。
(c)限制负载:
xinetd还可以使用限制负载的方法防范拒绝服务攻击。用一个浮点数作为负载系数,当负载达到这个数目的时候,该服务将暂停处理后续的连接:
max_load = 2.8
上面的例子中当一项系统负载达到2.8时,所有服务将暂时中止,直到系统负载下降到设定值以下。说明要使用这个选项,编译时要加入--with-loadavg ,xinetd将而已处理max-load配置选项。从而在系统负载过重时关闭某些服务进程,来实现某些拒绝服务攻击。
(d)限制所有服务器数目(连接速率):
xinetd可以使用cps选项设定连接速率,下面的例子:
cps = 25 60
第一个参数表示每秒可以处理的连接数,如果超过了这个连接数之后进入的连接将被暂时停止处理;第二个参数表示停止处理多少秒后继续处理先前暂停处理的连接。即服务器最多启动25个连接,如果达到这个数目将停止启动新服务60秒。在此期间不接受任何请求。
3.尽量使用xinetd方式运行ProFTPD服务器
ProFTPD能以Stand-alone、xinetd两种模式运行。当用户账号比较少又经常需要连接到ProFTPD服务器时推荐使用xinetd模式运行。使用xinetd方式运行ProFTPD可以有效防范DoS攻击。使用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 “服务的数据封包类型为stream”
instances = 30 “最多可以同时建立30个ftp连接。”
max_load = 3.0 “最大负载“
wait = no “不需等待,即ftp服务将以多线程的方式运行”
user = root “执行此服务进程的用户是root”
server = /usr/local/sbin/proftpd “启动脚本位置”
log_on_success = HOST PID
log_on_failure = HOST RECORD
disable = no “允许运行proftpd”
}
(5)重新启动xinetd配置
killall -USR1 xinetd
(6)使用命令连接服务器
可以使用“ftp localhost”连接本地服务器,如果连接被拒绝,可以使用命令:
tail -f /var/log/messages查看错误信息。
在下一篇文章中,介绍配置安全的ProFTPD服务器的其他安全策略,敬请关注。
介绍了ProFTPD服务器的基本配置方法以及如何加固ProFTPD服务器,下面继续介绍配置安全的ProFTPD服务器的其他安全策略。
四、其他安全策略
1.隐藏ProFTPD服务器版本信息
通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求最有价值的信息。隐藏ProFTPD版本号比较简单,修改配置文件:/etc/Proftpd.conf:
ServerIdent off
2.伪装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.1
Connected 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了。
3. 使用非root权限运行ProFTPD
以非root权限运行ProFTPD 。修改配置文件:/etc/Proftpd.conf:
User nobody #设置FTP服务以nobody运行
Group nogroup #注意:原来是“Group nobody”,一定要改为“Group nogroup ”
上面的配置表示以nobody用户身份运行ProFTPD服务器 。使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险。
4.监控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。技术无忧.com












文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面