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来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...
随机推荐
- 2015暑假acm短训小结
时间很快,短训已经结束,短短20天,心里有一些思绪想要记下. 收获: 从最近发的随笔中可以看出,做得最多的是搜索——Dfs,Bfs.对于搜索,如何描述状态,如何压缩状态,如何决定下一个结点,是否可以剪 ...
- Java中static、final用法
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- java多线程制作计时器
基本思路: 在类中创建thread 供按钮监听器调用. 界面设计:
- MFC中SDI程序创建流程的回顾
SDI程序创建流程的回顾 从CWinApp.InitialInstance()开始, 1.首先应用程序对象创建文档模板; CSingleDocTemplate* pDocTemplate; pDocT ...
- hdu4405概率dp入门
Aeroplane chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Cocos2d-X学习——Android不同设备FPS不同问题
2014-07-16 环境:Cocos2dx 2.2.4 AppDelegate.cpp中FPS设置为 60 pDirector->setAnimationInterval(1.0 / 60); ...
- 解决mysql 数据库中日期类型00:00:00 的问题 设置xml数据类型:java.util.Date
解决方法是 设置xml里面字段的类型为:java.util.Date.加红部分. 1. beanl里面private Date ulLoginDate; 2.hibernate的xml里面是 < ...
- iOS XMPP之常见错误一:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>)
在XMPP开发中,使用XMPPStream进行连接服务器后,验证过程中,比较常见的一个错误是 <failure xmlns="urn:ietf:params:xml:ns:xmpp-s ...
- 笔记之Cyclone IV第一卷第三章器件中的存储器模块
嵌入式存储器结构由一列列 M9K 存储器模块组成,通过对这些 M9K 存储器模块进行配置,可以实现各种存储器功能,例如:RAM.移位寄存器. ROM 以及FIFO 缓冲器. M9K 存储器模块支持以下 ...
- hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
一開始实在是不知道怎么做,后来经过指导,猛然发现,仅仅须要记录某个区间内是否有值就可以. flag[i]:代表i区间内,共同拥有的蛋糕数量. 放置蛋糕的时候非常好操作,单点更新. ip:老鼠当前的位置 ...