当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪对于linux中tcpwrapper的理解      首先,tcpwrapper是unix上的工具,1990年就诞生了。至于它和iptables的不同,看到有人说是TCP/IP层的不同。说iptables是网络层的,tcpwrapper是应用层的。对不对,且看tcpwrapper的使用先: 部署:首选.........
    ▪我的tcpwrapper使用手记      1 前言 TCPWrapper,顾名思义,偶个人理解就是用来封装使用TCP/IP协议应用的一个东东,例如:telnet,ftp,ssh,exec,rsh,rlogin,finger,talk等。封装起来干啥呢? 做地址过滤啊,不让不认识的人.........
    ▪Linux下禁止ping的方法      如果要在linux下配置禁止别人ping自己的主机,可以这样操作:以root进入Linux系统,然后编辑文件icmp_echo_ignore_all。 vi /proc/sys/net/ipv4/icmp_echo_ignore_all 将其值改为1后为禁止PING,将其值改为0后为.........

[1]对于linux中tcpwrapper的理解
    来源: 互联网  发布时间: 2013-12-24

首先,tcpwrapper是unix上的工具,1990年就诞生了。至于它和iptables的不同,看到有人说是TCP/IP层的不同。说iptables是网络层的,tcpwrapper是应用层的。对不对,且看tcpwrapper的使用先:

部署:首选当然是用安装包,要是编译源码,参见如下文:http://www./LINUXjishu/4996.hgml。

开启日志:在/etc/syslog.conf里添加如下字段:
tcpwrapper loglocal3.info /var/log/tcplog

这个时候要记得重启日志服务。可以使用kill -HUP syslogd进程号的方法。

配置文件:/etc/hosts.allow

(本来还有个hosts.deny的) 编写规则是“servicename:hostname[:shellcmd]”

tcpwrapper监控的是inetd里的启动服务,用telnet举例:
 

代码如下:
telnet:ALL
EXCEPT LOCAL, .M-gtuiw.com
echo "request from %d@%h:" >> /var/log/telnet.log;
if [ %h != "OS.M-gtuiw.com:" ] ; then
    finge -l @%h >> /var/log/telnet.log
fi

意即允许除了本机和M-gtuiw.com域下主机以外的所有telnet请求,并以“请求来自服务名@主机名”的方式记录进日志。(注意:EXCEPT也可以用在servicename后面)

和iptables一样(好像说反了,其实应该是iptables和tcpd一样),这个allow和deny的规则也是讲究先来后到的,所以会有个ALL:ALL:deny收尾(如果单有deny文件,就在里头写ALL:ALL就可以了)。

调试
tcpdchk -v可以看到tcpd的全部规则设置和错误提示 tcpdmatch servicename hostname可以具体查询某条规则

inetd服务配置
相关的有两个文件,一个是/etc/services,这里定义了各种服务使用的协议和占用的端口(本文中出现的第三个新浪笔试考题了哦~~);一个是/etc/inetd.conf,这里定义了各项服务的类型、协议、监听方式、用户、程序、参数——如果启用tcpwrapper的话,程序就都是/usr/sbin/tcpd了。比如telnet的配置行如下:
telnet    stream    tcp    nowait    root    /usr/sbin/tcpd    in.telnetd

日志结果,直接摘抄一段:
Jul 31 22:00:52 [url]www.test.org[/url] in.telnetd[4365]: connect from 10.68.32.1
Jul 31 22:02:10 [url]www.test.org[/url] in.telnetd[4389]: connect from 10.68.32.5
Jul 31 22:04:58 [url]www.test.org[/url] in.ftpd[4429]: connect from 10.68.32.3

以上说了这么多,都是unix上的,最后来一句,在linux上,xinetd就是这个inetd+tcpwrapper了。何况还有强大的iptables……它可不像tcpwrapper只能管tcp协议的服务哦~~

参考文章:
http://jianjian.blog.51cto.com/35031/41949
http://echo.sharera.com/blog/BlogTopic/9379.htm
http://blog.chinaunix.net/u/26264/showart_971334.html
http://www.linuxdiyf.com/viewarticle.php?id=18335


    
[2]我的tcpwrapper使用手记
    来源: 互联网  发布时间: 2013-12-24

1 前言
TCPWrapper,顾名思义,偶个人理解就是用来封装使用TCP/IP协议应用的一个东东,例如:telnet,ftp,ssh,exec,rsh,rlogin,finger,talk等。封装起来干啥呢? 做地址过滤啊,不让不认识的人随便到主机上串门,也就是安全上常说的access control list。

tcpWrapper的工作原理其实很简单,打个比方说吧。

如果说telnet,ftp,ssh等工具是进入主机的大门,那么tcpwrapper就是守大门的老头。当有人想从telnet,ftp,ssh这些大门进入主机时,这个守大门的老头可不简单呢,它根据主机给它的你从哪儿来的信息(就是客户端IP)去翻翻资料允许进入以及不允许进入的列表(hosts.allow和hosts.deny文件),如果你来的这个地方在允许列表里,就放你进去,然后亮出一个欢迎你的牌子。^_^,如果你来的这个地方不在允许列表里,或者干脆被加入黒名单(hosts.deny)了,嘿嘿,他就睬都不睬你,你就自个人在那里撞门吧。

早期偶们做的小项目,没那么多钱,买不起硬件防火墙,solaris上又不像后期的Linux那样有iptables这种强大的工具(我昨天试图搞个iptables放在solaris上编译的,居然发现这可爱的小东西扎根于Linux的开源土壤,不愿意移植到Solaris上,非得linux的内核才能支持。。。),只好使用土装备--tcpwrapper。

2 安装
tcpwrapper的安装有2种方式,一种是直接用编译好的二进制包安装,一种是自己吭哧吭哧的改Makefile编译。这儿对2种方式都做一下简单介绍。

2.1  二进制包的安装
二进制包的安装很简单,Solaris提供一种叫Package的二进制安装包格式,执行起来跟在windows上执行.exe的可执行文件差不多,很是方便快捷。这样的二进制包可以在sunfreeware的网站上找到,都是些热心人将各个软件包编译好之后,放在这个上面共享的。默认安装在/usr/local下的,solaris7,solaris8,solaris9 环境下编译的GNU的常用工具都有。
获得package文件之后,执行下列命令即可完成安装:
pkgadd -d <package_name>

2.2  源码包编译安装
如果想要增强TcpWrapper的功能(例如记日志,或者让登录者看到好看的欢迎信息^_^)或者不想安装在/usr/local目录下,就需要自己下载源码包来编译安装。
tcpwrapper的作者一定不太负责任…,它的源码包没有configure文件,连make install的target都没有。。。要靠自己改Makefile文件,对我这个一窍不通C的人而言,实在是件巨痛苦无比的事情。所以虽然偶一向有记笔记的好习惯,在那次编译完TCPWrapper之后,居然没有留下只言片语。。。咳咳,跑题了,继续继续。
在sunfreeware上同样可以找到每个gnu应用程序包的源码包,下载下来之后是.tar.gz的包格式,类似于tcp_wrappers-7.6.tar.gz这样的一个名字。

1.解开tar.gz包
gzip –d tcp_wrappers-7.6.tar.gz
tar xvf tcp_wrappers-7.6.tar
solaris tar令人厌恶的一点就是不支持z选项,所以得分成2条命令来解这个包,偶的习惯是直接装个gnu的tar把这个tar直接替换掉。^_^

2.编辑Makefile
1)先把#REAL_DAEMON_DIR=/usr/sbin前的注释打开
2)添加如下配置项
WORKDIR=/usr/security
SBINDIR=$(WORKDIR)/bin
LIBDIR=$(WORKDIR)/lib
INCDIR=$(WORKDIR)/include
MANDIR=$(WORKDIR)/man
BANNERS=$(WORKDIR)/banner
并且修改TABLES参数的值为:
TABLES  = -DHOSTS_DENY=\"$(WORKDIR)/etc/hosts.deny\" -DHOSTS_ALLOW=\"$(WORKDIR)/etc/hosts.allow\"
这些参数依次是指定tcp_wrapper的安装路径,执行程序路径,库文件路径,include文件路径,MAN文件路径,欢迎信息文件路径,以及配置access control list信息的文件所在路径;
3)增加Install 项(高手看这段不要笑,偶的方法很土的…:$ 或者笑完把你比较高明的install方法留下让俺学习学习也行^_^)
install:
  mkdir -p $(SBINDIR) $(LIBDIR) $(INCDIR) $(MANDIR)/man3 $(MANDIR)/man5 $(MANDIR)/man8 $(BANNERS)
  cp tcpd tcpdchk tcpdmatch safe_finger try-from $(SBINDIR)
  cp libwrap.a $(LIBDIR)
  cp tcpd.h $(INCDIR)
  cp *.3 $(MANDIR)/man3
  cp *.5 $(MANDIR)/man5
  cp *.8 tcpdmatch.8 $(MANDIR)/man8
  make CC=gcc -f Banners.Makefile
  cp in.* $(BANNERS)

4)增强选项配置
修改FACILITY为LOG_LOCAL2,这个是为了让tcpwrappers记录log,需要相应的修改syslog.conf的配置;

5)显示欢迎信息
如果要让你的主机显示欢迎信息给来访问的人,需要手工编辑一个prototype文件
内容举例如下:
*************************************
*  Hello %c, Welcome you here
*************************************
当然了,有兴趣的话,可以再放些自己喜欢的文字进去。
OK,这个令当时的偶费了无数时间吐血不已的Makefile文件终于大功告成了。接下来是编译,安装

3.编译,安装
make STYLE=-DPROCESS_OPTIONS sunos5
make install
去WORKDIR指定的目录下看看?那些文件已经乖乖的都就位了。

3  配置
3.1配置inetd.conf文件
前文讲过,tcpwrapper就是用来封装telnet,ftp,ssh等程序的工具,那么如何封装呢? 窍门在inetd.conf文件里。
 这儿就不多描述inetd.conf文件在unix环境下的伟大作用了,有兴趣的人可以自行google
在inetd.conf 文件里,大家可以看到这样的配置项:
telnet  stream  tcp6 nowait  root /usr/sbin/in.telnetd in.telnetd
如果要用tcpwrapper来封装telnet,则需要修改为如下这个样子:
telnet  stream  tcp  nowait  root /usr/security/bin/tcpdin.telnetd
 这样,所有对主机的telnet访问,就变成由tcpd也就是tcpwrapper这个看门老头来控制了,很简单吧?
然后不要忘了让inetd重读一下你改的配置
ps –ef|grep inetd
kill –HUP inetd_PID

3.2  配置hosts.allow及hosts.deny文件
Tcpwrapper最至关重要的2个配置文件就是hosts.allow及hosts.deny文件,这2个文件不存在,或者为空,看门老头就会偷懒,放人家通通进来的。
首先,你要根据Makefile里指定的
TABLES  = -DHOSTS_DENY=\"$(WORKDIR)/etc/hosts.deny\" -DHOSTS_ALLOW=\"$(WORKDIR)/etc/hosts.allow\"
这个选项所在的位置来创建hosts.allow和hosts.deny文件
通常情况下,可以在hosts.allow文件中指定ALL: ALL : DENY,这样就不用配置hosts.deny文件里

3.2.1hosts.allow文件的内容格式
ALL: ALL : banners /usr/security/banner/
ALL: ALL : ALLOW
ALL: ALL : DENY
第一行,就是显示那个欢迎信息的banner的配置
第二行,就是允许进入的地址列表
第三行,就是说,不在允许列表中的地址通通不许进。

3.2.2配置举例
如果你要对所有被tcpwrapper管理起来的TCP/IP协议应用程序做相同的地址过滤规则的话
第一行和第二行的第一个ALL可以保持不变;
第一行和第二行的第二个ALL,需要换成允许进入的IP地址的列表,各个IP之间用逗号分隔。这些IP地址列表也支持地址段的方式加入,例如下面这样:
ALL: 192.168.0.0/255.255.0.0,127.0.0.1 : banners /usr/security/banner/
ALL: 192.168.0.0/255.255.0.0,127.0.0.1 : ALLOW
ALL: ALL : DENY
如果你要对被tcpwrapper管理起来的TCP/IP协议应用程序分别做地址过滤规则的话,可以在第一行和第二行的第一个ALL上做文章。
例如下面这个样子:
telnet: 192.168.0.0/255.255.0.0,127.0.0.1 : banners /usr/security/banner/
ftp: 192.168.1.0/255.255.255.0,127.0.0.1 : banners /usr/security/banner/
telnet: 192.168.0.0/255.255.0.0,127.0.0.1 : ALLOW
ftp: 192.168.1.0/255.255.255.0,127.0.0.1 : ALLOW
ALL: ALL : DENY
好了,这样就可以控制访问的IP地址啦,是不是很简单?

3.2.3 配置syslog.conf文件
通常情况下,我们还需要配置tcpwrapper的日志文件,让它记录下所有试图连接我们主机的尝试及成功进入主机的信息。
这就需要修改syslog.conf文件
添加如下信息:
local2.info  /var/log/tcpd.log
记住local2.info和/var/log/tcpd.log之间要用tab键分开来,这个也是曾经折磨我到快要吐血的位置。^_^
最后也别忘了让syslogd重读一下你改过的配置文件
ps –ef|grep syslog
kill –HUP syslog_PID

4 后记
在Linux上有个xinetd,干的活就是tcpwrapper+inetd的活,也是个好东东。不过linux是江山代有才人出啊,现在又有个iptables横空出世,已经很少很少人在用xinetd或者tcpwrapper了。

本文转自:http://echo.sharera.com/blog/BlogTopic/9379.htm 为方便阅读,在原文基础上作了简单修改,再次感谢原作者的辛苦创作。


    
[3]Linux下禁止ping的方法
    来源: 互联网  发布时间: 2013-12-24

如果要在linux下配置禁止别人ping自己的主机,可以这样操作:以root进入Linux系统,然后编辑文件icmp_echo_ignore_all。

vi /proc/sys/net/ipv4/icmp_echo_ignore_all
将其值改为1后为禁止PING,将其值改为0后为解除禁止PING。

也可以用命令行的方式修改:

防止ping:
 

代码如下:
[root@localhost yanu]# echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all

恢复ping:
 

代码如下:
[root@localhost yanu]# echo 0 >; /proc/sys/net/ipv4/icmp_echo_ignore_all

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本批量重命名文件后缀的3种实现 iis7站长之家
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3