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
}