Powered by Typecho)))
Optimized by EAimTY
1.安装
sudo apt-get install ufw
2.启用
sudo ufw enable
sudo ufw default deny
运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。
3.开启/禁用
sudo ufw allow|deny [service]
打开或关闭某个端口,例如:
sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口
sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口
sudo ufw allow 53 允许外部访问53端口(tcp/udp)
sudo ufw allow from 192.168.1.100 允许此IP访问所有的本机端口
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
4.查看防火墙状态
sudo ufw status
通用匹配(可直接使用,不依赖于其他条件或扩展)
常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
隐含匹配(要求以特定的协议匹配作为前提)
常见的通用匹配条件
端口匹配:--sport源端口、--dport目的端口
TCP标记匹配:--tcp-flags 检查范围 被设置的标记
ICMP类型匹配:--icmp-type ICMP类型
在iptables中 开启DNS服务端口
显式匹配(要求以"-m扩展模块”的形式明确指出类型)
常见的通用匹配条件
多端口匹配:-m multiport --sports 源端口列表;-m multiport --dports 目的端口列表
IP范围匹配:-m iprange-src-range IP范围
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
/sbin/iptables -A INPUT -p tcp –source-port 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 8080 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 143 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –source-port 993 -j ACCEPT
iptables 结构:
链的作用:容纳各种防火墙规则,相当于容器
链的分类依据:处理数据包的不同时机
系统默认自带的5种规则链:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING:在进行路由选择后处理数据包(出站过滤)
PREROUTING:在进行路由选择前处理数据包(入站过滤)
注:POSTROUTING、PREROUTING在做NAT时所使用
表的划分依据:和链相似,按功能进行划分
默认包括4个规则表:
raw表:包含了PREROUTING
和OUTPUT
在这里进行跟踪。
mangle表:包含了:PREROUTING
,INPUT
,FORWARD
,OUTPUT
,POSTROUTING
。
在这里做标记。
nat表:包含了:PREROUTING
,INPUT
,OUTPUT
,POSTROUTING
.
在这里进行ip或端口修改。
filter表:包含了INPUT
、FORWARD
、OUTPUT
.
在这里进行过滤数据。
(默认使用filter。raw:优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能)
4大包状态:INVALID,ESTABLISHED,NEW和RELATED
处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,还多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等
iptables和策略路由类似,先链后表,在链路上分别顺序查表做匹配.
规则表之间的顺序:raw→mangle→nat→filter,即先做状态跟踪→在做标记→在做修改源目IP或端口→在做是否过滤
规则链之间的顺序:
入站:PREROUTING→INPUT 路由前发现是自己的,直接进站
出站:OUTPUT→POSTROUTING
转发:PREOUTING→FORWARD→POSTROUTING
注意:PREROUTING和POSTROUTING是最外围,规则链是靠时机分的,分为了入站,出站,转发三个时机
规则链内的匹配顺序:
按顺序依次检查,匹配即停止(LOG策略外)
若找不到相匹配规则,按该链的默认策略处理
以本机为目标地址的包:
入站:数据包发来,路由前,先做跟踪,再做标记,修改,查看路由,如果是发往本机的直接往上走,进站前标记,然后出站过滤
出站:出站和路由后,指的是最上面的路由选择,本机选择之后先经过跟踪→标记→修改→是否过滤,出站之后是mangle表的路由后→nat表的路由.
PREROUTING(raw,mangle,nat,filter)
POSTROUTING(raw,mangle,nat,filer)
路由转发包:
转发:数据进来以后,经过路由前raw、mangle、nat,路由前完成之后进行选择,发现此数据是需要发到别的地方,非本地,通过forward,经过mangle的forward,filter的forward,还要经过路由后标记、修改IP及端口,结束
PREROUTING(raw,mangle,nat,filter)
FORWARD(mangle,filter)
POSTROUTING(raw,mangle,nat,filer)
iptables -t nat -A POSTROUTING -d 192.168.0.101 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 202.202.202.1 -j DNAT --to-destination 192.168.0.101
参考
https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html