iptables防火墙
防火墙管理工具
首先防火墙是作为公网和内网之间的屏障,主要功能是依据策略对穿越防火墙自身的流量进行过滤。
防火墙的策略可以基于流量的源目地址,端口号,协议,应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略相匹配,则执行相应的处理,反之则丢弃。这样就可以保证仅有合法的流量在企业内网和外部公网之间流动了。
其实,iptables和firewalld都不是真正的防火墙,他们都是用来定义防火墙策略的防火墙管理工具而已,或者说他们是一种服务,iptables服务会把配置好的防火墙策略交由内核层面netfilter网络过滤器来处理。而Firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。
iptables
策略与规则链
防火墙会从上到下的顺序来读取配置的策略规则,在找到匹配项之后就立即结束匹配工作并去执行匹配项中定义的行为(放行或者阻止)。如果在读取完所有的策略规则之后没有匹配项就会执行默认的策略。一般而言,防火墙的默认策略规则设置有两种,一种是通,一种是堵。当防火墙的默认策略为拒绝时,就要设置允许规则,否则谁都进不来。如果防火墙的默认策略为允许,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
iptables服务把用于处理或者过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同机型分类,具体如下:
- 在进行路由选择前处理数据包(PREROUTING)
- 处理流入的数据包(INPUT)
- 处理流出的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTROUTING)
一般来说,从内网想外网发送的流量一般是可控的良性的,因此我们使用最多的就是INPUT规则链,该规则链可以增大黑客入侵的难度。
仅有策略还是不能保证安全的,我们还要对这些流量采取相应的动作来处理。
- ACCEPT:允许流量通过
- REJECT: 拒绝流量通过 (拒绝流量通过后,会给发送者回复一个我收到了,但是我丢掉了的信息)
- LOG: 记录日志信息
- DROP:拒绝流量通过(直接就丢了,不响应)
iptables中的基本命令参数
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址,加!表示除了这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如tcp,udp,icmp |
--dport num | 匹配目标端口 |
--sport num | 匹配来源端口 |
-j | 代表要跳转到的规则 |
iptables -L #查看已有的防火墙规则链
policy后面写的那个就是对应操作的默认策略
iptables -F #清空已有的防火墙规则链
iptables -P INPUT DROP #把INPUT的规则链默认设置为拒绝,
#ps别随随便便执行这个呀,我傻乎乎的一执行,得,xshell直接连不上虚拟机,就很完蛋了。
需要注意一点,规则链的默认拒绝动作只能是DROP,而不能是reject。
:one:向规则链中添加允许ICMP流量进入的策略规则。
iptables -I INPUT -p ICMP -j ACCEPT
:two:删除INPUT规则链中刚刚加入的那条策略,并把默认策略设置为ACCEPT
iptables -D INPUT 1
iptables -P INPUT ACCEPT
:three:将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量:
iptables -I INPUT -s 133.64.51.101/26 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
:four:向INPUT规则链中添加拒绝所有人访问本机12345端口的策略
iptables -I INPUT -p tcp --dport 12345 -j REJECT
iptables -I INPUT -p udp --dport 12345 -j REJECT
:five:向INPUT规则链添加拒绝192.168.10.5主机访问80端口(web服务)的策略规则:
iptables -I INPUT -s 192.168.10.5 -p tcp --dport 80 -j REJECT
:six:向INPUT规则链中添加拒绝所有主句访问本机1000-1024端口的策略规则
iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
:heavy_exclamation_mark:要特别注意一点,iptables命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令。
service iptables save