前言:防火墙主要可以分为两大类型,第一种类型称为主机防火墙,第二种类型称为网络防火墙。
主机防火墙对单体做出防火墙,网络防火墙对集体做出防火墙。并且网络防火墙分为硬件防火墙和软件防火墙。硬件防火墙在一定程度上可以防御DDos攻击。
iptables:用户代理
netfilter:真正的防火墙的安全框架,主要有以下几个功能:
- NAT
- 数据修改
- 防护墙
01-iptables基础
iptables中含有五链:
- preouting:数据包刚进入网络层的时候
- input:路由判断好了,进入用户空间
- output:用户空间发出,让路由判断从哪里走
- postrouting:数据包网络口发送出去
- forward:不进入用户空间,直接转发
iptables中含有四表:
- filter表:负责过滤(iptables_filter):[input,forward,output]
- nat表:网络地址转换(iptables_nat):[preouting,input,output,postrouting]
- mangle表:解析报文,修改报文,封装报文(iptables_mangle)[all]
- raw表:可以关闭NAT表上的一个连接追踪(iptables_raw)[preouting,output]
**四个表的优先级如下:**raw>mangle>nat>filter
iptables的处理动作:
- ACCEPT:接包
- DROP:发包
- REJECT:拒绝信息
- SNAT:源地址转换,解决内网用户上网的问题
- MASQUERADE:动态改变IP
- DNAT:目标地址的转换
- REDIRECT:本机端口映射
- 日志地址:/var/log/messages
01-filter过滤规则
iptables -t filter -L #查看filter过滤规则
iptables -t raw -L #查看raw过滤规则
iptables -t mangle -L #查看mangle过滤规则
iptables -t nat -L #查看raw过滤规则
iptables --line-number -nvL INPUT
查看filter过滤表中的内容:
02-iptables相关命令
iptables --line-number -nvL INPUT #查看链接表
iptables -t filter -I INPUT -s 192.168.1.1 -j DROP #禁止的INPUT流量
iptables -t filter -A INPUT -s 192.168.1.1,192.168.1.2 -j DROP #在列表最后面批量添加
iptables -t filter -I INPUT 192.168.1.1/24 -j DROP
iptables -I INPUT -s 1.1.1.1 -d 1.1.1.2 -j DROP #拒绝源1.1.1.1,目的1.1.1.2的数据包
iptables -I INPUT -s 1.1.1.1 -s tcp -j DROP #拒绝源1.1.1.1的TCP的协议包
iptables -I INPUT -s 1.1.1.1 -i ens33 -p icmp -j DROP #拒绝来自网卡ens33的input方向的来自1.1.1.1的icmp请求
iptables -I INPUT -s 1.1.1.1 -p tcp -m multiport --dportws 22,3389,80 -j DROP #同时拒绝多个端口
iptables -t filter -I INPUT -m iprange --src-range 192.168.1.130-192.168.1.133 -j DROP #不接受
iptables -t filter -I OUTPUT -m iprange --dst-range 192.168.1.130-192.168.1.133 -j DROP #不转发
iptables -t filter -I INPUT -p tcp --sport 80 -m stirng -algo --string "pornhub" -j REJECT #过滤带字符串的数据包
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 19:00:00 -j DROP #9-19点断网
iptables -t filter -I OUTPUT -p tcp --dport 80 --weekdays 6,7 -j DROP
iptables -D INPUTS 10 #删除第10个
iptables -t filter -F INPUT #删除filter中所有的INPUT
```![在这里插入图片描述](https://img-blog.csdnimg.cn/4b3b8325c8d940348cb9437fa4f594b5.png)
**防火墙规则保存**
service iptables save #防火墙规则保存在 /etc/sysconfig/iptables
## 02-connlimit 连接限制
connlimit:可以限制每个IP地址同时连接到Server端的连接的数量。
**connlimit基本功能如下**
–connlimit-above单独限制每个IP的连接数量
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
–connlimit-mask 针对某类IP的网段中的连接数
某个网段(24位子网掩码)允许tcp80端口20个连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT
## 03-limit 限速
--limit-burst:令牌桶
--limit :令牌桶中生成新令牌频率:second minute hour day
iptables -t filter -I INPUT -p icmp -m limit --limit-burst 3 --limit 10/muniute -j ACCEPT
10分钟生成一个令牌,然后方形
iptables -t filter -A INPUT -p icmp -j REJECT
## 04-多协议拓展
### 01-UDP-限制
限制UDP端口
iptables -t filter -I INPUT -p udp -m udp --dport 137:150 -j ACCEPT
### 02-ICMP-限制
ICMP:全称Internet Control Message Protocol
限制ICMP端口
iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
## 05-补充细节
1. 尽量先设置DROP,再设置ACCEPT
2. 我们自己也可以去设置新链:
1. **看到新链:iptables -nvL**
2. iptables -I IWEB -s 192.168.1.32 -j REJECT
3. 修改链名:iptables -E IWEB WEB
4. 删除链名:iptables -X IWEB #有规则则不能删
5. 如果有规则,要先清空规则:iptables -F WEB