linux防火墙之iptables和NAT

来源:互联网 发布:link域名的好处 编辑:程序博客网 时间:2024/05/17 23:14

iptables

1.1.定义:

        防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。

目前市面上比较常见的有3、4层的防火墙7层的防火墙。三层的防火墙会在这层对源地址和目标地址进行检测。但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。
防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。

功能:
1.filter 定义允许或者不允许的
             对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
2.nat 定义地址转换的
            对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
3.mangle功能:修改报文原数据
   
而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

规则链:
1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则 (记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING——对数据包作路由选择后应用此链中的规则 (所有的数据包出来的时侯都先由这个链处理)




1.2.基本操作:

iptables
    -t                          指定表名称
    -n                         不作解析
    -L                         列出指定表中的策略
    -A                        增加策略
    -p                         网络协议
    --dport                  端口
    -s                         数据来源
    -j                          动作
    ACCEPT             允许
    REJECT             拒绝
    DROP                 丢弃
    -N                       增加链
    -E                       修改链名称
    -X                        删除链
    -D                       删除指定策略
    -I                         插入
    -R                       修改策略
    -P                       修改默认策略
iptables  -t filter -nL                                                查看filter表中的策略
iptable  -F                                                               刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter

service iptables save                                              保存当前策略

iptables -A INPUT -i lo -j ACCEPT                                    允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT                允许访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT              允许250主机访问本机所有端口
iptables -A INPUT -j REJECT                                             拒绝所有主机的数据来源

iptables -N redhat                                           增加链redhat
iptables -E redhat westos                               改变链名称

iptables -X westos                                          删除westos链

iptable -D INPUT 2                                                      删除INPUT链中的第二条策略


iptables -I INPUT  -p tcp --dport 80  -j REJECT          插入策略到INPUT中的第一条

iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT      修改第一条策略


iptable -P INPUT DROP                                             把INPUT表中的默认策略改为drop


1.3 数据包状态:
iptables -A INPUT -m state --state RELATED,ESTABLISHED  -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT

 
2.1 iptables的NAT地址转换

2.2  基础知识:

第一种情况:入站数据流向

       从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。

第二冲情况:转发数据流向

       来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。

第三种情况:出站数据流向
       防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

这里写图片描述



2.3配置:

sysctl -a | grep forward        sysctl内核文件的控制命令
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf

sysctl -p                                加载配置使其生效

[toot@westos ~]# sysctl -a | grep forward


iptables -t nat -A PREROUTING  -i eth1 -j DNAT --to-dest 172.25.21.21          外网出去对原地址伪装

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.121


测试:主机ip地址172.25.254.1 测试虚拟机IP172.25.21.121 有NAT的虚拟机的IP 是172.25.254.121和172.25.21.21


原创粉丝点击