Linux网络安全篇,认识防火墙(三),TCP Wrappers
1.防火墙设置文件
任何以xinetd管理的服务都可以通过
/etc/hosts.allow
/etc/hosts.deny
这两个文件来设置防火墙(针对源IP或域进行允许或操作的设置)。
其实/etc/hosts.allow,/etc/hosts.deny两文件也是/usr/sbin/tcpd的配置文件,这个tcpd文件是用来分析进入系统的TCP网络数据包的一个软件。TCP数据包的头文件主要记录了来源和目的的IP和port(端口),所以利用TCP数据包搭配这两个文件的比较可以决定该连接是否能够进入我们的主机。
2.TCP Wrappers防火墙原则
1.源IP或整个域的网段
2.port(即服务,上一篇文章 https://blog.csdn.net/ITlanyue/article/details/103006317 我们说过客户端区分同一主机的不同服务就是通过端口号来区分的)。
注意:基本上只要一个服务受到xinetd管理,或者该服务的程序支持TCP Wrappers函数的功能时,那么该服务的防火墙方面的设置就可以通过这两个文件来管理。
那么如何判断某个服务是否支持tcp wrappers函数功能呢?
ldd $(which sshd) | grep 'libwrap.so'
ldd ===> library dependency discovery
如果有输出(即持否支持libwrap.so库),则代表可以通过TCP Wrappers配合两个文件来管理。
3.配置文件语法
这两个文件的设置语法都是一样的:
<service(程序名称)> : <IP|domain|hostname> : <action(操作)>
注意:
(1).<>不存在于设置文件中,这里是为了分开区域
(2).可以设置如下数值到第一或第二个参数中
ALL ===> 代表全部的程序或IP都接受
LOCAL ===> 代表本机的意思
UNKNOWN ===> 代表不知道的IP或domain或者服务时
KNOWN ===> 代表为可解析的IP,domain等时
eg:
vim /etc/hosts.deny
执行如上操作后,对方就无法以rsync进入你的主机了。
注意:
写在hosts.allow中的IP与默认网段为默认的可通行, 即最后的一个字段allow可以省略
写在hosts.deny 中的IP与默认网段为默认的不可通行,即最后的一个字段deny可以省略
这两个文件以/etc/hosts.allow为优先,若某个IP或网段没有出现在hosts.allow文件中,则以hosts.deny来判断
4.TCP Wrappers特殊功能
(1).查看系统是否安装tcp wrappers软件
rpm -q tcp_wrappers
(2).参数
spawn (action)===> 可以利用后续的shell来进行额外的工作,且具有变量的功能
twist (action)===> 立刻以后续的命令进行,且执行完后终止此次连接的请求(DENY)
5.查看系统启动的网络服务
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
-a | --all ===> 显示所有连线中的Socket。
-A<网络类型> | --<网络类型> ===> 列出该网络类型连线中的相关地址。
-c | --continuous ===> 持续列出网络状态。
-C | --cache ===> 显示路由器配置的快取信息。
-e | --extend ===> 显示网络其他相关信息。
-F | --fib ===> 显示FIB。
-g | --groups ===> 显示多重广播功能群组组员名单。
-h | --help ===> 在线帮助。
-i | --interfaces ===> 显示网络界面信息表单。
-l | --listening ===> 显示监控中的服务器的Socket。
-M | --masquerade ===> 显示伪装的网络连线。
-n | --numeric ===> 直接使用IP地址,而不通过域名服务器。
-N | --netlink或--symbolic ===> 显示网络硬件外围设备的符号连接名称。
-o | --timers ===> 显示计时器。
-p | --programs ===> 显示正在使用Socket的程序识别码和程序名称。
-r | --route ===> 显示Routing Table。
-s | --statistice ===> 显示网络工作信息统计表。
-t | --tcp ===> 显示TCP传输协议的连线状况。
-u | --udp ===> 显示UDP传输协议的连线状况。
-v | --verbose ===> 显示指令执行过程。
-V | --version ===> 显示版本信息。
-w | --raw ===> 显示RAW传输协议的连线状况。
-x | --unix ===> 此参数的效果和指定"-A unix"参数相同。
--ip | --inet ===> 此参数的效果和指定"-A inet"参数相同。
eg:
查看当前系统上的tcp连接
netstat -tlp
6.设置开机启动服务
chkconfig --list [服务名称]
chkconfig [--level [0123456]] [服务名称] [on|off]
--list ===> 仅将目前的各项服务状态显示出来
--level ===> 设置某个服务在该level下启动或关闭
eg:
(1).
显示目前运行在level 3中的服务
chkconfig --list | grep '3:on'
让atd服务在run level在3,4,5时启动
chkconfig --level 345 atd on
(2)设置开机关闭/开启httpd服务