1.定义
什么是防火墙?防火墙是指一种将内网和外网逻辑上分隔开的一种技术,对两边的网络进行包过滤。防火墙可分为网络防火墙和主机防火墙。网络防火墙一般是在网络边界(如外网出口,局域网之间)上的硬件设备,可以对整个局域网内的主机和设备进行防护。主机防护墙是指在主机系统上的防护软件,可以针对每一台主机自定义防护等级。
什么是iptables?windows10的防火墙是defender防火墙,Linux的防火墙是处于内核的netfilter,iptables就是netfilter防火墙的一个命令行管理工具,处于用户层面,可以管理Linux的防火墙。
2.规则策略
规则是管理员预设的条件,数据包匹配到这个预设的条件后,会根据策略进行放行(accept)、拒绝(reject)和丢弃(drop)。拒绝和丢弃的结果相同数据包不会通过防火墙,区别拒绝是丢弃数据包,同时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息;而丢弃则是将数据包直接丢弃而用户不会得到任何系统上的提示。匹配成功后的数据包就不会继续匹配后面的规则了。
默认规则是防火墙中最后一条规则,是一条托底的规则,当数据包没有匹配所有预设条件时会匹配最后一条默认规则,放行或者丢弃。一般默认规则都是丢弃,如果设置成放行而过滤规则不够丰富,防火墙就是失去作用了。
3.数据方向
根据数据的流向可以将数据包分为以下几类,其中重点需要处理的就是外网进入内网的数据了。
处理流入的数据包(INPUT)
处理流出的数据包(OUTPUT)
处理转发的数据包(FORWARD)
在进行路由选择后处理数据包(POSTROUTING)
在进行路由选择前处理数据包(PREROUTING)
4.iptables的使用
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。
参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I 在规则链的头部加入新规则
-D 删除某一条规则
-j 处理规则策略的动作ACCEPT、REJECT、DROP
-s 匹配源地址,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
4.1使用iptables -L查看策略,默认策略都是放通,这样防火墙并没有作用,我们清空策略并设置默认策略拒绝。
[root@localhost Desktop]# iptables -F
[root@localhost Desktop]# iptables -P INPUT DROP
这样再看另一台主机ping这台设备时就不通了,所以ping不通不一定是设备关机或者网络故障了,可能是开启了防火墙过滤了ICMP包了。
4.2开启只允许192.168.10.20这个主机对本设备的ping包策略。
[root@localhost Desktop]# iptables -I INPUT -s 192.168.10.30/32 -p icmp -j ACCEPT
4.3开启只允许192.168.10.20这个主机对本设备的SSH端口策略。
[root@localhost Desktop]# iptables -I INPUT -s 192.168.10.20 -p tcp --dport 22 -j ACCEPT
4.4添加所有人允许访问服务器的DNS策略。
[root@localhost Desktop]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
[root@localhost Desktop]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
4.5开启自定义端口65510-65520的所有端口策略。
[root@localhost Desktop]# iptables -A INPUT -p udp --dport 65510:65520 -j ACCEPT
[root@localhost Desktop]# iptables -A INPUT -p tcp --dport 65510:65520 -j ACCEPT
4.6查看策略并保存。
[root@localhost Desktop]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.10.20 anywhere tcp dpt:ssh
ACCEPT icmp -- 192.168.10.20 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpts:65510:65520
ACCEPT tcp -- anywhere anywhere tcp dpts:65510:65520
以下省略...
[root@localhost Desktop]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]