iptables
1. iptables是linux系统下处理数据包的一个工具统称,是由工作在用户空间的iptables和工作在内核空间的Netfilter模块组成,一般统称为Iptables;2. iptable以前一直是linux默认防火墙,后来redhat把它封装到firwalld中,所以firewalld底层还是iptables;
3. Netfilter实现的功能主要体现在数据包过滤、数据包重定向、网络地址转换等方面
3.1五链:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING;

A 主机接收到数据是否我们的,是否要修改(ip或port) 进站安检
B 接收到的数据经过路由分析,是本机处理 上车
C 接收到的数据经过路由分析,不是本机处理 转车
D 本机处理完的数据经过路由分析,直接传输出去 下车
E 数据传输出去的时候,是否需要修改(ip或port) 出站安检
本机处理数据包:A+B PREROUTING -> INPUT
本机转发数据包:A+C+E PREROUTING -> FORWARD -> POSTROUTING
本机响应数据包:D+E OUTPUT -> POSTROUTING
3.2五表:security表、filter表、NAT表、mangle表和raw表
security表: 主要针对的是数据链路层的管理规则组合,只不过它是基于target目标来做操作的。
filter表:是netfilter中最重要的表,也是默认的表,主要负责数据包的过滤功能,默认INPUT、OUPUT、FORWARD;
nat表:主要实现网络地址转换的表。可以自由转换数据报文中IP和PORT。
mangle表:主要实现数据包的拆分-修改-封装动作。
raw表:通过关闭nat表的追踪功能,从而实现加速防火墙过滤的表。
表中的链:
security表 :input 、output、forward
filter过滤表 :input 、output、forward
nat 转换表 :postrouting、prerouting、input 、output
mangle封装表 :input、output、forward、prerouting、postrouting
raw自定义表 :prerouting、output

4. firewalld相关命令:
systemctl start|stop firewalld 开启关闭防火墙
systemctl status firewalld 查看防火墙状态
systemctl enable|disable firewalld 开机自动开启、关闭防火墙
firewall-cmd --help
firewall-cmd --state 防火墙状态
firewall-cmd --version 防火墙版本
firewall-cmd --query-panic 检查拒绝规则状态
firewall-cmd --panic-on 拒绝所有数据包
firewall-cmd --panic-off 开启所有数据包
firewall-cmd --reload 更新防火墙规则
5.iptable安装与应用:
5.1 安装:yum install iptables iptables-services
5.2 iptables参数解释:

--append -A chain 向链中增加规则
--check -C chain 检查链是否存在规则
--delete -D chain 删除链中规则
--delete -D chain rulenum 根据标号删除链中规则,默认删除第一个
--insert -I chain [rulenum] 向链中插入规则,默认插入到第一位
--replace -R chain rulenum 替换链中规则,默认替换第一个
--list -L [chain [rulenum]] 列出链中所有规则
--list-rules -S [chain [rulenum]] 打印所有链中规则
--flush -F [chain] 清空链中所有规则,使用默认规则
--zero -Z [chain [rulenum]] 链中所有规则的计数器清零
--new -N chain 创建一个新的用户定义链
--delete-chain -X [chain] 删除一个新的用户定义链
--policy -P chain target 更改默认规则的动作目标
--rename-chain -E old-chain new-chain 链名称修改,注意:已经被使用的自定义链不能改名
Options:
--ipv4 -4 规则仅对ipv4生效
--ipv6 -6 规则仅对ipv6生效
[!] --protocol -p proto 指定规则使用的协议名称 `tcp'
[!] --source -s address[/mask][...] 设定源地址信息
[!] --destination -d address[/mask][...] 设定目标地址信息
[!] --in-interface -i input name[+] 设定数据包的流入接口
--jump -j target 设定规则的动作目标
--goto -g chain 跳转到没有响应的链(即自定义链)
--match -m match 设定扩展的匹配规则
--numeric -n 打印信息时候,地址和端口以数字格式输出
[!] --out-interface -o output name[+] 设定数据包的输出接口
--table -t table 设定规则所述的表,默认是filter表
--verbose -v 设定信息的显示模式
--wait -w [seconds] 设定获取 xtables lock的最长等待时间
--wait-interval -W [usecs] 设定获取 xtables lock的等待时间,默认1s
--line-numbers 打印信息时候,输出行号
--exact -x 输出扩展信息,一般用于流量信息显示
[!] --fragment -f 指定数据内容的关键字进行匹配
--modprobe= 尝试使用此命令插入模块
--set-counters PKTS BYTES 在插入/追加期间设置计数器
[!] --version -V 打印版本信息
基本动作:
ACCEPT 匹配到规则的数据包允许通过.
DROP 匹配到规则的数据包不允许通过
RETURN 返回调用链:匹配到的A链中的B规则到此为止,然后返回到主链上,继续直接进行下一链规则匹配
5.3 举例:
1.禁ping:iptables -A INPUT -p icmp --icmp-type 8 -j DROP #-A增加一条,在INPUT链上,-p协议是icmp,-j动作是抛弃
2.禁止192.168.1.15访问机器:iptables -A INPUT -s 192.168.1.15 -j DROP
3.查看INPUT链上规则:iptables -vnL INPUT --line-numbers
4.删除INPUT链上规则:iptables -D INPUT -s 192.168.1.15 -j DROP