55TCP Wrappers
/etc/host.{allow | deny}
#如果主机写进的是 allow 就是允许的,如果是 deny 就是 被拒绝的。
当收到一个数据包的时候,首先会到allow里去匹配。如果匹配成功了,就不会到 deny里面去了。
如果没有在allow里匹配成功,就会到deny中去匹配,如果在deny中匹配成功了,就是拒绝的。
如果都没有匹配成功,则是允许通过的。
allow 和 deny的文件格式:
sshd: 192.168.30.10
只有支持了TCPwarppers模块的服务才可以在 /etc/hosts.{allow | deny}中设置
格式:
这里拿telnet说明:
daemon名: 192.168.88.70
daemon名: 192.168.88.
daemon名: .example.com
## 名字后面冒号后必须至少有一个空格
in.telnetd: 192.168.88.70
in.telnetd: 192.168.88.
in.telnetd: example.com
如果在 allow 中 /etc/hosts.allow
in.telnetd: 192.168.88.70: deny
#拒绝生效 ,如果在 deny 中 :allow 则匹配允许的。
in.telnetd: 192.168.88.70: spawn echo "11111" | mail -s "test" root
## spawn 表示 : 如果匹配成功 执行后面的命令。
in.telnetd: 192.168.88.70: spawn echo "%c access %s" mail -s "test" root
# %c表示客户端,%s表示服务端
in.telnetd: 192.168.88.70: twist echo "22222222222222222222"
# twist:用在deny中。表示匹配失败后在客户端显示的内容。
netfileter:是内核的一个功能模块。要实现这个功能,要使用不通的软件才可以。
在2.6使用的软件是 iptables:
iptables需要设置规则,规则是从上到下,逐条匹配,如果上一条匹配成功了,就不会匹配下面的规则了。
防火强规则---同一个服务的规则顺序很重要。
不同的服务顺序不重要,但是,同一个服务下的规则顺序非常重要。
当防火墙想要实现过滤功能的话,要调用一张表:叫做 filter表(做过滤用),哪些数据包可以过来,哪些包是不可以进来的。
进防火墙需要调用:INPUT (外网到防火墙)
当防火墙自身有数据包出去时,也是过滤,需要调用:OUTPUT(防火墙到外网)
当内网主机的数据包经过防火墙与外网进行通信时,哪些数据包可以通过,哪些数据包不可以通过,或外网到内网,这个过程调用的连是:FORWARD
NAT表:(网络地址转换)私有地址在互联网上是不能路由的,这时候就需要做NAT了。
#当内网IP访问外方的时候,在经过防火墙的时候会将源地址改变成公网的IP地址,叫做:SNAT,(源地址转换)
使用的连是:POSTROUTING
如果从外网访问内网的WEB,源地址是 公网地址,而WEB是内网地址,当经过防火墙的时候,防火墙会判断是80端口,从而修改源地址,将源地址修改成内网的WEB地址。叫做DNAT(目的地址转换):PREROUTING连
只要在防火墙上做了DNAT,就会将目的地址转换成私有地址,而防火墙访问自己的共有地址的时候,是不会给自己做 DNAT的
如果外网访问内网地址的时候,防火墙会正常做DNAT的。如果防火墙访问自己的外网地址时是不会将外网共有地址转换为私有地址的。这时候就会报错。
这时候可以给防火墙加一条OUTPUT这条连
这时候在NAT里,调用了3条连,
1、POSTROUTING:作用:源地址转换的(内网访问外网时,将内网地址转换成外网地址)
2、PREROUTING:作用:目的地址转换(外网访问内网时,将公网地址转换成内网地址)
3、OUTPUT :只解决一件事情:当防火墙自己访问自己的公网地址的时候,也可以转换成私有地址。
iptables -t filter -A{ I , D } INPUT{ OUTPUT , FORWARD } {n} -p tcp{ udp,icmp} {!}-s 192.168.0.0/24 { -d } --sport m:n --dport x:y -j ACCEPT
1、大括号是或:-A 或 -I 或 -D , n:只有 I D 的时候有。
2、-t:指明表:默认filter(过滤表)
3、指明:-A :添加一条规则 ,如果是添加是在后面追加的。
-D:删除一条规则,跟数字:删除第几条
-I: 插入一条规则,跟数字:插入在第几条