Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中
Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作
防火墙工具介绍
iptables
iptables 规则是立即生效的
由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包
firewalld
从CentOS 7 版开始引入了新的前端管理工具
软件包:
firewalld
firewalld-config
管理工具:
firewall-cmd 命令行工具
firewall-config 图形工作
一、四表五链
表中有链,链中有规则
表
表的作用:规定了如何处理数据包
1.raw:是否跟踪数据流量
2.mangle:是否标记数据流量
3.nat:地址转换 pre post
4.filte:过滤数据流量 决定数据是否通过 input output forward
链
链的作用:什么时候作用
1.input链:处理需要进入本机的流量
2.output链: 处理本机出来的流量
3.forward:处理需要被本机转发的流量
4.preouting链:处理在路由判断前的数据,在不明确是给本机的数据还是穿过本机,转发给别的机器的数据前进行处理
5.postrouting链:处理在路由判断后的数据包,明确是给自己还是给别人后处理
二、iptables命令总结
1.查看iptables规则列表命令
iptables -vnL
iptables -vnl --line-numbers
#显示规则序号
2.添加iptables规则列表命令
iptables [-t 表名] -[AIDR] 链名 规则 -j 处理动作 (ACCEPT DROP REJECT)
#命令格式
iptables -t filter -A INPUT -s 192.168.91.0/24 -j DROP
#来源于 192.168.91.0段的所有数据包都丢弃
iptables -t filter -I INPUT 3 -s 192.168.91.0/24 -j DROP
#插入第三条规则
3.删除iptables规则列表命令
iptables -t 表名 -F 清空
iptables -t 表名 -D 链名 编号 删除1条规则
iptables -F
#清空
三、iptables实操
1.拒绝来自192.168.20.6主机访问本机的22端口
#拒绝来自192.168.20.6主机访问本机的22端口
iptables -A INPUT -s 192.168.20.6 -p tcp --dport 22 -j DROP
#查看filter规则表
iptables -vnL
#查看filter规则表,并显示规则编号
iptables -vnL --line-num
#删除规则编号2
iptables -D INPUT 2
iptables -vnL --line-num
2.添加允许连接本机回环网卡
iptables -A INPUT -i lo -j ACCEPT
#添加允许流量进入本机回环网卡
3.黑名单白名单
设置是DROP的时候是黑名单,默认拒绝所有,那么需要设置白名单,同时iptables -F清空命令失效
#先在accept基础上设置黑名单,等同于iptables -P INPUT DROP
iptables -A INPUT -j DROP
iptables -vnL
#在第一行插入,添加允许xshell连接本机
iptables -I INPUT -s 192.168.20.1 -j ACCEPT
iptables -vnL
设置是ACCEPT的时候是白名单,默认允许所有,需要设置黑名单,那么想要有与DROP一样的效果,就在最后一条加上拒绝所有
4.设置icmp策略,让A可以ping通B,B 不可以ping通A
iptables -A INPUT -s 192.168.91.101 -j REJECT #双方都不可以ping 1.拒绝B的请求包 iptables -A INPUT -s 192.168.91.101 -p icmp --icmp-type 8 -j REJECT 2.拒绝B的回复包 iptables -A OUTPUT -d 192.168.91.101 -p icmp --icmp-type 0 -j REJECT
注:拒绝请求包比拒绝回复包好
5.multiport(以离散的方式匹配不同的端口)
iptables -A INPUT -s 192.168.20.8 -p tcp -m multiport --dport 22,80 -j REJECT
#拒绝来自192.168.20.8主机访问本机的22和80端口
6.限制流量(limit)
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
#每分钟1允许0个 前5个不限制
iptables -A INPUT -p icmp -j REJECT
7.state模块
1.NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
2.ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态3.RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
4.INVALID:无效的连接,如flag标记不正确
5.UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
--state state ipatables -A INPUT -m state --state NEW -j REJECT ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT #新用户不可以访问 老用户可以继续访问 老用户退出不可以访问了