简介:
Linux防火墙系统包括两个部分,netfilte和iptables。其中netfilte位于内核空间,目前是Linux的组成部分,可以对本机所有流入,流出,转发的数据包进行查看,修改,丢弃,拒绝等操作。但由于netfilte在内核空间中,用户一般是无法接触内核和修改内核,唯有通过一个命令行工具来完成,而这种命令行工具有很多种,比如iptables,Firewalld等工具。
iptables的四表五链:
使用iptables可以添加,删除具体的过滤操作,iptables默认维护着四个表,五个链。其中,四个表有fileter表(过滤规则表),nat表(地址转换表),mangle表(修改数据标记位规则表),raw表(跟踪数表规则表)。而每个规则表中包含着多个数据链,分别是INPUT(入站数据过滤),OUTPUT(出站数据过滤),FORWARD(转发数据过滤),PREROUTING(路由前过滤),POSTROUTING(路由后过滤),这也就是所谓的四表五链了。
防火墙过滤的框架:
如果外部主机发送数据包给防火墙本机,数据将经过PREROUTING链和INPUT链;
如果是防火墙本机发送数据包到外部主机,数据会经过OUTPUT链和POSTROUTING链;
如果防火墙作为路由转发数据,则数据会经过PREROUTING链,FORWARD链和POSTROUTING链。
iptables的语法格式:
iptables [-t 表名] {-A | -D | -I | -F | -L | -Z | -P} 链名 rule-specification
选项:-t 指定需要维护的防火墙规则表,不使用-t时,默认操作对象为filter表
-A 追加防火墙规则
-D 删除防火墙规则
-I 插入防火墙规则
-F 清空防火墙规则
-L 列出防火墙规则
-R 替换防火墙规则
-Z 清空防火墙数据表统计信息
-P 设置链默认规则
参数: (在参数前加一个“!”代表取反)
-p 匹配协议
-s 匹配源地址
-d 匹配目标地址
-i 匹配入站网卡接口
-o 匹配出站网卡接口
--sport 匹配源端口
--dport 匹配目标端口
--src-range 匹配源地址范围
--dst-range 匹配目标地址范围
--limit 匹配数据表速率
--mac--source 匹配源MAC地址
--sports 匹配源端口
--dports 匹配目标端口
--state 匹配状态(invalid、established、new、related)
--string 匹配应用层字串
触发动作:
ACCEPT 允许数据包通过
DROP 丢弃数据包
LOG 将数据包信息记录syslog日志
DNAT 目标地址转换
SNAT 源地址转换
MASQUERADE 地址欺骗
REDIRECT 重定向
REJECT 拒绝数据包通过
#查看filter表的所有规则
iptables -nL
#查看nat表的所有规则
iptables -t nat -nL
#查看raw表的所有规则
iptables -t raw -nL
#查看mangle表的所有规则
iptables -t mangle -nL
#清空filter表的所有规则
iptables -F
#在filter表中添加一条新的入站规则,丢弃192.168.0.1主机发送给防火墙本机的所有数据包
iptables -A INPUT -s 192.168.0.1 -j DROP
#在filter表中插入一条新的入站规则,拒绝192.168.0.2主机ping防火墙主机
iptables -I INPUT -s 192.168.0.2 -p icmp -j REJECT
#查看filter表中防火墙规则并显示规则编号
iptables -nL --line-number
#删除filter表中INPUT链的第一条规则
iptables -D INPUT 1
#替换filter表中INPUT链的第二条规则,拒绝192.168.0.254之外的任何主机连接防火墙本机
iptables -R INPUT 2 ! -s 192.168.0.254 -j REJECT