linux下tcpwraper和xinetd超级守护进程访问控制详解

1.tcpwraper概念:不同于iptables防火墙网络访问控制,iptables可对于tcp/ip进行所有访问控制并且工作在内核中,而tcpwraper只对部分具有tcp协议的服务进行网络访问控制,方便那些对iptables不熟悉的人使用,也就是说,只有那些链接libwraper.so库文件的服务,才受tcpwraper控制

2.ldd命令查询服务是否加载动态libwrap.so库文件,如果加载,则受tcpwraper控制,否则不受控制

 ldd `which 服务名称` | grep libwrap

例如:ldd `which sshd` | grep libwrap

   ldd `which xinetd` | grep libwrap

3.strings命令查询是否加载静态hosts.allow和host.deny文件,如果加载,则受tcpwraper控制,否则不受控制

 strings `which portmap` | grep hosts

4.tcpwraper控制机制:主要由/etc/hosts.allow和/etc/hosts.deny这两个文件进行控制

匹配顺序:首先查询/etc/hosts.allow,再查询/etc/hosts.deny,最后默认规则是允许所有通过

/etc/hosts.allow和/etc/hosts.deny文件格式:

服务列表: 客户端列表 [:选项]

服务列表有下几种类型写法:

        sshd

        vsftpd,sshd,in.telnetd   #可以写多个服务

        ALL

        vsftpd@1.1.1.1        

客户端列表有下几种类型写法:

        IP       

        network/mask(如172.16.1.0/255.255.255.0)

        172.16.1.

        FQDN       #完整合格域名,如mail.willow.com

        .example.com  #域名

        ALL        #所有主机

        LOCAL,KNOWN,UNKNOWN,PARANOID 

        EXCEPT #意思是除了

选项有如下几种类型写法:

        DENY   #在host.allow文件中可以写DENY

        ALLOW  #在host.deny文件中可以写ALLOW

        spawn  #可以在后面执行一样命令

tcp_wraper宏定义:

%c:代表客户端信息(user@host)

%s:代表服务器信息(server@host)

%h:客户端主机名(hostname)

%p:服务ID(server PID)

tcp_wraper宏定义查询方法: man 5 hosts_access

5.实例:不允许1.1.1.0/24访问本机telnet服务,但允许1.1.1.100访问,其他客户端不受控制

5.1.方法1:

vim /etc/hosts.allow

in.telnetd: 1.1.1.100

vim /etc/hosts.deny

in.telnetd: 1.1.1.0/255.255.255.0

5.2.方法2:

vim /etc/hosts.deny

in.telnetd: 1.1.1. EXCEPT 1.1.1.100

5.3.方法3

vim /etc/hosts.allow

in.telnetd: ALL EXCEPT 1.1.1. EXCEPT 1.1.1.100

vim /etc/hosts.deny

in.telnetd: ALL

6.在hosts.allow文件中,拒绝1.1.1.0/24访问本机sshd服务,这是一种不常见写法

vim /etc/host.allow

sshd: 1.1.1. :DENY

7.允许1.1.1.0/24访问本机sshd服务,但必须将其登入日志进行记录

vim /etc/hosts.allow

sshd: 1.1.1. :spawn echo "`date`, Login attempt from %c to %s" >> /var/log/tcpwarper.log

8.xinetd超级守护进程

守护进程分为独立守护进程和瞬时或短暂守护进程

而xinetd属于独立守护进程,但xinetd控制多个瞬时或短暂守护进程,所以叫做超级守护进程

xinetd超级守护进程:有多个非独立守护进程,也是瞬时或短暂守护进程

主要配置文件:/etc/xinetd.conf,包含/etc/xinetd.d/*所有短暂守护进程配置文件

配置文件分为两部分:全局和服务配置

配置文件格式:

        service <服务名称>

             (

               属性 操作符 值

               ..............

              )

9.xinetd超级守护进程访问控制

man xinetd.conf #查询此文件的配置参数方法

匹配规则:only_from与no_access谁精确匹配用谁的条目

格式如下:

only_from =          #仅允许访问的客户端,取值有如下常见几种

   IP             #如1.1.1.100

   NETWORK          #如1.1.1.0/24或1.1.1.0/255.255.255.0

   HOSTNAME         #如mail.willow.com

   DOMAIN          #如.mail.willow

no_access =          #拒绝访问的客户端,取值格式与only_from一样

10.时间访问控制:

格式:  access_times = hh:mm-hh:mm   

例如:  access_times = 08:00-17:00   #仅允许在上午8点至下午5点允许访问

11.侦听的地址访问控制

格式:  bind = 

     interface =   #不常见

例如:本机有3个IP,172.16.1.6,172.16.2.6,192.168.1.6,只想侦听172.16.2.6这个地址

      bind =  172.16.2.6

12.资源访问控制

 cps = 每秒连接的最大并发数  如超过最大并发数的禁用时长

 per_source =  每个IP地址最多连接个数

 instances =   最大连接数(实例)

 banner   =   自定义文件路径    #登入提示信息

13.实验对rsync服务进行如下访问控制:

  (1).侦听在1.1.1.19地址并提供服务

  (2).仅允许1.1.1.0/24网络内的主机访问,拒绝1.1.1.144主机访问

  (3).仅允许同时运行最多3个实例,并且每个IP只能发起2个请求

  (4).仅允许在上午10点至下午15点允许访问

vim /etc/xinetd.d/rsync

service rsync

{

        disable = no

        bind          = 1.1.1.19

        only_from       = 1.1.1.0/24

        no_access       = 1.1.1.144

        instances       = 3

        per_source      = 2

        access_times     = 10:00-15:00

}

wKioL1dc09TAcf9EAAH2Phazt_8616.jpg-wh_50

service xinetd restart

netstat -antlp | grep 873    #查看rsync服务是否启动且rsync工作在873/tcp端口

再使用rsync命令进行测试即可

14.xinetd超级守护进程也可以通过syslog和file进行记录日志,相关查看/etc/xinetd.conf文件

log_type  = SYSLOG daemon info

log_type  = FILE /var/log/xxx.log

15.总结:linux系统下的访问控制,常见有3种实现方式,iptables,tcp_wraper,xinetd方式

具体使用哪种方式控制访问,看个人使用习惯和技术特长,因人而异,只要达到目的即可,哈!