iptables

将规则定义为一个列表,实现绝对详细的访问控制功能。
iptables/netfilter本身是工作在用户空间的软件,现在它是一个服务,服务启动则规则生效,服务停止则规则撤销。

netfilter:5个检查点
1.内核空间中,从一个本地接口进,到另一个本地接口。
2.数据包从内核流到用户空间
3.数据包从用户空间流出
4.进入离开本机外网借口
5.进入离开本机的内网接口
NAT和DNAT的目标地址是在路由之前转换,所以必须在外网而后内网接口处设备检查点。

这5个位置也称为5个钩子函数(hook function),也叫5个规则链。
1.PREROUTING 路由决策前
2.INPUT 进入用户空间
3.FORWARD 路由决策之后
4.OUTPUT 出用户空间
5.POSTROUTING 即将发出本机
任何一个数据包,只要经过本机,必经其中一个链。
可以自定义链,但必须包含在默认链中,调用自定义链进行匹配,再回到默认链。

防火墙策略:通则全通,堵则选择性堵。
定义数据包允不允许通过:filter功能
定义地址转换:nat功能
修改报文数据:mangle功能
raw功能
“表”:定义、区分各种不同的工作功能和处理方式。

[tips]
filter功能一般做在:INPUT/FORWARD/OUTPUT
nat功能一般做在:PREROUTING/POSTROUTING/OUTPUT
mangle功能一般做在:所有链
raw功能一般在PREROUTING/OUTPUT
注意:规则的顺序和关键,【规则越严格,位置越靠前】;检查规则时,从上依次往下。

规则写法:
iptables -table COMMAND CHAIN CRITERIA -j ACTION
-table : filter(默认)/nat/mangle/raw
COMMAND : 对链或者链中的规则操作管理
CHAIN : 指定接下来的规则在哪个链上生效
CRITERIA : 指定匹配标准
-j ACTION : 指定如何进行处理
例如:
不允许172.16.0.0/24进行访问:
iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp –dport 53 -j DROP
更彻底的限制:
iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp –dport 53 -j REJECT
查看定义规则的详细信息:
iptables -L -n -v 或 iptables -Lnv
禁ping:
(iptables -P INPUT|OUTPUT -j DROP)
iptables -t filter -A INPUT -p icmp-type 0 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp-type 8 -j ACCEPT
(默认为ACCEPT情况)
iptables -t filter -A INPUT -p icmp-type 8 -j DROP
iptables -t filter -A OUTPUT -p icmp-type 0 -j DROP
对于127.0.0.1比较特殊:
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
CAMMAND详解:
[链管理命令]
-P 设置默认策略,一般只有两种:iptables -P INPUT (DROP|ACCEPT) 默认要么接受,要么拒绝
例如:iptables -P INPUT DROP 拒绝了所有外部链接
-F:FLASH,清空规则链(注意每个链的权限)
iptables -t nat -F PREROUTING 清空PREROUTING链的所有nat规则
iptables -t nat -F 清空nat表的所有链
-N:NEW,用户新建一个链
iptables -N inbound_tcp_web 表示附在tcp表上用于检查web链接的链
-X:删除用户自定义的空链
与-N类似,但是必须把链清空
-E:给自定义链重命名
iptables -E oldname newname
-Z:清空链及计数器(两个计数器,匹配到多少数据包;多少字节)
iptables -Z

[规则管理命令]
-A:在当前链末尾新增一个规则
-I CHAIN num:把当前规则插入为第几条
    -I CHAIN 3:把当前规则插入为第三条
-R CHAIN num:替换、修改第几条规则
-D CHAIN num:删除第几条规则

[查看管理命令“-L”]
附加子命令:
    -n:点分十进制显示ip,不加此选项为反向解析主机名
    -v:显示详细信息
    -vv
    -vvv:越多越详细
    -x:计数器显示精确值,不做单位换算
    --line-numbers:显示规则行号
    -t nat:显示有关nat的所有关卡信息

CRITERIA详解:
[通用匹配:源地址目标地址]
-s:匹配源地址,必须是IP地址:
IP|IP/MASK|0.0.0.0/0.0.0.0|
可以取反,加“!”表示出了这个地址
-d:匹配目标地址
-p:匹配协议,通用的为TCP|UDP|ICMP
-i eht0:从这块网卡流入的数据,一般用在INPUT和OUTPUT
-o eth0;从这块网卡流出的数据,一般用在OUTPUT和POSTROUTING

[扩展匹配]
隐含扩展:对协议的扩展
    -p tcp:tcp协议扩展,一般有三种扩展
        --dport XX-XX:指定目的端口,只能是单个或连续端口
            例如:--dport 21或者--dport 21-23:此时端口为21,22,23
        --sport:指定源端口
        --tcp-flages:tcp的标志位(SYN/ACK/FIN/PSH/RST/URG)
            一般跟两个参数:
            1.检查的标志位
            2.必须为1的标志位
            例如:--tcpflages syn,ack,fin,rst syn 等价于 --syn
            表示检查四个字段,必须为1的是syn,其余都为0。效果是检查tcp三次握手的第一个包。对于这样的包,还有一个表示方法:--syn
    -p udp:udp的扩展
        --dport
        --sport
    -p icmp:icpm的扩展
        --icmp-type:
            echo-request,用8来表示,表示请求回显
            echo-reply,用0表示,响应数据包

显示扩展:(-m)
    扩展各种模块
    -m multiport:启用多端口扩展(最多15个)
        --dports 21,23,80
    -m iprange 
        --src-range ip1-ip2:多源IP地址
        --dst-range ip1-ip2:多目标IP地址
    -m limit:速率限制
        --limit 3/sec
        --lmiit-burst 30
    -m connlimit:限制连接数
        [!] --connlimit-above num:超过num才满足条件
    -m state
        --state [NEW/ESTABLISHED/RELATED/INVALID]
            NEW:tcp第一次握手
            ESTABLISHED:tcp第二、三次握手
            RELATED:一去一回的端口的服务如FTP
            INVALID:字段不常见的会话,如:SYN=1 ACK=1 RST=1
        设置状态监测可以有效防止反弹式木马。
    -m string:字符串过滤
        --string "pattern" --algo [bm]|kmp 

-j ACTION详解
常用的ACTION:
DROP:悄悄丢弃。一般用来隐藏我们的身份和链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向自定义链
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:源地址伪装
REDIRECT:重定向,主要用于端口重定向
MARK:打防火墙标记
RETURN:返回,自定义链执行完之后返回原链
LOG:记录日志

SNAT:源地址转换
把192.168.1.0网段所有IP地址在经过的时候转换为公网IP地址100.0.0.1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT –to-source 100.0.0.1
如果外网地址不固定,例如普通宽带用户。则需要MASQUERADE来自动获取有效公网地址
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

DNAT:目标地址转换
让外面的ip通过我们对外ip访问内部不同服务器,我们的服务放在不同的服务器上。
因为要转换为内部的IP地址,所以放在PREROUTING链
iptables -t nat -A PREROUTING -d 192.168.1.0/24 -p tcp –dport 80 -j DNAT –to-destination 172.16.100.2

保存规则
service iptables [status|start|stop|save]
/etc/sysconfig/iptables 实际保存到这个脚本

iptables-save > /etc/sysconfig/iptables.3 保存到自定义脚本
    iptables-restore < /etc/sysconfig/iptables.3  从自定义脚本加载
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值