防火墙
作用:
- 拒绝让Internet的数据包进入主机的某些端口
- 拒绝让某些来源IP的数据包进入
- 拒绝让带有某些标志(flag)的数据包进入,如SYN包
- 分析硬件地址(MAC)来决定是否连接
iptables
介绍:
(类似acl列表)从上往下逐一匹配
iptables服务会将用于处理或过滤流量的策略条目称为规则,多条规则可组成规则链,规则链依据数据包处理位置的不同进行分类
-
流入(input)
-
流出(output)
-
转发(forward)
-
目的地址转换(prerouting)
-
源地址转换:(postrouting)
安装:
[root@server ~]# yum install iptables -y
[root@server ~]# systemctl stop firewalld
[root@server ~]# iptables -F
#清空所有的注册表,清空之后客户端可以访问ssh和http服务
配置:
#语法格式:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
参数 | 说明 |
---|---|
-t | 对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个,默认filter表 |
-p | 指定要匹配的数据包协议类型 |
-i | --in-interface name : 指定数据包来源的网络接口(如:eth0) |
-o | --out-interface name :指定数据包出去的接口 |
-L | –list[chain] 列出链上的所有规则,如果未指定,则列出表上所有链的所有规则 |
-A | – append chain rule-specification ;在指定链的末尾插入指定的规则, |
-l(大写) | 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入(默认)。 |
-D | 在指定的链 chain 中删除 一个或多个指定规则 |
-R | 用于替换(或修改)指定链中的特定规则 |
-P | -policy chain target :为指定的链 chain 设置策略 target。 |
-F | 清空所有规则 |
-N | 创建一个新链 |
- X | 删除指定的链 |
实验:
实验1:
搭建web服务,设置任何人都能通过80端口进行访问
[root@server ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
n
[root@server www]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
实验2:
禁止所有人ssh远程登陆该服务器
[root@server ~]# iptables -I INPUT -p tcp --dport 22 -j REJECT
firewalld
区域:
firewalld 中常见的区域名称(默认public)以及相应的策略规则
区域 | 默认规则策略 |
---|---|
阻塞区域(block) | 拒绝所有流入的流量,但允许传出连接 |
工作区域(work) | 允许工作相关的流量(ssh,邮件,vpn等) |
家庭区域(home) | 允许SSH、文件共享、多媒体流和常见家庭网络服务 |
公共区域(public) | 通常仅允许基本服务,如SSH和DNS,限制其他传入连接以增强安全性。 |
隔离区域(DMZ) | 只有选择接受传入的网络可进入 |
丢弃区域(drop) | 拒绝流入的流量,除非与流出的流量相关 |
内部区域(internal) | 用于可信网络,允许大多数传入连接,适用于内部网络环境 |
外部区域(external) | 用于不可信网络,如互联网,仅允许选定的传入连接 |
命令:
[root@server ~]# firewall-cmd --list-all #列出所有规则
[root@server ~]#firewall-cmd --permanent --add-service=服务名 #添加新规则