netfilter 是真正的防火墙,位于Linux内核中的包过滤功能体系
称为Linux防火墙的"内核态"
firewalld 和iptables 是默认的管理防火墙规则的工具
称为Linux防火墙的“用户态”
按保护范围划分:
按实现方式划分:
按网络协议划分:
属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。
netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
脸的分类依据:处理数据包不同的时机
INPUT :处理发送到本站入站数据包
OUTPUT:处理出本站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
链内匹配规则
按照顺序一次检查,匹配即停止
若找不到相匹配的规则,则按链的默认策略处理
作用:容纳各种规则链
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表: 修改数据包的源、目标IP地址或端口
filter表: 确定是否放行该数据包
规则表之间的顺序
操作前关闭防火墙,安装iptables
systemctl stop firewalld.service
yum -y install iptables iptables-services
格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
iptables table command chain parameter target
iptables -t #默认指定filter表
-t nat
command -A 追加
-D 删除
-vnL 显示详细规则链
-R 替换
-F 清空所有
-I 插入
iptables -vnL --line-numbers #查看规则的编号
chain 链名
INPUT #处理发送到本站入站数据包
OUTPUT #处理出本站数据包
FORWARD #处理转发数据包
POSTROUTING #在进行路由选择后处理数据包
PREROUTING #在进行路由选择前处理数据包
parameter匹配条件
-p 端口
-s 源ip
-d 目的ip
-i 入站网卡
-o 出站网卡
--sport 源端口
--dport 目的端口
target控制类
-j ACCEPT 已读不回
-j DROP 回复拒绝
-j REJECT 允许
-j LOG 生成日志
iptables -t filter -A INPUT -p icmp -j REJECT DROP ACCEPT #不允许任何主机ping本主机
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT #允许主机ssh端口 通过我的
iptables [-t表名] -n -L [链名] |[-- line-numbers]
或
iptables - [vn]L #不可以合写为-Ln
[root@localhost ~]iptables -vnL --line-numbers
删除:
iptables -D INPUT 5
替换:
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -R INPUT 1 -s 192.168.91.101 -j ACCEPT
清空:
iptables -F INPUT
执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。
iptables [-t表名] -P <链名> <控制类型>
iptables -P INPUT DROP 输入后没显示 清除所有规则之后生效,因为下面只剩下DROP 添加远程端口22
iptables -P FORWARD DROP
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP
iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT //感叹号”!”表示取反
[root@localhost ~]iptables -A INPUT -p tcp --sport 10000:30000 -j REJECT
#10000到30000 全部被拒
root@localhost ~]iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
vim/etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
vim /etc/sysconfig/network-scripts/ficfg-ens33
systemctl restart network #重启网卡