菜鸟学Linux 第068篇笔记 tcp_wrapper, xinetd
iptables/netfilter
kernel, tcp/ip, framework
stack
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
table
filter
nat
mangle
raw
资源访问控制工具
tcp_wraper 也是一个网络资源访问控制工具
libwrap.so
/etc/hosts.allow (优先)
/etc/hosts.deny (次优先)
默认规则为允许
/etc/hosts.allow hosts.deny 文件格式
daemon_list: client_list [:options]
daemon_list
sshd:192.168.0.0
vsftpd,sshd,in.telnetd:
ALL
daemon@host
vsftpd@192.168.0.122:192.168.2.0
client_list
ip
network address
network/mask
172.16.
hostname
fqdn
.a.org
MACRO
ALL
LOCAL,KNOWN,UNKNOWN,PARANOID (正反向解析不匹配)
EXCEPT
[:options]
:DENY
:ALLOW
spawn echo "somebody intered `data` " >> /var/log/tcpwrapper.log
spawn echo "`data` Login attempt from %c to %s" >> /var/log/tcpwrapper.log
tcp wrapper macro (宏)
%c client information(user@host)
%s service info(server@host)
%h client hostname
%p server PID
man 5 hosts.allow 进行查询
查看某执行程序是否受tcp_wraper控制
ldd 'which httpd' | grep libwrap 动态
strings 'which portmap' | grep hosts 静态编译
xinetd 程序接受libwrap控制,所以其下所管理的服务都受其控制
Linux 服务
standalone 独立守护进程
transient 非独立守护进程
tcp wrapper 控制
sshd 仅允许172.16.0.0/16网段访问
1. /etc/hosts.allow
sshd:172.16.
2. /etc/hosts.deny
sshd:ALL
xinetd 超级守护进程 (n个非独立进程)
/etc/xinetd.conf
全局配置
defaults
服务配置段
service <service_name>
{
<attribute> <assign_operator> <value> <value>
}
/etc/xinetd.d/*.conf
此目录下每个被管理的服务都有一个配置文件
socket_type = tcp/udp/rpc
被管理服务没有级别定义
portmap --> rpc
nfs <-- rpc
SYSLOG 专门用于记录日志的服务
syslog
klog
service syslog status
xinetd 访问控制
only_from =
IP: 192.168.11.122
NETWORK: 192.168.11.0/24, 192.168.11.0/255.255.255.0
HOSTNAME:FQDN
DOMAIN: .mysky.com
no_access =
同上
access_times = hh:mm-hh:mm
hh: 0-23
mm: 0-59
监听的地址
bind = IP
interface =
资源访问控制
cps =
用户控制每秒钟入站连接的个数
两个参数
1. 每秒入站连接数的最大值
2. 临时禁用的时长
per_source =
相同IP允许同时连接几个请求
instances =
允许此服务最大连接数
向server传递参数
server_args =
port =
man 5 xinetd.conf 可查看每个选项的含义
练习题:
设定本地的rsync服务 (非独立守护进程),满足如下需求
1. 仅监听在本地192.168.11.122的地址上提供服务
bind
2. 仅允许192.168.11.0/24网络内的主机访问,但不允许192.168.11.100访问
only_from no_access
3. 仅允许同时运行最多3个实例,而且每个IP最多只允许发起两个连接请求
cps per_source