TCP会绕程序(TCP wrappers)为多项服务提供访问控制。多数现代的网络服务,如SSH、Telnet和FTP,都使用TCP会绕程序。该会绕程序位于进入请求和被请求服务之间。
当与xinetd一起使用时,TCP会绕程序的优越性就更为显著。xinetd是一种提供附加的访问、记录、关联、重导向、和资源利用控制的超级服务。
1.1 使用TCP会绕程序来强化安全
1.1.1 TCP会绕程序和连接横幅
给连接服务的客户发送一幅警戒性横幅是掩盖运行服务的系统的好办法,同时,它也让潜在的攻击者知道系统管理员是相当警惕的。要为某服务实现 TCP 会绕程序横幅,请使用 banner 选项。
这个例子为 vsftpd 实现了一个横幅。首先,创建一个横幅文件。它可以位于系统上的任何地方,但是它的名称必须和守护进程相同。在这个例子中,该文件叫做 /etc/banners/vsftpd。
该文件的内容如下所示:
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Act up and you will be banned.
%c 代符提供了各类客户信息,如用户名和主机名,或用户名和 IP 地址,从而使连接更令人生畏。
要把这个横幅展示给每个进入连接,把以下行添加到 /etc/hosts.allow 文件中:
vsftpd : ALL : banners /etc/banners/
1.1.2 TCP会绕程序和攻击警告
如果某个主机或网络被发现正在攻击服务器,TCP 会绕程序可以通过 spawn 指令对来自该主机或网络的后续攻击向管理员发出警告。
在这个例子中,假定某个来自 206.182.68.0/24 网络的骇客被发现正在试图攻击服务器。如果把以下行添加到 /etc/hosts.deny 文件中,连接企图就会被拒绝并记录在一个特殊的文件中。
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert
%d 代符提供攻击者其它访问的服务名称。
要运行连接并记录日志,把 spawn 指令放在 /etc/hosts.allow 文件中。
因为spawn指令执行任何shell命令,你可以创建一个脚本,该脚本会在某个特定客户企图连接服务器的时候通知管理员或执行一系列命令。
1.1.3 TCP会绕程序和强化记录
如果某类连接比其它连接更值得关注,你可以通过 severity 选项来提高该类服务的记录级别。
在这个例子中,假定每个企图连接 FTP 服务器的端口23(Telnet 端口)的 客户都是骇客。在日志文件中放置一个 emerg 标记而不是默认的 info 标记来否定连接。
要达到这个目的,把以下行放在 /etc/hosts.deny 文件中:
in.telnetd : ALL : severity emerg
它使用默认的 authpriv 记录设施,但是把优先级别从默认的 info 提高到 emerg,这会把日志消息直接显示在控制台上。