防火墙设置

IPtables

都是Linux的防火墙:
netfilter:
    来至于linux内核中的包过滤功能体系,称为linux防火墙的“内核态”
iptables:
    位于/sbin/iptables,用于管理防火墙规则的工具,称为linux防火墙的“用户态”
工作层次:
    主要网络层,针对IP数据包(对包内的IP地址、端口等信息的处理)
功能:
    表-四张表-四个功能
        raw:流量跟踪
        mangle:流量标记、流量整形
        nat:网络地址装换
        filter:包过滤功能
    链-chain-五个链-记录防护规则
        INPUT:入站
        OUTPUT:出站(一般不配规则)
        FORWARD:转发
        PEREROUTIONG:路有前
        POSTROUTING:路由后
    结构:每一张表下有相应的链
    规则:
        按照下面顺序,匹配即执行;匹配不到则默认
        表:raw-mangle-nat-filter
        入站:PREROUTING-INPUT
        出站:OUTPUT-POSTROUTING
        转发:PREROUTING-FORWARD-POSTROUTING
命令:
    iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
        不指定表:默认filter
        不指定链:默认所有链
        除非设置链的默认策略,否则必须制定匹配条件
        选项、链名、控制类型用大写,奇遇用小写
    控制类型:
        ACCEPT: 允许
        DROP:   丢弃
        REJECT: 拒绝
        LOG:    记录日志,然后匹配下一条规则
    选项字:
        -A:    在链尾追加规则
        -I:    在链首插入规则
        -L:    列出所有的规则条目
        -n:    数字形式显示ip地址、端口等信息
        -v:     详细显示规则信息
        --line-numbers: 显示规则序列号
        -D:     删除链内指定序号的规则
        -F:     清空所有规则
        -P:     为指定的链设置默认规则
条件匹配分类:
    通用匹配:直接使用,不依赖其他条件或者扩展(协议、IP地址、网络接口等)
    隐含匹配:依赖于特定的协议(端口、TCP标记、ICMP类型等)
    显示匹配:添加"-m 扩展模块"的形式明确指出(多端口、MAC地址、IP范围、数据包状态等)
通用匹配条件:
    -p 协议名       --协议配置
    -s 原地址       --地址匹配
    -d 目的地址
    -i 入站网卡     --接口匹配
    -o 出站网卡
隐含匹配条件:
    --sport 源端口      --端口匹配
    --dport 目的端口
    --tcp-flags 检查范围 被设置的标记       --TCP标记匹配
    --icmp-type CIMP类型(0:回显应答,8:请求)        --ICMP类型匹配
显示匹配条件:
    -m multiport --sport 源端口列表     --多端口匹配
    -m multiport --dport 目的端口列表
    -m iprange --src-range IP范围       --IP地址范围匹配
    -m mac --mac-source MAC范围     --MAC范围匹配
    -m state --state 连接状态       --状态匹配
查看运行状态
    watch -n1[这是数字一] iptables -nvL --line-numbers  --1s拜年话一次的方式查看
添加ftp跟踪模块:
    /etc/sysconfig/iptables-config
    第一个空项'nf_conntrack_ftp'

规则备份及还原

备份:
    iptables-save > /备份路径/备份文件名
还原:
    iptables-restore < /路径/文件名
启动脚本:
    /etc/init.d/iptables
规则文件位置:
    /etc/sysconfig/iptables

SNAT策略

应用:局域网主机共享一个公网ip地址接入Internet
原理:源地址装换-修改数据包的源地址
Linux条件:
    局域网各个主机正确设置IP地址、子网掩码、默认网关
    Linux网关支持IP路由转发
命令:
    iptables -t nat -A POSTROUTING -s 局域网段/24 -o 外网卡 -j SNAT --to-source 公网ip
MASQUERADE-地址伪装:
    用于:外网IP地址非固定,对于ADSL拨号接口(ppp0/ppp1)
    命令:
    iptables -t nat -A POSTROUTING -s 局域网段/24 -o 外网卡 -j MASQUERADE --to-source 公网ip

DNAT策略

应用:在Internet发布位于企业局域网中的服务器
原理:目标地址转换-修改数据包中的目标地址
Linux条件:
    局域网的web服务器能够访问Internet
    网关的外网IP地址有正确的DNS解析记录
    Linux网关支持IP路由转发
命令:
    iptables -t nat -A PREROUTING -i eth0 -d 外网接口IP -p tcp --dport 80 -j DANT --to-destination 内网主机IP
    在发布时修改目标端口:
    iptables -t nat -A PREROUTING -i eth0 -d 公网IP -p tcp --dport 发布端口 -j DNAT --to-destination 内网主机IP:实际端口