Techyou labs
真正的爱应该超越生命的长度,心灵的宽度,灵魂的深度
常用标签
您正在查看:标签 iptables 下的文章
September 30, 2011

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

January 8, 2010

iptables命令语法

  • 语法构成
    iptables [-I 链名] [-t 表名] [-p 条件] [-j 控制类型]
  • 参数详解
    -A:在链的末尾追加一条规则
    -I:在链的开头(或指定序号)插入一条规则
    -L:列出所有的规则条目
    -n:以数字形式显示规则信息(协议解释成数字)
    -v:以更详细的方式显示规则信息
    --line-numbers:查看规则时,显示规则的序号
    -D:删除链内指定序号(或内容)的一条规则
    -F:清空所有的规则
    -P:为指定的链设置默认规则(一条没有匹配上,按照默认规则走)
  • 注意事项
    不指定表名时,默认指filter表
    不指定链名时,默认指定表内的所有链
    除非设置链的默认策略,否则必须指定匹配条件
    选项、链名、控制类型使用大写字母,其余均为小写
  • 数据包的常见控制类型
    ACCEPT:允许通过
    DROP:直接丢弃,不给出任何回应
    REJECT:拒绝通过,必要时会给出提示
    LOG:记录日志信息,然后传给下一跳规则继续匹配

规则匹配

  • 通用匹配(可直接使用,不依赖于其他条件或扩展)

    常见的通用匹配条件
    协议匹配:-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 连接状态

开启HTTP端口: http=80 https=443 tomcat=8080


/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

开启Email端口: stmp pop sendmail 等


/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
February 11, 2009

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)
tables_traverse.jpg
iptables-guides.png

dnat/snat

NAT.jpg
SNAT.jpg
SNAT_1.jpg


iptables -t nat -A POSTROUTING -d 192.168.0.101 -j SNAT --to 192.168.0.1

DNAT.jpg
DNAT_1.jpg


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