tcp wrapper和xinetd

tcp wrapper: 网络资源访问控制,是一个基于tcpd访问实现的访问控制工具。受tcpd管理的服务,可以是独立的,也可以是非独立的。

一个服务到底接受不接受tcpd控制,可以用两种方式来查看
1 ldd `which command` | grep libwrap  只要出现libwrap开头的就接受tcp wrapper动态链接库控制
2.strings `which command` | grep hosts
只要出现了/etc/hosts.allow和/etc/hosts.deny则表明它支持tcp wrapper来实现访问控制

当一个用户去请求访问时 ,先去检查/etc/hosts.allow这个文件 看这个文件有没有跟这个匹配到的允许,如果有,则直接通过访问,如果没有则进而检查/etc/hosts.deny这个文件,如果deny文件中有,则明确拒绝访问,否则,当两个文件都没有匹配的时候,默认是允许的。

语法格式:daemon_list: client_list [optons]
          进程:客户端列表:[选项]
例如:     sshd:192.168.0.
服务列表可多个:vsftpd,sshd,in.telnetd等
只在某个特定的地址上的某个服务
daemon@host
如:[email protected]

client_list 客户端列表
可使用ip ,network address ,hostname,宏定义。
network/mask:只接受完整长度格式。可以使用172.16.  172.16.0.0/255.255.0.0
hostname:fqdn;.a.org
macro宏:
all 表示所有
local跟本机IP在同一个网段
known fqdn可被正常解析,
unknown:fqdn不可被正常解析
paranoid 主机名正向解析和方向解析不匹配
except:不包含

例子:
tcp wrapper:

sshd仅允许172.16.0.0/16网段访问
方法:
vim /etc/hsot.allow
添加  sshd: 172.16.
vim /etc/host.deny
添加  sshd : ALL

telnet服务不允许172.16.0.0/16 但允许172.16.100.200访问:其他客户端不做控制
方法1:
vim /etc/hosts.allow
添加  in.telnetd: 172.16.100.200
vim /etc/hosts.deny
添加  in.telnetd: 172.16.

方法2:
vim /etc/hosts.deny
添加:in.telnetd: 172.16. EXCEPT 172.16.100.200

方法3:
vim /etc/hosts.allow
添加  in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200

vim /etc/hosts.deny
添加 in.telnetd: ALL

对本机的sshd服务做访问控制,要求:
1)仅允许172.16.0.0/16网段的主机访问;
vim /etc/hosts.allow
sshd:172.16.
vim /etc/hosts.deny
sshd:ALL
2)仅通过ssh协议的v2版提供服务;Protocol 2
vim /etc/ssh/sshd_config
Protocol 2    
3)仅允许root用户、develop组和dba组中的用户访问; 
vim /etc/ssh/sshd_config
allowusers root
allowgroups develop dba  

 

tcp wrapper macro:宏
%c: 客户端信息(user@host)
%s: 服务器端信息(server@host)
%h 客户端主机名
%p 服务器端PID

option选项:deny  allow spawn
如:in.telnetd: 172.16. :DENY 拒绝172.16. 网段的主机访问
spawn:具有记录日志的功能;
如:in.telnetd: 172.16. :spawn echo "`date`, someone login from %c to %s" >> /var/log/tcpwrapper.log 记录在哪个时间 哪个客户端连接了哪个服务器的服务


xinetd:超级守护进程
配置文件;/etc/xinetd.conf
配置文件主要有两部分:
1全局配置(服务的默认配置)
2服务配置
xinetd 启动n个非独立进程
在/etc/xinetd.d/*中的所有文件 通常是主配置文件的组成部分(片段)

 

SYSLOG: 专门用于记录日志的服务

访问控制:
only_from允许访问
如: only_from       =192.168.0.0/24 仅允许192.168.0.0/24这个网段的所有主机连接
no_access 拒绝访问
如: no_access       =192.168.0.195 不允许192.168.0.195连接
only_from       =192.168.0.0/24
no_access       =192.168.0.195
合在一起就是仅允许192.168.0.0/24网段的主机连接 但是192.168.0.195不能连接

时间控制:access_times
如:access_times   =12:00-15:00 仅允许在12:00到15:00之间能连接

监听的地址(提供服务的地址)
例如:bind =172.16.26.4 仅172.16.26.4提供服务

资源访问控制:cps
控制每秒钟入站连接的个数:
有两个参数:
1 每秒入站连接数的最大值:
2临时禁用时长
如:cps  =20 10 每秒可连接的最大数为20 ,超过20则禁用10秒

每个用户的连接数:per_source
如:per_source      =2 每个用户最多连接2个

定义服务最多几个用户连接:instances
如:instances       =3  最多3个用户连接
向启动的server传递参数:
server_args

 过PAM完成以下功能:
(1)禁止root用户在tty6终端登录;
(2)设置ubuntu用户登录系统后所能够打开的文件个数硬限制为200,软限制为120;
(3)设置develop组中的用户登录系统后所能够运行的进程数的硬限制为300,软限制为200;
# vi /etc/pam.d/system-auth
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
# vi /etc/securetty
删除里边的tty6


# vim /etc/security/limits.conf
ubuntu          soft    nofile          120
ubuntu          hard    nofile          200

# vi /etc/security/limits.conf
@develop        soft    nproc           200
@develop        hard    nproc           300

 设置telnet服务,要求:
(1)仅允许来自于192.168.0.0/24中的主机访问此服务;
(2)每个IP所能够发起的并发连接请求最多为6个;
(3)此服务所接受的最大并发连接数为20,达到20时则暂停提供服务10秒钟
# vim /etc/xinetd.d/telnet
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = yes
        only_from       = 192.168.0.0/24
        per_source      = 6
        instances       = 20
        cps             = 20 10
}

 

 

你可能感兴趣的:(command,用户,动态,的,是)