Linux 防火墙是什么,你需要它吗?| Linux 中国( 三 )


[root@localhost ~]# firewall-cmd --zone=external --add-forward-port=22:porto=tcp:toaddr=192.168.1.100 // 转发端口数据至另一个IP的相同端口
[root@localhost ~]# firewall-cmd --zone=external --add-forward-port=22:porto=tcp::toport=4283 :toaddr=192.168.1.100 // 转发端口数据至另一个IP的 4283 端口
[root@localhost ~]# firewall-cmd --zone=external --add-forward-port=23:porto=tcp:toport=4283 // 转发 tcp 23端口至 4283
 
三、原来Iptables应该这样用!!!我们知道iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为”如果数据包头符合这样的条件,就这样处理这个数据包” 。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等 。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等 。配置防火墙的主要工作就是添加、修改和删除这些规则 。

Linux 防火墙是什么,你需要它吗?| Linux 中国

文章插图
 
1、iptables简述
iptables防火墙存在四张表:
① filter表:过滤表,想要允许或拒绝数据包通过,需要将对应规则写入filter表中;
② nat表:地址转换表,想要实现linux的路由转发功能,需要在nat表中添加对应规则;
③ mangle表:包标记表,网络中传输数据,发送的是数据包,每个数据包都有包头信息,想要修改数
据包的包头信息,需要将对应规则写入到mangle表中;
④ raw表:状态跟踪表,跟踪本机发送的数据包,想要知道哪些人第一次访问本机,哪些人第二次访问本机,那些人第三次访问本机,需要将对应规则写入到raw表中;
每张表存在着固定的链:
1、filter表:
INPUT // 存放进站流量规则;指入站流量,别人发给本机的数据包
OUTPUT // 存放出站流量规则;指出站流量,本机发给其他主机的数据包
FORWARD // 存放数据包转发规则;软路由,所有经过本机转发的数据包会通过FORWARD
2、nat表:
PREROUTING // 路由前
POSTROUTING // 路由后
OUTPUT // 出站
3、mangle表:
PREROUTING // 路由前
POSTROUTING // 路由后
INPUT // 存放进站流量规则
OUTPUT // 存放出站流量规则
FORWARD // 存放数据包转发规则
4、raw表:
PREROUTING // 路由前
OUTPUT // 出站
 
包过滤匹配流程
顺序比对,匹配即停止(LOG除外);若无任何匹配,则按该链的默认策略处理
一个规则链中可以写很多规则,防火墙匹配规则时:
1> 从上到下,顺序匹配,匹配到规则就停止,不再匹配下面的规则;
2> LOG 属于特殊操作,数据包进入防火墙,只会记录到日志中,不做其他任何操作;
3> 防火墙在所有的规则中都没有找到匹配的规则,则按照每张表的默认规则处理;
 
2、iptbales基础
☆☆☆ 注意事项/整体规律:
① 可以不指定表,默认为?lter表
② 可以不指定链,默认为对应表的所有链
③ 如果没有匹配的规则,则使用防火墙默认规则
④ 选项/链名/目标操作用大写字母,其余都小写
管理程序位置: /sbin/iptables
命令组成结构: iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]
基本的目标操作:
- ACCEPT:允许通过/放行
- DROP:直接丢弃,不给出任何回应
- REJECT:拒绝通过,必要时会给出提示
Linux 防火墙是什么,你需要它吗?| Linux 中国

文章插图
 
? 插入规则时,默认会将规则插入到链的最顶端
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j DROP // 插入防火墙规则,拒绝其他主机通过icmp协议ping本机,丢弃数据包
 
3、iptbales进阶
-A: 在链的末尾追加一条规矩
-I:在链的开头(或指定序号)插入一条规则
-L:列出所有的规则条目
-n:以数字形式显示地址、端口等信息
--line-numbers:查看规则时,显示规则的序号
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
-P:为指定的链设置默认规则
 
不指定表,则默认向filter表中插入规则
[root@localhost ~]# iptables -nL // #查看iptables防火墙规则,不会显示每条规则的行号,不指定表默认查看的表是filter表


推荐阅读