上一篇博文说明了iptable的一些常识
这里简明再复述一下
linux的防火墙包含了2部分,分别是存在于内核空间的netfilte和用户空间的iptables
而iptable可以定义4类规则
filter:防火墙核心所在
nat:地址转换
mangle:实现数据包修改;如TTL
raw:不常用,这里不做多解释
优先级次序:raw-mangle-nat-filter
在iptable中定义的规则要输送到内核中的netfilte才能生效
定义防火墙规则一般有2种模式。一种是比较严格的,只放行允许通过的数据包,其余数据包全部阻止。还有一种比较宽松的,只阻止不允许通过的数据包。在企业应用中,一般使用第一种,根据业务需要放行对应的数据包。
Iptable定义规则的一般机制(更加具体的语法参照man文档)
iptable [-t table] sub_command CHAIN [num] [cretiria] [-j ACCTION]
-t:
默认没有指定是filter,也可以指定mangle,nat,raw
sub_command:
rule:
-A(append):追加
-I(insert):插入,如 -I INPUT 3
-D(delete):删除,指定标准或者num 如 -D OUTPUT 8
-R(replace):替换 -R FORWARD 6
chain:
-F(flush):清空链
-N(new):新增一条链
-X:删除用户自定义的空链
-Z:清空计数器
关于计数器:每条规则都有2条计数器
1:记录被本条规则匹配到的包个数
2:记录匹配到本条规则到的包的体积之和
-E:重命名链
policy:
-P chain {ACCEPT|DROP}
exsample:
将INPUT链的默认策略修改为DROP
iptables -t filter -P INTPUT DROP
view:
-L 显示定义的规则
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Network/Firewall/
-n:使用这个选项,就不会去反向解析IP地址的主机名,加快察看速度
-v:详细信息,可以多加几个v,越多越详细
-x:精确显示数据包体积
--line-numbers
匹配条件:
通用匹配:
-s IP/NETWORK:源地址
-d IP/NETWORK:目标地址
-p {tcp|udp|icmp}:指定协议
-i input interface:指定数据包进入的接口
-o output interface:指定数据包出去的接口
example:
禁止192.168.1.0/24网段ping192.168.2.1主机
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp -j DROP
扩展匹配
隐式扩展:指对-p选项中指定的协议进行的扩展
-p {tcp|udp|icmp}
--sport portnum 源端口
--dport portnum 目标端口
--tcpflags 针对tcp的标志位
--icmp-type icmp的包类型。
扩展上面的exapmle
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp –icmp-type 8 -j DROP
这里明确拒绝了192.168.1.0/24网段的icmp-request包,8是icmp-request包,0是icmp-echo包
example:
拒绝192.168.2.1主机访问本机的web服务
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 80 -j DROP
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 443 -j DROP
规则的写法有多种,也可以写在OUTPUT链上,不过效率没有INPUT上高,而如果写在OUTPUT上 ,应该这样写
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 80 -j DROP
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 443 -j DROP
具体写法要按照需求,分析数据包的走向而定
显式扩展:使用-m指定要加载的扩展(下一章具体描述)
-j TARGET:跳转到到的链常见的有以下3种
ACCEPT
DROP
REJECT
基本的用法先到这里,下一篇将具体说说显式扩展