iptables防火墙
ufw:Ubuntu的防火墙
waf防火墙是应用防火墙,处理7层攻击,SQL注入
nftables:centos8
- 容器:放规则的地方 Netfilter
- 表(table):存放链的容器–最大的概念
- 链(chain):存放规则的容器
- 规则(policy):准许或拒绝规则
防火墙是层层过滤,从上到下(也就是从之前写的匹配到现在最新写的规则)。如果匹配成功之后就不好在向下匹配了。如果一直匹配不到就会一直到匹配默认规则。默认规则是所有规则匹配完才会匹配。
4表5链,filter表、nat表、raw表、mangle表
5链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
- filter 表: 屏蔽或准许端口 ip
是iptables默认使用的表
INPUT负责过滤所有目标地址是本机地址的数据包。能否让数据进入到服务器
FORWARD起转发
OUTPUT是从主机发出去的数据包
-
nat表
负责网络地址的转换
公网ip不固定,更换:
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
把用户的源ip会改成防火墙对应的的公网ip
默认iptables文件是/etc/sysconfig/iptables,是嵌入到linux内核中的
默认是看的filter表的规则,如果要看别的表的规则就使用:iptables -t nat -nL
整个网段都屏蔽的话:
iptabels -I INPUT -s 10.100.21.0/24 -j DROP
禁止网段以及端口访问:
iptables -I INPUT 10.0.0.0/24 -p tcp --dport 8008 -j DROP
-m multiport -p tcp --dport 80,8080
所有端口的话表示范围的可以使用
-p tcp --dport 1:21231
除了10.0.0.0/24的其他都拒绝
1、利用!进行排除
iptables -I INPUT ! -s 10.0.0.0/24 -j DROP
ICMP。不想让别人ping通,可以禁ping
iptables -I INPUT -p icmp -j DROP
也可以控制内核参数控制禁止被ping
在/etc/sysctl.cong文件中加入:
net-ipv4.ip_forward = 1
net-ipv4.icmp_echo_ignore_all=1
使配置文件生效sysctl -p ----永久生效
iptables -I INPURT -j DROP
匹配网络状态
通过防火墙控制连接状态:
-m state --state
NEW:已经或将启动新的连接
ESTABLISHED:已建立的连接
RELATED:正在启动的新连接
INVALID:非法或无法识别的连接
限制并发及速率
-m limit --limit 10/minute #每分钟只能有10个数据包,每6秒生成
-m limit --limit n/{second/minute/hour}
防火墙规则保存:
iptables save > /etc/sysconfig/iptables
恢复:(回退)
iptables-restore< /etc/sysconfig/iptables
默认规则是ACCEPT的话,想要拒绝就加黑名单
默认规则是DROP的话,想要通过是加白名单
Windows的默认是拒绝的,如果需要访问的话要添加入站规则。
共享端口是需要开放udp和tcp两个策略的
Windows+R firewall.cpl就可以出来Windows防火墙了
nat 实现共享访问
共享上网得配置nat表
配置防火墙SANT规则
开启内核转发功能,客户端网关指向防火墙
发出请求的ip是源ip,接受信息的ip的目的ip
POSTROUTING链 PRE
iptabels -t nat -A POSTROUTING-s 172.16.1.7 -j SNAT --to-source 10.0.0.61(源ip)
实现端口转发/映射:
iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22
iptables -F flush 清除所有规则,不会清默认的规则
-j 满足条件的DROP(数据丢掉,不会返回信息给用户/ACCEPT/REJECT(拒绝,返回拒绝的信息)
-X 删除用户 自定义的链
-Z zero 链的计算清0
iptables -t filter -A INPUT -s -p tcp/udp/icmp --dport 目标端口 -j DROP/ACCEPT
iptables -I -d --sport 源端口 -j REJECT(追加)
iptables -D -j ACCEPT(删除)
设计到端口的都要指定好协议 -p tcp/udp/icmp
区分好源端口还是目的端口