服务的防火墙管理:xinetd,TCP Wrappers
控制at的使用可修改: /etc/at.{allow|deny}
控制crontab是使用: /etc/cron.{allow|deny}
管理程序的网络使用: /etc/hosts.{allow|deny}
任何以 xinetd 管理的服务都可以通过 /etc/hosts.allow,/etc/hosts.deny 来设置防火墙。但是不支持TCP Wrappers 函数功能的软件程序无法使用 /etc/hosts.{allow|deny}的设置值。
所以设置前得先看看一个服务器程序是否支持 TCP Wrappers.
测试一下sshd及httpd这两个程序有误支持TCP Wrappers的功能
#ldd $(which sshd httpd)
ldd 这个命令可以查询某个程序的动态函数库支持状态。
重点在于有无支持TCP Wrappers提供的libwrap.so这个函数库文件。从上图看出,sshd有支持但是httpd不支持。所以sshd可以使用/etc/hosts.{allow,deny}进行类似防火墙的抵挡机制,但是httpd则没有。
配置文件语法
这两个文件的配置语法基本一样,如下:
<服务 (即程序名)> <操作>
注意:上面的“<>”是不存在与文件中的。
例子:#vim /etc/hosts.deny
加入下面一行就可以限制访问你的主机的成员了。
这两个文件判断依据是:以/etc/hosts.allow 为优先,若分析到的 IP 或网段没有在这个文件中,就以/etc/hosts.deny来判断。
一般,我们将允许进入的写在 /etc/hosts.allow里面,不允许进入的写在 /etc/hosts.deny 里面。
此外,我们还可以用一些特殊参数在第一及第二字段:
ALL:代表全部的program_name或者是IP的意思,如 ALL:ALL:deny;
LOCAL:代表来自本机的意思,例如 ALL:LOCAL:allow;
UNKNOWN:代表不知道的IP或者是domain或者是服务时;
KNOWN:代表为可解析的IP,domain等信息。
例子:允许140.116.0.0/255.255.0.0,203.71.39.0/255.255.255.0这两个域,及203.71.38.123这个主机可以进入我们的rsync服务器。
#vim /etc/hosts.allow
rsync: 140.116.0.0/255.255.0.0
rsync: 203.71.39.0/255.255.255.0
rsync: 203.71.38.123
rsync: LOCAL
#vim /etc/hosts.deny
rsync: ALL
TCP Wrappers特殊功能
这是一个更安全的功能,假如有人扫描我的rsync port时,我就将他的IP记住。这样的一些参数要加在第三列,但是前提是我们安装了 TCP Wrappers这套软件。
详细的主要操作有:
spawn(action)
可以利用后续的shell来进行额外的工作,且具有变量的功能,主要的变量内容为: %h(hostname),%a(address),%d(daemon)等。
twist(action)
立刻以后续的命令进行,且执行完后终止该次连接的请求。
为了达成跟踪来源目标的相关信息的目的,此时我们需要safe_finger这个命令的辅助。而且我们还希望客户端的这个恶意者能够被警告。流程如下:
1.利用safe_finger去跟踪出对方主机的信息;
2.将跟踪到的结果以Email的方式寄给本机root;
3.在对方屏幕上显示不可登陆且警告他已经被记录的信息。
#vim /etc/hosts.deny
rsync:ALL: spawn (echo "security noice from host \ $(/bin/hostname)";echo;/usr/sbin/safe_finger @%h) | \
/bin/mail -s "%d-%h security" root & \
:twist (/bin/echo -e "\n\nWARNING connection not allowed.\n\n")
阅读(614) | 评论(0) | 转发(0) |