1、网络基础(图片来源于网络)

wKiom1fE5__ALq10AAPA0k-nijM017.png

数据封装

wKioL1fE6GODy6wDAAA9p61tiB8461.png

IP头部信息

wKiom1fE6JaBji0DAACfDZ5kbm8111.pngtcp头部信息

wKioL1fE6LuATMFgAADBH7pWuh8960.png

这里为何要说这些报文格式,因为iptables无非就是对这些报文格式的某些字段做匹配之后才采取动作处理,所以报文的格式就显得非常重要,大家可以抓包然后在对比这些字段会更容易理解

2.防火墙的分类

2.1 从软、 硬件形式上分为 软件防火墙和硬件防火墙

硬件防火墙: juniper srx H3C F100 F200 华为 USG 2200 cisco ASA 5510 5520

软件防火墙: iptables

2.2 从防火墙技术分为 “ 包过滤型” “状态化包过滤型号” 和“ 应用代理型”

包过滤型: 路由器 交换机 上面的 acl 访问控制列表

Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255

状态化包过滤型: 一般的硬件防火墙都具备该功能, 作用主要是提升效率

应用代理型: 微软 ISA iptables firewalld


3、iptables 实现内部原理

wKiom1fE6RfzB88dAAFLM978DqM817.png


链(内置):

1、PREROUTING

2、INPUT

3、FORWARD

4、OUTPUT

5、POSTROUING


4、iptables常用表功能

Filter:过滤表

Nat:网络地址转换表

Mangle:拆解报文,做出修改(例如修改ttl值,增加一个标记等),并重新封装

Raw:关闭nat表上启用的连接追踪功能


优先级:raw-->mangle-->nat-->filter


数据流向:

流入本机:PREROUTING-->INPUT

本机流出:OUTPUT-->POSTROUTING

转发:PREROUTING-->FORWARD-->POSTROUTING


5、iptables实例部分

如果非必要,真没有人愿意去详细的学习iptables语法,写起来太麻烦.但熟悉熟悉,理解了原理,掌握起来也很容易.任何命令的参数其实都有其自己的体系,遵循着背后的原理.


iptables使用的语法: iptables [-t table] 操作 chain RULE ,下面是一个简化图

wKiom1fE6ZHQX2_jAAMgwZG8sF0003.png


# 这条规则能够过滤掉很多类型的端口扫描

iptables -t filter -A INPUT -p tcp -m state --state INVALID -j DROP

# 避免配置很多内部端口通行规则

iptables -t filter -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT


6、iptables上线部署步骤

1、清除默认规则

iptables -F     清除所有规则,不会处理默认的规则,默认是filter表

iptables -X    删除用户自定义的链

iptables -Z    链的记录数清零


2、配置允许ssh登录端口进入(防止自身无法连接)


[root@CentOS1 ~]# iptables -A INPUT -p tcp -s 172.16.80.0/24 -j ACCEPT    或者是下面的语句都行

[root@CentOS1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT


3、设置允许本机lo通信规则

[root@CentOS1 ~]# iptables -A INPUT -i lo -j ACCEPT

[root@CentOS1 ~]# iptables -A OUTPUT -o lo -j ACCEPT 


4、设置默认的防火墙禁止和允许规则


[root@CentOS1 ~]# iptables -P INPUT DROP

[root@CentOS1 ~]# iptables -P FORWARD DROP

[root@CentOS1 ~]# iptables -P OUTPUT ACCEPT


5、开启信任的网段

[root@CentOS1 ~]# iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT


6、允许业务服务对外提供访问

[root@CentOS1 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

[root@CentOS1 ~]# iptables -A INPUT -p icmp -s 172.16.80.0/24 -j ACCEPT    


7、允许关联的状态包通过

[root@CentOS1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[root@CentOS1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  


8、防火墙日常维护略过

9、部署iptables企业上网网关实战案例(查看之前写的iptables详解)

10、Iptables 服务器映射实战案例(查看之前写的iptables详解)