CentOS8 iptables配置防火墙
iptables 防火墙简介
- 在操作系统中防火墙在内网和外网中充当保护的屏障,防火墙有软件防火墙和硬件防火墙之分。
- 在Linux系统中有多种防火墙管理工具,例如:iptables、firewall-cmd、 firewall-config 和TCP-Wrapper防火墙管理工具。这些都只是定义防火墙策略的防火墙管理工具。iptables服务将配置好的防火墙策略交由内核中的netfilter网络过滤器处理。firewalld配置好的防火墙策略交由内核中的nftables包过滤框架来处理。
- 防火墙策略可以基于流量的原目的地址、端口号、协议、应用等信息来定制。
iptables匹配规则
- 防火墙从上至下顺序读取配置的策略规则,在找到匹配项之后立即结束匹配工作并执行匹配项中定义的行为。
- iptables中用于处理或过滤流量的策略条目称之为规则。多条规则组成一个规则链。
- 基于以上原因,
应当把规则按重要性的顺序配置,同时把允许动作放到拒绝动作之前。
- 如果防火墙默认策略是
"放行(阻止)"
,则设置规则为“阻止(放行)”
。
规则链依据数据包处理位置的不同分类
类型 | 含义 |
---|---|
PREROUTING | 在进行路由选择之前处理数据包 |
INPUT | 处理流入的数据包 |
OUTPUT | 处理流出的数据包 |
FORWARD | 处理转发的数据包 |
POSTROUTING | 在进行路由选择后处理数据包 |
一般从内网向外网发送的流量一般都是可控且良性的,所以使用最多的就是配置 INPUT 规则链
针对策略规则类型采取不同动作
类型 | 含义 |
---|---|
ACCEPT | 允许流量通过 |
REJECT | 拒绝流量通过 |
LOG | 记录日志信息 |
DROP | 拒绝流量通过 |
REJUECT和DROP
的区别:
- REJECT在拒绝流量后再回复一条“您的信息已收到,但是被扔掉了”
- DROP直接将流量丢弃且不响应。
- 规则链默认拒绝动作只能是DROP,而不能是REJECT。个人猜测:当黑客想要探明是否某个主机是否在线时,如果使用REJECT则即使信息被拒绝了,也能知道主机是在线的。但是如果使用DROP则,无法探出是真的不存在该主机还是该主机将信息DROP了没有回应。
iptables常用命令参数
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链末尾加入新规则 |
-I num | 在规则链头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加"!"表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
–dport num | 匹配目标端口号 |
–sport num | 匹配来源端口号 |
iptables 实践
将INPUT默认策略改为DROP
[root@MyCentOS ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@MyCentOS ~]# iptables -P INPUT DROP
[root@MyCentOS ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
向某种类型中添加允许某种协议进入
[root@MyCentOS ~]# iptables -I INPUT -p icmp -j ACCEPT
[root@MyCentOS ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
第一条命令中的含义是
-I INPUT
在INPUT头部添加一条规则-p icmp
匹配ICMP协议-j ACCEPT
跳转执行ACCEPT操作,因为INPUT的默认操作时DROP
删除某条规则
[root@MyCentOS ~]# iptables -D INPUT 1
[root@MyCentOS ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
设置指定网段的主机访问本机某端口,拒绝其他所有主机的流量
[root@MyCentOS ~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
[root@MyCentOS ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
[root@MyCentOS ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
- 上述第一条命令含义是:
-I INPUT
在INPUT规则链中头部添加规则-s 192.168.10.0/24
匹配192.168.10.0-192.168.10.24中的所有主机IP地址-p tcp
匹配tcp协议--dport 22
匹配访问本机端口号为22的流量-j ACCEPT
跳转至执行ACCEPT操作
- 上述第二条命令含义是:
-A INPUT
在INPUT规则链末尾添加规则-p tcp
匹配tcp协议--dport 22
匹配访问本机端口号为22的流量-j REJECT
跳转至执行REJECT操作
根据上述iptables匹配规则中所说,需要把匹配规则中允许规则放置在拒绝规则之前。
保存iptables 配置设置
iptables的防火墙设置感觉还行,再多的实践就不再写了。但是配置的防火墙策略默认会在系统下一次重启时生效,永久生效还要执行保存命令
[root@MyCentOS ~]# service iptables save