12 firewalld和netfilter
永久关闭selinux : vi /etc/selinux/config
s
临时关闭selinux:
f
netfilter 平时是关闭的。需要关闭firewalled,再开启netfilter.
1. 关闭firewalled.
systemctl disable firewalld
2. 然后再停止服务:systemctl stop firewalled
3. 再开启netfilter。 首先安装netfilter 命令包
yum install -y iptables-services
4. 启动iptables 服务
systemctl enable iptables
systemctl start iptables
iptables 是netfilter的一种工具而已。
13 netfilter5表5链介绍
file
netfilter的5个表:
1. filter 表主要用于过滤包,是系统预设的表,该表内建3个链:
INPUT、OUTPUT以及FORWARD。
INPUT 链作用于本机的包,OUTPUT链作用于本机送出的包,FORWARD链作用于那些跟本机无关的包。
2. nat 表主要用于网络地址转换,它有3个链。
PREROUTING、OUTPUT、POSTROUTING
PREROUTING 链的作用是在包到达防火墙时改变它的目的地址(如果需要的话),OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址。
3. mangle 表主要用于给数据表做标记,然后根据标记去操作相应的包。
4. raw 表可以实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源,可以用raw表来指定某些端口的包不被追踪。
5. security 表在centOS6中是没有的,它用于强制访问控制(MAC)的网络规则。
netfilter的5个链:
5个链分别是:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
PREROUTING: 数据包进入路由表之前
INPUT: 通过路由表后目的地为本机
FORWARDING: 通过路由表后,目的地不为本机。
OUTPUT:由本机产生,向外转发。
POSTROUTING :发送到网卡接口之前
14. iptables 基本语法
iptables 是一个非常复杂和功能丰富的工具,语法很有特点。
1. 查看规则以及清除规则:
# iptables -t nat -nvl
-t 选项后面跟表名,-nvl表示查看该表的规则。 其中-n 表示不针对ip反解析主机名,-L 表示列出,-v表示列出的信息更加信息。
#iptables -F 表示把所有的规则全部删除,如果不加-t指定表,默认只清除filter表规则。
#iptables -z 表示把包以及流量计数器置零。
2. 增加/删除一条规则
以下这些规则参数用于描述数据包的协议、源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。这些描述是对规则的基本描述。
-p 协议(protocol)
- 指定规则的协议,如tcp, udp, icmp等,可以使用all来指定所有协议。
- 如果不指定-p参数,则默认是all值。这并不明智,请总是明确指定协议名称。
- 可以使用协议名(如tcp),或者是协议值(比如6代表tcp)来指定协议。映射关系请查看/etc/protocols
- 还可以使用–protocol参数代替-p参数
-s 源地址(source)
- 指定数据包的源地址
- 参数可以使IP地址、网络地址、主机名
- 例如:-s 192.168.1.101指定IP地址
- 例如:-s 192.168.1.10/24指定网络地址
- 如果不指定-s参数,就代表所有地址
- 还可以使用–src或者–source
-d 目的地址(destination)
- 指定目的地址
- 参数和-s相同
- 还可以使用–dst或者–destinatio
-j 执行目标(jump to target)
- -j代表”jump to target”
- -j指定了当与规则(Rule)匹配时如何处理数据包
- 可能的值是ACCEPT, DROP, QUEUE, RETURN,MASQUERADE
- 还可以指定其他链(Chain)作为目标
- 注:MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。
-i 输入接口(input interface)
- -i代表输入接口(input interface)
- -i指定了要处理来自哪个接口的数据包
- 这些数据包即将进入INPUT, FORWARD, PREROUTE链
- 例如:-i eth0指定了要处理经由eth0进入的数据包
- 如果不指定-i参数,那么将处理进入所有接口的数据包
- 如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
- 如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包
- 还可以使用–in-interface参数
-o 输出(out interface)
- -o代表”output interface”
- -o指定了数据包由哪个接口输出
- 这些数据包即将进入FORWARD, OUTPUT, POSTROUTING链
- 如果不指定-o选项,那么系统上的所有接口都可以作为输出接口
- 如果出现! -o eth0,那么将从eth0以外的接口输出
- 如果出现-i eth+,那么将仅从eth开头的接口输出
- 还可以使用–out-interface参数
–sport 源端口(source port)针对 -p tcp 或者 -p udp
- 缺省情况下,将匹配所有端口
- 可以指定端口号或者端口名称,例如”–sport 22″与”–sport ssh”。
- /etc/services文件描述了上述映射关系。
- 从性能上讲,使用端口号更好
- 使用冒号可以匹配端口范围,如”–sport 22:100″
- 还可以使用”–source-port”
–-dport 目的端口(destination port)针对-p tcp 或者 -p udp
- 参数和–sport类似
- 还可以使用”–destination-port”
-–tcp-flags TCP标志 针对-p tcp
- 可以指定由逗号分隔的多个参数
- 有效值可以是:SYN, ACK, FIN, RST, URG, PSH
- 可以使用ALL或者NONE
-–icmp-type ICMP类型 针对-p icmp
- –icmp-type 0 表示Echo Reply
- –icmp-type 8 表示Echo
15.iptables filter 表案例
16-18 iptables nat 表应用