一、简介
1、这里使用的工具是iptables
iptables与ipvsadm一样,是一个配置工具,本身不是一项服务,工作在用户层,iptables编辑的规则可以被netfilter(网络过滤器)读取使用
2、防火墙的策略分为:通、堵
通:默认全部关闭,再为需要的服务开通允许(先关后开)
堵:默认全部开启,再根据需求关闭(先开后关)
3、iptables基础概念:三表五链
表:filter,nat,mangle,(raw)
链:prerouting,input,forward,output,postrouting
参考此图:
二、语法简介
1、iptables(选项)(参数)
2、选项内容
1、表操作
-t<表>:指定要操纵的表;
2、链操作
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
3、链中规则操作
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
4、匹配操作
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
语法如下
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
表名包括:
规则链名包括:
动作包括:
三、规则写法详解:
1、大纲
详解COMMAND:(注意全都是大写)
1.链管理命令(这都是立即生效的)(链的整体管理)
2.规则管理命令(链内规则管理)
3.查看管理命令 “-L”
详解匹配标准(参数越多,越精细,但是要对服务的情况有详细的了解,出入端口,ip,协议)
1.通用匹配:源地址目标地址的匹配
2.扩展匹配
-p tcp :TCP协议的扩展。一般有三种扩展
--dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口或者连续的端口,比如:--dport 21 或者 --dport 21-23 (此时表示21,22,23)
--sport:指定源端口
--tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
1.检查的标志位
2.必须为1的标志位
--tcpflags syn,ack,fin,rst syn = --syn
表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做--syn
-p udp:UDP协议的扩展
--dport
--sport
-p icmp:icmp数据报文的扩展
--icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
2.2显式扩展(-m)
扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80
详解-j ACTION
DROP:悄悄丢弃,一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回
在自定义链执行完毕后使用返回,来返回原规则链。