Linux中TCP wrapper的使用
Linux中TCP wrapper的使用
tcpwrapper的目的是对那些访问控制功能较弱的服务提供访问控制功能要想了解访问控制就必须先知道服务监听的概念:
服务监听的两种方式:
listen : socket 监听在套接字上提供服务
循环 不停歇的查看某个端口来提供服务
有两种方式来判断一个服务是否支持tcp wrapper:
1.通过查找库文件看是否有libwrap
ldd `which command`
2.查看是否连接到/etc/hosts.allow|deny
strings `which command` # 查看静态链接库
如果有/etc/hosts.allow
/etc/hosts.deny 就说明这个命令静态链接了tcpwrraper
tcpwrraper自身工作在内核,却可以通过这两个文件来提供访问控制
请求
↓
服务 --->/etc/hosts.allow ---> 如有有就放行
↓ 没有
/etc/hosts.deny ----> 如果没有就放行
↓
如果有明确的匹配条目拒绝
/etc/hosts.allow|deny文件格式:damon_list: client_list [:option]
匹配服务列表:damon_list
vsftpd: 192.168.0.
vsftpd,sshd,in.telnetd:
ALL
daemon@host
vsftpd@192.168.0.186
#可以简写192.168.0 代表192.168.0.0网段
#可以一次指定多个服务
#可以使用通配符ALL来指定所有的服务
#@只对某个主机来控制
匹配客户端列表clent_list
IP
network address
network/mask: mask不能使用长度格式 ,只能是有完全ip的格式
172.16.0.0--->172.16. 也可以简写网段
HOSTNAME
fqdn
.a.rog 表示a.org域内的所有主机
option 选项
spawn #可以通过spawn来实现日志定义
spawn echo ""
#下面定义一个条件,只要用户通过telnet登录就记录到一个日志
vim /etc/hosts.deny
in.telnetd:ALL EXCEPT 172.16.0.1: spawnecho "Login attemp(`date`) %u from %a attemp to login %A, the deamon is%d." >> /var/log/telnet.log
##注意不能在echo后面用: 分号在这里有特殊意义。
##可以通过man 5 hosts_access 来查看上述%的含义
常用的宏定义 MACRO
ALL #代表所有主机,或者所有服务
LOCAL #表示本地主机,非FQDN主机
KNOWN #表示可以被解析的主机
UNKNOWN #反向可以被解析的主机
PARANOID #正反向解析不匹配的主机
EXCEPT #排除某个主机或某个网络
-
怎么来控制vsftpd的访问
- 1. which vsftpd # 确定文件路径
- 2. vim /etc/hosts.deny # 改文件立即生效
- vsftpd: 172.16.100.100
- #假设仅允许172.16网段访问
- vim /etc/hosts.allow
- vsftpd: 171.16 # 只允许172.16.0.0/16网段
- vim /etc/hosts.deny
- ALL: ALL # 拒绝其他的用户登陆
这样就只有172.16.0.0网段可以访问了
控制SSH ,只允许192.168.0.32网段登陆,并且不允许192.168.0.32登陆
- vim /etc/hosts.deny
- ALL:ALL
- vim /etc/hosts.allow
- sshd: 192.168.0 EXCEPT 192.168.0.32
效果:
将/etc/hosts.deny 里面的ALL: ALL去掉就可以恢复登陆
1),在编译的时候明确表示能接受tcp wrapper的控制
通过ldd `which sshd`来查看
通过strings `which portmap`| grep hosts查看
2),必须是tcp协议
这个时候才能实现tcp wrapper的控制,虽然能功能范围少了一点,但是tcp wrapper配置起来要比iptables简单很多
/etc/hosts.deny
服务名 : 客户端名 [选项]
vsftpd: 192.168.0.
vsftpd,sshd,telnetd: 192.168.0.
All: 192.168.0.
daemon@host #指定只在某个特定的地址上进行控制比如:
vsftpd@192.168.0.186 #有多块网卡的情况下
IP
network address/mask
#网络地址(只能使用类似255.255.完全ip地址
格 式,不能使用位长度表示)
hostname #主机名称
.a.org #表示.a.org域内的所有主机
1),yum install vsftpd
2), service vsftpd start
3),vim /etc/hosts.deny 里面写入
vsftpd: 172.16.100.1
4),配置完立即生效,不需要重启服务
5),通过windows客户端进行认证
1),vim /etc/hosts.allow 写入: vsftpd: 172.16.
2), vim /etc/hsots.deny : vsftpd: ALL
telnet传输的过程是明文
telnet一般不允许管理员直接登录(可以先以普通身份登进去,然后su - root)
2),ls /etc/xinetd.d #里面会有telnet,由此说明telnet是接受超级进程xinetd控制
3),ldd `which xinetd` #可以发现超级守护进程是接受tcp wrapper控制的
4),chkconfig telnet on #注意这里只是说明下一次开机会自动启动,不能立即生效
5),service xinetd restart #通过重启超级进程来重启telnet
6),useradd gentoo
7),passwd gentoo
8),telnet 172.168.25.1测试
vim /etc/hosts.deny 写入: in.telnetd:ALL EXCEPT 172.16.0.1
vim /etc/hosts.deny 写入:
in.telnet:
ALL EXCEPT 172.16.0.1 : spawn echo "%u from %a attempt to login %A ,the
daemon is %d." >>/var/log/telnet.log
比如:
vim /etc/hosts.deny中写入 : in.telnetd: 172.16. :ALLOW
ALL:ALL #表示只允许172.16.网段使用telnet登录
Linux中TCP wrapper的使用的更多相关文章
- 查看linux中tcp连接数
一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议 ...
- 设置linux中tcp默认的20秒connect超时时间(转)
无论你用任何语言或者是网络库,你都可以设置网络操作的超时时间,特别是connect.read.write的超时时间. 你可以在代码中把超时时间设置任意大小值,但是connect方法会有一点特殊. co ...
- 关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记 为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就 ...
- 查看linux中的TCP连接数【转】
转自:http://blog.csdn.net/he_jian1/article/details/40787269 查看linux中的TCP连接数 本文章已收录于: 计算机网络知识库 分类: ...
- Linux系统网络编程中TCP通讯socket--send导致进程被关闭
https://blog.csdn.net/dsanmux/article/details/52083403 https://blog.csdn.net/u011425939/article/deta ...
- 【翻译】TCP backlog在Linux中的工作原理
原文How TCP backlog works in Linux水平有限,难免有错,欢迎指出!以下为翻译: 当应用程序通过系统调用listen将一个套接字(socket)置为LISTEN状态时,需要为 ...
- TCP系列41—拥塞控制—4、Linux中的慢启动和拥塞避免(一)
一.Linux中的慢启动和拥塞避免 Linux中采用了Google论文的建议把IW初始化成了10了.在linux中一般有三种场景会触发慢启动过程 1.连接初始建立发送数据的时候,此时cwnd初始化为1 ...
- TCP系列15—重传—5、Linux中RTO的计算
之前我们介绍的都是协议中给出的RTO计算方法,下面我们看一下linux实现中RTO的计算方法.在linux中维护了srtt.mdev.mdev_max.rttvar.rtt_seq几个状态变量用来计算 ...
- Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
一.前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数.我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...
随机推荐
- JS sort()实用技巧
[1, 3, 9, 2].sort(); // Returns: [1, 2, 3, 9] // 返回 [1, 2, 3, 9] --这没错,但它还有更强大的用法,比如这样: var data=[ ...
- CloudStack修复bug
CloudStack应用越来越广,但是随着测试也遇到了越来越多的bug. 不想等待新版本发布而且又急于修复某些bug的童鞋,可以参考下本文内容. CloudStack是java语言写成,发布时会发布为 ...
- C# 计算器 运算符和数字键的keys对照
keys. private void Computer_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.NumPad0) ...
- 【Hibernate】Remember that ordinal parameters are 1-based!
此错误的官方解释:1.当hql中不需要参数,而传递了参数导致,2.set参数时没有从0开始. 但此问题不属这两种. 检查导入的libraries无错误. 最后在网络搜索到:http://qihaihu ...
- 内核printk打印等级
为了确认内核打印等级以及prink 参数对打印的分级,在led驱动初始化代码[以及exit出口]加入如下代码. 每次insmod .rmmod led模块时,根据打印等级的设置,得到不同的打印结果: ...
- diff两个文件夹里的东西
diff --help -x, --exclude=PAT exclude files that match PAT 排除某个类型的文件 -u, -U NUM, --uni ...
- BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
按题意用priority_queue模拟即可 ---------------------------------------------------------------------- #inclu ...
- 用Flask实现视频数据流传输
Flask 是一个 Python 实现的 Web 开发微框架.这篇文章是一个讲述如何用它实现传送视频数据流的详细教程. 我敢肯定,现在你已经知道我在O’Reilly Media上发布了有关Flask的 ...
- HDU 3916 Sequence Decomposition 【贪心】
这道题目的题意就是使用题目中所给的Gate 函数,模拟出输入的结果 当然我们分析的时候可以倒着来,就是拿输入去减 每次Gate 函数都会有一个有效范围 这道题目求的就是,找出一种模拟方法,使得最小的有 ...
- iOS开发UITableViewCell的选中时的颜色设置
1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle = ...