tcpwapper:
工作在传输层、对于进出本机访问某特定服务的连接基于规则进行检查的一个访问控制工具,
以库文件的形式,某进程是否接受
libwrap
的控制取决于发起此进程的程序时是否针对
libwarp
进行编译的
命令:
ldd
查看是否有
libwrap.iso
文件
或
strings which portmap | grep hosts
显示有
hosts.allow
和
hosts.deny
就表示接受
tcpwapper
的控制
配置文件:
/etc/hosts.allow |hosts.deny
格式:
进程列表
daemon-list:client-list [:options] <--
可选
多个选项有
:
隔开
sshd:192.168.1.0
规则:
系统先检查
allow
文件再是
deny
文件
,
默认为
allow
写服务要是可执行的二进制程序,不是服务本身
多个服务有
,
隔开
sshd,in.telnetd: 192.168.1.0| 192.168.1.
client-list
:
可以使用
ip
具体主机
网段
网络:长格式的
192.168.1.0/255.255.255.0
主机名称:
www.a.com
或
a.com
(前一个字符通配)
基于
NIS
域:
@netexample
tcpwarpper
上的
telnet
:
telnet
:
tcp 23
非独立守护进程
依赖于
xinetd
超级守护进程
区别:独立
:一旦启动将永驻内存直到关闭
非独立:启动慢
节省资源
接受
xinetd
管理的非独立进程:
/etc/xinetd.d/
配置:
yum install xinetd telnet-server
service xinetd start
chkconfig xinetd on
chkconfig telnet on
chkconfig --list
service telnet restart
启动之前
xinetd
必须启动
测试:
关闭
selinux
vim /etc/hosts
192.168.0.124 station124.example.com station124
物理机上
telnet 192.168.0.124
登陆时默认
root
不能直接登陆
要用普通用户
telnet
访问控制:
/etc/hosts.deny
in.telnetd: 192.168.0.
拒绝
192.168.0.0
网段访问该服务
in.telnetd: 192.168.0. EXCEPT 192.168.0.124
只允许
192.168.0.0
网段的
124
访问
会立即生效
/etc/hosts.allow
in.telnetd: 192.168.0.124
只允许
192.168.0.0
网段的
124
访问
例子:
/etc/hosts.deny
in.telnetd: ALL EXPECT 192.168.0.0 EXCEPT 192.168.0.3
拒绝
192.168.0.0
网段的
3
访问其他允许
规则参数:
/etc/hosts.allow
in.telnetd: 192.168.1. :DENY
直接拒绝
192.168.1.0
访问
仅允许
192.168.1.0
访问:
hosts.allow
中定义
in.telnetd: 192.168.1.
in.telnetd: ALL:DENY
spawn:
子进程运行的
匹配到时不按照默认规则执行
而是安额外的命令执行
shell
命令
in.telnetd
:
192.168.0.
:
spawn /bin/echo `date` %c %d >>/var/log/tcpwrap.log
%c :
来自于客户端信息
%d
:
守护进程的名字
%s
:
主机上的服务
%h
:仅匹配客户端的主机名
%p
:客户端的
pid
twist
:登陆服务将该进程时转换成发起的命令
起到禁止使用服务的功能
/etc/hosts.allow
in.telnetd
:
192.168.0.: twist /bin/echo "421 not connection "
severity
记录级别修改
allow
默认日志记录在
/var/log/sucure
in.telnet: ALL: severity local7.info
查看在
etc/syslog.conf
在
/var/log/boot.log
中
banner
欢迎信息
in.telnetd
:
ALL: banners /var/tcpwapper/in.telnetd
文件要与服务二进制文件对应
xinetd
:超级守护进程
不太繁忙的服务才会用到该进程,帮助其他非独立进程监听
本身并不会相应用户的请求
配置文件
:
/etc/xinetd.conf
defaults
定义的默认服务选项
/etc/xinetd.d
也作为器配置文件的一部分
在非独立进程定义的默认用自身的选项
没定义的继承
/etc/xinetd.conf
默认值
开启非独立服务
:
chkconfig
服务名
on
service
服务名
restart
非独立进程定义格式:
service
服务名
{
}
非独立守护进程配置参数:
+=
在继承默认值的基础上再多加属性
-+
在继承默认值的基础上去掉该属性
=
精确匹配
disable = yes
服务关闭
no
开启服务
socket_type
套接字类型
stream
:基于
tcp
连接的
dgram
:基于
udp
连接的
protocol
服务开启使用的协议
wait = yes
单线程的服务
(tcp) no
多线程服务
(tcp udp)
user =
启动该服务以哪个用户运行
server =
服务对应的二进制文件
server_args
启动服务传递的额外选项作为启动选项
only_from =
只允许哪些客户端来访问该服务
白名单
不做默认全部
no_access =
不允许哪些
client
访问该服务
黑名单
不允许
192.168.0.1
访问该服务
onle_form = 192.168.0.0/24
no_access = 192.168.0.1
两个参数为最佳匹配
batter match
:最接近的先被匹配
与次序无关
access_times =
时间控制
格式:小时
:
分钟
-
小时
:
分钟
13:00-23:00
log_type
日志类型
SYSLOG
和
FILE /var/log/telnet.log
log_on_success
记录成功登陆和退出的信息
log_on_failure
记录不能登陆的信息
bind
绑定
bind 192.168.0.23
只监听
23
这个
ip
也可以时网卡接口
banner
欢迎信息
banner = /tmp/telnet
per_source =
做资源限制的
per_source = 2
同一个
ip
能发起并发连接为
2
个
cps =
某个时刻只允许发起的并发连接
cps = 50 10
响应
50
个并发连接多余
50
个则等待
10s
钟
测试时:清空
/etc/hosts.allow hosts.deny
重启
xinetd
服务