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来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...
随机推荐
- mysql ifnull if
IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysq ...
- vc 获取网页内容(HTTP)
BOOL bResult = FALSE; // 初始化WinInet 环境 HINTERNET hInternet = InternetOpen("CEHTTP", ...
- C++赋值函数详解
赋值函数 每个类只有一个赋值函数 由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视. 1,如果不主动编写拷贝构造函数和赋值函数,编译器将 ...
- DataTable 用linq分组查询
DataRow drt = null; var tlist = dt.Select("Atmbs LIKE '%" + d["Two_Code"] + &quo ...
- 解决 Xcode7 中多个模拟器的办法
转自: http://www.oschina.net/code/snippet_196012_50574 1.关闭xcode 2.终端输入 sudo killall -9 com.apple.Core ...
- java反射机制入门01
java反射机制入门是我从极客学院的视频中学习的. 1.反射机制背景概述 反射(Reflection)是java被视为动态(或准动态)语言的一个关键性质.反射机制指的是程序在运行时能够获取任何类的内部 ...
- Android存储之SQLiteDatbase
SQLiteDatabase的方式会生成一个数据库文件,每个应用最多只对应一个数据库文件,即.db文件. 可以使用很多第三方工具进行打开,查看数据库里的内容. 昨晚试了好几种工具,如navicat,s ...
- centos6.5 gsoap安装过程+ php添加soap扩展
参考博客: CentOS编译安装gSOAP Linux C实现webservice调用 安装gsoap流程 里面提到make时可能碰到的问题 还没有用到 1.从官网下载最新的版本:http://so ...
- JSONP跨域的原理解析[转]
转自 http://www.nowamagic.net/librarys/veda/detail/224 JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中, ...
- Struts2-ActionContext
官方解释: The ActionContext is the context in which an {@link Action} is executed. Each context is basic ...