Linux 防火墙相关
防护墙常用操作一览
ufw 命令是Ubuntu的防火墙命令
sudo ufw enable|disable # 启动或关闭防火墙
sudo ufw default deny # 关闭所有外部对本机的访问(本机访问外部正常)。 一般不要用这个
sudo ufw status # 查看防火墙状态
netstat -nlp # 查看服务对应端口
sudo ufw allow 25565 # 开启25565端口
sudo ufw status # 查看全部打开的端口
sudo ufw delete allow 25565 # 关禁止外部访问25565端口
sudo ufw allow from 192.168.1.1 # 允许某个ip访问全部端口
lsof -i:端口号 # 查看使用的端口进程
iptables 命令
参考资料 iptables命令 参考资料 Linux上常用的防火墙软件 iptables
iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。在早期的 Linux 系统中,默认使用的是 iptables 防火墙管理服务来配置防火墙
语法
iptables (选项)(参数)
工作机制
规则链名包括(也被称为五个钩子函数(hook functions)):
- INPUT链 :处理输入数据包。
- OUTPUT链 :处理输出数据包。
- FORWARD链 :处理转发数据包。
- PREROUTING链 :用于目标地址转换(DNAT)。
- POSTOUTING链 :用于源地址转换(SNAT)。
防火墙的策略
防火墙策略一般分为两种,一种叫通策略,一种叫堵策略
- 通策略,默认门是关着的,必须要定义谁能进。
- 堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。
所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能
其中:定义数据包中允许或者不允许的策略使用 filter 过滤的功能,而定义地址转换的功能的则是 nat 选项。
为了让这些功能交替工作,我们制定出了 “表” 这个定义,来定义、区分各种不同的工作功能和处理方式。
我们现在用的比较多个功能有3个:
-
filter 定义允许或者不允许的,只能做在3个链上:INPUT ,FORWARD ,OUTPUT
-
nat 定义地址转换的,也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
-
mangle 功能:修改报文原数据,是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
iptables 还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。
注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
┌───────────────┐ ┃ Network ┃
│ table: filter │ ┗━━━━━━━┳━━━━━━━┛
│ chain: INPUT │◀────┐ │
└───────┬───────┘ │ ▼
│ │ ┌───────────────────┐
┌ ▼ ┐ │ │ table: nat │
│local process│ │ │ chain: PREROUTING │
└ ┘ │ └─────────┬─────────┘
│ │ │
▼ │ ▼ ┌─────────────────┐
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │table: nat │
Routing decision └───── outing decision ─────▶│chain: PREROUTING│
┅┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅┅ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ └────────┬────────┘
│ │
▼ │
┌───────────────┐ │
│ table: nat │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │
│ chain: OUTPUT │ ┌─────▶ outing decision ◀──────────────┘
└───────┬───────┘ │ ┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅
│ │ │
▼ │ ▼
┌───────────────┐ │ ┌────────────────────┐
│ table: filter │ │ │ chain: POSTROUTING │
│ chain: OUTPUT ├────┘ └──────────┬─────────┘
└───────────────┘ │
▼
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
┃ Network ┃
┗━━━━━━━━━━━━━━━┛
常见选项
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。