澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:防火墙设置2

2019-09-16 作者:澳门新萄京官方网站   |   浏览(106)

 1、SNAT:源地址转换

netfileter:防火墙内核态
ip tables:防火墙用户态(管理防火墙规则)

iptables,iptableslinux

规则:网络管理员预定义的数据包过滤条件

链:数据包传播路径,每条链中可以有多个规则,从第一条规则检查起

表:内置第三张表

   filter:主要用于包过滤,只允许对数据报进行接收和丢弃,无法对数据包进行更改,

  nat:主要用于网络地址转换,

Mangle:对指定包进行修改

澳门新萄京官方网站 1

iptables对数据包的处理过程

澳门新萄京官方网站 2

Iptables 指令语法:iptables 【-t tables】  command  【match】【-j target/jump】

 

【-t tables】

指定规则表,默认filter

 

Command  常用命令列表:

 

-A :新增一条规则到某个规则链,默认添加到链尾。

澳门新萄京官方网站:防火墙设置2。-D:删除一条规则,可输入完整命令,也可输入规则编号

-R:取代现行规则,规则取代后不会改变顺序

-I:插入一条规则,原本位置上的规则向后移动一个位置

-L:列出规则连中所有规则

   iptables -t nat -L  列出nat 表中所有规则

-F:删除规则

  iptables -F input 删除filter中input链中所有规则

 

【match】

 常用封包匹配参数

-P:匹配协议类型,也可加!反向匹配,使用all可以匹配所有

-S:用来匹配封包来源ip,-s 192.168.1.0/24 可用来匹配一个段

-D:匹配封包的目的ip,同上。

-O:匹配数据包的出网卡。

--sport:匹配数据包的源端口,匹配一个范围可以设置成20:80

--dport:同上。

--tcp-flags:匹配tcp中的标志位

 

【-j target/jump】

 常用的处理动作

   -j:用来指定处理动作

     ACCEPT :将数据包放行

     REJECT:拦阻数据包

    DROP:丢弃数据包不予处理

澳门新萄京官方网站 3

  实例:lan:1.1.1.1 wan:192.168.2.159
              内网主机:1.1.1.2
      内网中的1.1.1.2主机的22端口映射到公网地址192.168.2.159的88端口
     1,在nat表中的PREROUTING中添加一条
    iptables -t nat -A PREROUTING -d 192.168.2.159 -p tcp --dport 88 -j DNAT --to 1.1.1.2:22
   若1.1.1.2主机的网关在做iptables的服务器上就可以了,如果不在
    2,需要在POSTROUTING的链中添加一条
  iptables -t nat -A POSTROUTING  -d 1.1.1.2 -p tcp --dport 22  -j SNAT --to 1.1.1.1

SNAT一般用于到外网,出去 

SNAT的目的是进行源地址转换,应用于POSTROUTING规则链.在路由决定之后应用.SNAT与出站接口相关,而不是入站接口

DNAT用于从外面进来的

 目的地址NAT有2种形式: DNAT和REDIRECT. REDIRECT是目的地址转换的特殊形式,将数据包重定向到NAT设备的输入或回环接口. 目的地址NAT应用于nat表的PREROUTING和OUTPUT规则链,在做出路由决定前对目的地址进行修改.在PREROUTING中,DNAT和REDIRECT规则与用来接受通过本地路由转发或送到主机的入站接口的数据包的入站接口有关.在OUTPUT中,DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.

 

SNAT eg:

iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.0.5

将内网10.1网段映射为192.168.0.5出去

也可以这样:

iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.0.5-192.168.0.245

将本地映射到一段IP地址上(可以做攻击用^^)

上述例子的同样功能:iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j NETMAP --to 192.168.0.0/24

 

DNAT eg:

iptables -t nat -A PREROUTING -d ROUTEIP -p tcp --dport 80 -j DNAT --to-destination WEBIP

ROUTEIP表示防火墙(路由器)的公网IP 

WEBIP 表示内网WEB服务器IP

这条规则表示当外网访问本地的HTTP80端口时,自动转到内网的WEB服务器上。等于是把web服务器做了个映射到公网上。

当仅仅需要从外网访问内网时,这样是足够了,

但是如果需要从内网机器,通过WEB服务器的外网IP访问WEB服务器的话,还需要加条SNAT规则:

 iptables -t nat -A POSTROUTING -p tcp -d WEBIP --dport 80 -j SNAT --to ROUTEIP

将访问WEB服务器的数据包的源IP地址强制改为网关IP。否则会出现无法访问的问题。

 简单分析下原因:

 假设内网   192.168.0.10->需要从外部IP访问WEB的主机         

                  192.168.0.254->WEB服务器内部IP地址          

                 192.168.0.1->网关 (外部IP为202.96.22.22)

 当192.168.0.10访问202.96.22.22的WEB服务时,

根据网关上的DNAT,数据包的目的IP由202.96.22.22被转为192.168.0.254。254收到数据包后,发现是10发送过来的,

那么他会直接回数据包给192.168.0.10,但是10收到包后发现包的来源不是自己想要的202.96.22.22,

那这个包就会被直接丢弃。

解决办法就是在254不要直接发包给10,而是返回给网关,让网关原路返回给10机器。这样,只要将发往254请求WEB服务的数据包的源IP都改为网关的IP,192.168.0.1,就可以解决这个问题。 即

iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.254 --dport 80 -j SNAT --to 192.168.0.1

 

一局域网192.168.1.0/24,

web服务器:192.168.1.10

ftp服务器:192.168.1.11

网关linux,

内网eth0,IP为192.168.1.1

外网eth1,IP为a.b.c.d

 

怎样作NAT能使内外网都能访问公司的服务器?

A:# web

# 用DNAT作端口映射

iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10

# 用SNAT作源地址转换(关键),以使回应包能正确返回

iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1

 

# 一些人经常忘了打开FORWARD链的相关端口,特此增加

澳门新萄京官方网站,iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT

澳门新萄京官方网站:防火墙设置2。iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT

 

# ftp

modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT

modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块

# 用DNAT作端口映射

iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.1.11

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT

# 用SNAT作源地址转换(关键),以使回应包能正确返回

iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.1.1

 

 

 

详细参考:

 

规则:网络管理员预定义的数据包过滤条件 链:数据包传播路径,每条链中可以有多个规则,从第一条规则检查起 表:...

规则:网络管理员预定义的数据包过滤条件

一.iptables 命令

实现内网访问外网,修改IP地址,使用POSTROUTING

iptables的表和链
表包括不同的链,链包括大量的规则
4个表:
raw,mangle,nat,filter
5种链(一般在nat表里用):
INPUT(入站数据),OUTPUT(出站数据),FORWARD(转发数据),
PREROUTING(路由选择前),POSTROUTING(路由选择后)

链:数据包传播路径,每条链中可以有多个规则,从第一条规则检查起

(1)iptables相关规则

任何不允许的访问,应该在请求到达时给予拒绝 规则在链接上的次序即为其检查时的生效次序 
基于上述,规则优化 
1 安全放行所有入站和出站的状态为ESTABLISHED状态连接
例:ipatbles -A INPUT -m state --state ESTABLISHED -j ACCEPT 
2 谨慎放行入站的新请求 
3 有特殊目的限制访问功能,要在放行规则之前加以拒绝 
4 同类规则(访问同一应用),匹配范围小的放在前面,用于特 殊处理 
5 不同类的规则(访问不同应用),匹配范围大的放在前面 
6 应该将那些可由一条规则能够描述的多个规则合并为一条 
7 设置默认策略,建议白名单(只放行特定连接)
1) iptables -P,不建议
2) 建议在规则的最后定义规则做为默认策略

命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.10/24  -j SNAT  --to-source  202.1.1.1

iptables基本用法:
iptables -t 表名 -选项 链名 条件匹配 -j 操作类型

表:内置第三张表

(2)规则有效期限:

使用iptables命令定义的规则,手动删除之前,其生效期限为 kernel存活期限 
保存规则: 保存规则至指定的文件

  • CentOS 6
    service iptables save 将规则覆盖保存至/etc/sysconfig/iptables文件中
    示例:
    iptables -A INPUT -s 1.1.1.1 -j REJECT
![](https://upload-images.jianshu.io/upload_images/6851471-ae57fd3adc6f10a6.png)

image.png



service iptables save ——自动保存到/etc/sysconfig/iptables



![](https://upload-images.jianshu.io/upload_images/6851471-446443a2e4728880.png)

image.png

iptables -F——清空规则
service iptables start——将规则恢复
iptables -vnL
如果在添加一个规则策略,但是不保存而去执行 service iptables stop后,再次重新启动后,新添加的规则不会添加到iptables表中

  • CentOS 7 可用下面方法保存规则
    iptables -S > /PATH/TO/SOME_RULES_FILE
    iptables-save > /PATH/TO/SOME_RULES_FILE
    例:设定一个规则
    iptables -A INPUT -s 192.168.136.134 -j REJECT
    iptables -vnL
![](https://upload-images.jianshu.io/upload_images/6851471-5ba30c959acecd8a.png)

image.png



ipatbles -S



![](https://upload-images.jianshu.io/upload_images/6851471-bc008b140c9369bc.png)

image.png


iptables-save  

![](https://upload-images.jianshu.io/upload_images/6851471-b0bce8686890b85a.png)

image.png

但是关机重启后或者是ipatbles -F清除策略后就会消失

![](https://upload-images.jianshu.io/upload_images/6851471-8b99d502826a1363.png)

image.png


如果想要永久保存,则需要iptables-save >
/app/iptables.rules1——存在一个文件中,那么即使以后通过ipatbles
-F命令清楚了规则  
只要通过iptables-restore < /app/iptables.rules1即可  

![](https://upload-images.jianshu.io/upload_images/6851471-7e684e907bf836e8.png)

image.png
  • 开机自动重载规则文件中的规则(在centos7中): 
    (1) 用脚本保存各iptables命令;
    让此脚本开机后自动运行 /etc/rc.d/rc.local文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE 
    (2) 用规则文件保存各规则,开机时自动载入此规则文件中的规则 /etc/rc.d/rc.local文件添加 iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE 
    (3)自定义Unit File,进行iptables-restore
    具体实现步骤:
    vim /etc/rc.d/rc.local
    设定一个规则:iptables -A INPUT -s 1.1.1.1 -j ACCEPT
    iptables-save > /app/iptables.rules1
    iptables-restore < /app/iptables.rules1
    最后给文件加上执行权限 chmod 755 /etc/rc.d/rc.local
    开机后会自动启动

2、MASQUERADE:地址伪装

常见选项:
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
-L:列出所有的规则条目
-n:以数字形式显示地址,端口等信息
--line-numbers:查看规则时,显示规则的序号
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
-P:为指定的链设置默认规则

   filter:主要用于包过滤,只允许对数据报进行接收和丢弃,无法对数据包进行更改,

二.网络防火墙应用

iptables/netfilter网络防火墙:
(1) 充当网关
(2) 使用filter表的FORWARD链
注意的问题:
(1) 请求-响应报文均会经由FORWARD链,要注意规则 的方向性
(2) 如果要启用conntrack机制,建议将双方向的状态为 ESTABLISHED的报文直接放行
实验:准备三台虚拟机,配置一个简单的网络环境,要求,内网可以访问外网,但是外网无法访问内网

  1. 首先设置网络网络环境
    a机器为内网(关掉a的外网),b为路由器,c为外网(关掉c的内网)
    配置a的网关指向b的Ip地址(内网地址),配置c的网关指向b的ip地址(外网地址)
![](https://upload-images.jianshu.io/upload_images/6851471-f57a06b05a4b2449.png)

image.png



![](https://upload-images.jianshu.io/upload_images/6851471-bb818b5c9489757f.png)

image.png



清空三台主机的防火墙以及selinux策略,开启b机器的路由功能 echo 1 &gt;
/proc/sys/net/ipv4/ip_forward  
2.分别先测试一下网络连通性ping命令测试。  
3.测试成功后,开始设置策略使内网能够连接外网但是,外网无法访问内网  
在b中,iptables -A FORWARD -s 192.168.136.0./24 -d 172.18.0.0/16 -p
icmp --icmp-type 8 -j ACCEPT:请求协议接受  
iptables -A FORWAWRD -s 172.18.0.0./16 -d 192.168.136.0/24 -p icmp
--icmp-type 0 -j ACCEPT:响应协议接受  
iptables -A FORWARD -j REJECT:其他的都拒绝  
这样就实现了内网可以访问外网但是外网无法访问内网的要求  
方法二:使用状态来实现  
iptables -A FORWARD -m state --state ESTABLISHED -j
ACCEPT:以前的连接都接受  
iptables -A FORWARD -s 192.168.136.0/24 -d 172.18.0.0/16 -p icmp
--icmp-type 8 -j ACCEPT:请求协议接受  
iptables -A FORWARD -j REJECT:其他的都拒绝  
方法三:  
iptables -A FORWARD -m state --state ESTABLISHED -j
ACCEPT:以前的连接都接受  
iptables -A FORWARD -s 192.168.136.0/24 -d 172.18.0.0/16 -p icmp -m
state --state NEW -j ACCEPT  
:新建立的协议接受  
iptables -A FORWARD -j REJECT:其他的都拒绝  
扩展延伸要求:内网可以访问外网的ssh和http协议,但是外网无法访问内网的ssh和httpd协议  
iptables -F FORWARD 清除之前的策略  
iptables -A FORWARD -s 192.168.136.0/24 -p tcp -m multiport --dports
22,80 -j ACCEPT  
iptables -A FORWARD -d192.168.136.0/24 -p tcp -m multiport --sports
22,80 -j ACCEPT  
iptables -A FORWARD -j REJECT  
加入ftp协议  
加载ftp协议模块  
modprobe nf_conntrack_ftp  
iptables -R FORWARD 1 -s 192.168.136.0/24 -p tcp -m multiport
--dports 21,22,80 -j ACCEPT  
iptables -R FORWARD 2 -d 192.168.136.0/24 -p tcp -m multiport
--sports 21,22,80 -j ACCEPT  
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT  
iptables -A FORWARD -j REJECT  
实验完成

适用于外网ip地址非固定的情况

条件匹配类型:
通用匹配:独立使用
-p:指定协议
-s:源地址
-d:目标地址
-i:入站网卡
-o:出站网卡
隐含匹配:依赖于某种通用匹配
--sport:源端口
--dport:目标端口
--icmp-type:
--tcp-flags:
扩展匹配:-m 模块名

  nat:主要用于网络地址转换,

三.NAT的应用

(一)NAT: network address translation
PREROUTING,INPUT,OUTPUT,POSTROUTING
请求报文:修改源/目标IP,由定义如何修改
响应报文:修改源/目标IP,根据跟踪机制自动实现 
(1)SNAT:source NAT POSTROUTING, INPUT 让本地网络中的主机通过某一特定地址访问外部网络,实 现地址伪装 请求报文:修改源IP 
1.SNAT应用:固定ip(在路由器上的设置)
iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -j SNAT --to-source 172.18.254.242
解释:指定用nat表来实现地址转换,实现局域网用户访问外网,规定源地址,固定具有nat服务的路由器的Ip地址 ,这样局域网内的用户通过将私有地址转换为路由的共有地址,去访问外网。这种做法既可以达到访问的目的也能够节省Ip,不用刻意给每个私有Ip用户都配置对应的公网ip,节约成本
2.MASQUERADE:动态IP,如拨号网络
--to-ports port[-port]
--random
iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -j SNAT MASQUERADE——一定要指定源地址,否则如果路由器上有多个网卡时,不知道要替代哪个网段去访问
(2)DNAT:destination NAT PREROUTING , OUTPUT
把本地网络中的主机上的某服务开放给外部网络访问(发 布服务和端口映射),但隐藏真实IP
请求报文:修改目标IP
应用:
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 22 -j DNAT --to--destination 192.168.136.134
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 80 -j DNAT --to-destination 192.168.136.134:8080:实现外网的80端口指向内网的8080端口
iptables -t nat -A PREROUTING -d 172.18.254.242 -p tcp --dport 80 -j DNAT --to-destination 192.168.136.134

澳门新萄京官方网站 4

image.png

(3)PNAT: port nat,端口和IP都进行修改
优点:用一个IP地址就可以实现多用户访问外部网络,一个ip对应不同的端口(在路由器上的设置)
(4)REDIRECT:
NAT表
可用于:PREROUTING OUTPUT 自定义链 通过改变目标IP和端口,将接受的包转发至不同地址 --to-ports port[-port]
iptables -t nat -A PREROUTING -d 192.168.136.134 -p tcp -m multiport --dports 8000,9527 -j REDIRECT --to-ports 80:实现端口的转发,无论外网的哪个端口进行访问,都转发到目标地址的的80端口

澳门新萄京官方网站 5

image.png

澳门新萄京官方网站 6

image.png

将SNAT规则改为MASQUERADE即可

扩展条件的方法
前提条件:有对应的防火墙模块支持
基本用法:
-m 扩展模块 --扩展条件 条件值
示例:-m mac --mac-source 00:0C:29:74:BE:21

Mangle:对指定包进行修改

命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.0/24  -j MASQUERADE

简化服务开启规则
一条规则开放多个端口
比如web,ftp,mail,ssh等
[root@hydra]# iptables -A INPUT -p tcp -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
根据ip范围封锁主机:
ssh登陆的ip范围控制
允许192.168.1.10-192.168.4.20登陆
静止从192.168.4.0/24网段其他主机登陆
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP

澳门新萄京官方网站 7

3、DNAT:目标地址转换

——————————————————————————————————————————————————————————
nat表典型应用
SNAT源地址转换(Source Network Address Translation)
修改数据包的源地址
仅用于nat表的POSTROUTING链

iptables对数据包的处理过程

实现发布公司内部服务器,修改目标地址,使用PREROUTING

DNAT目标地址转换(Destination Network Address Translation)
修改数据包目标地址(ip,端口)
仅用于nat表的PREROUTING,OUTPUT链

澳门新萄京官方网站 8

命令:iptables  -t nat  -A  PREROUTING -d  202.1.1.1  -p tcp  --dport  8080 -j  DNAT  -to 192.168.1.100:80

配置SNAT共享上网
配置的关键策略:
选择出去的包,针对来自局域网,
即将从外网接口发出去的包,将源ip地址修改为网关的公网ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1
(192.168.4.0/24局域网网段地址,eth1外网接口,174.16.16.1外网接口的ip地址)

Iptables 指令语法:iptables 【-t tables】  command  【match】【-j target/jump】

4、备份和还原规则:

地址伪装策略
共享动态公网ip地址实现上网:
主要针对外网接口ip地址不固定的情况,
将SNAT改为MASQUERADE即可
对于ADSL宽带拨号连接,网络接口可写为ppp
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE

 

备份:

——————————————————————————————————————————————————————
案例准备:
gw1:192.168.4.1 174.16.16.1
svr:192.168.4.2
pc174.16.16.120
在svr上准备dns服务,web服务,网页内容hydra 提供解析记录:www.Anonymous.cn ——》174.16.16.1
从pc上能够访问以下地址:

http://www.Anonymous.cn

【-t tables】

1)iptables-save  >  文件

[root@svr ~]# vim /var/named/Anonymous.cn.zone
@ NS svr.Anonymous.cn.
svr A 192.168.4.2
www A 174.16.16.1

指定规则表,默认filter

     导出到指定文件

[root@svr ~]# vim /etc/named.conf
zone "Anonymous.cn" IN {
type master;
file "Anonymous.cn.zone";
};
[root@svr ~]# vim /var/www/html/test.html
hydra!

 

2)service  iptables save

内网web主机能够访问internet,比如SNAT
linux网关服务器开启ip路由转发,将web域名解析为网关的外网ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1(nat地址转换)
[root@gw1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(开启路由转发)

Command  常用命令列表:

    导出到/etc/sysconfig/iptables

发布web,dns服务器
配置的关键策略:
在路由选择之前,针对从外网接口收到的
访问本机公网地址tcp 80端口的数据包
将其目标地址修改位于内网的web主机的ip地址
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.2(允许公网访问)
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p udp --dport 53 -j DNAT --to-destination 192.168.4.2(发布dns服务地址)

 

    重启自动加载

发布ssh服务器
执行ssh -p 2345 174.16.16.1时,实际登陆192.168.4.2
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination 192.168.4.2:22
ps:sshd访问响应慢的问题,sshd会尝试解析客户机的fqdn,设置了一个不可用的dsn
ssh会gss验证方式
修改客户端的/etc/ssh/ssh_config文件,禁用gss认证
GSSAPIAuthentication no(改为no)

-A :新增一条规则到某个规则链,默认添加到链尾。

还原:

发布ftp服务器
注意事项:加载模块nf_nat_ftp,nf_conntrack_ftp
[root@gw1 ~]# modprobe -a nf_nat_ftp nf_conntrack_ftp
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination 192.168.4.2

-D:删除一条规则,可输入完整命令,也可输入规则编号

1)iptables-restore  <  文件名

iptables导出/导入规则
使用iptables-save导出
[root@gw1~]# ipables-save > /root/myiptables.txt(把防火墙规则导入到自定义的文件夹)
使用iptables-restore导入
[root@gw1~]# iptables-restore < /root/myiptables.txt
开机后自动加载亿保存的规则
[root@gw1~]# iptables-save > /etc/sysconfig/iptables
[root@gw1~]# chkconfig iptables on

-R:取代现行规则,规则取代后不会改变顺序

2)service  iptables restart

————————————————————————————————————————————————————————————————————

-I:插入一条规则,原本位置上的规则向后移动一个位置

    从默认文件/etc/sysconfig/iptables还原

防火墙脚本
shell脚本的编写:
vim建立代码文件
使用变量
可执行语句的编写【免交互】
添加x权限

-L:列出规则连中所有规则

5、iptables脚本编写

针对linux网关编写脚本,提供SNAT共享上网策略
提供DNAT发布web,ftp服务的策略,编写网络型,主机型防护规则。

   iptables -t nat -L  列出nat 表中所有规则

1)定义变量

批量设置防火墙规则
编写脚本文件——》开机时调用/etc/rc.local
防火墙规则的脚本化:
定义基本变量
必要时,内核模块和运行参数调整
防火墙策略设计:
各链的默认规则
按表,链组织的具体规则
运行环境处理
变量及模块整理,
方便脚本的维护,重用,移植
必要的功能模块预备

-F:删除规则

2)加载必要的模块

!/bin/bash

INET_IF=eth1
INET_IP=174.16.16.1
LAN_NET=192.168.4.0/24
LAN_WWW_IP=192.168.4.2
IPT=/sbin/iptables
... ...
/sbin/modprobe -a nf_nat_ftp nf_conntrack_ftp
... ...

主机型防火墙脚本
以filer表的INPUT链为主OUTPUT链次之
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
... ...
$IPT -P INPUT -p tcp --dport 8 -j ACCEPT
$IPT -P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
... ...

网络型防火墙脚本
以filter表的FORWRD链为主,网关上会用到nat表
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -F input 删除filter中input链中所有规则

modprobe   ip_nat_ftp     ftp地址转换模块

 

modprobe   ip_conntrack_ftp     ftp连接状态跟踪

【match】

lsmod        查看已加载的模块

 常用封包匹配参数

3)调整内核参数:

-P:匹配协议类型,也可加!反向匹配,使用all可以匹配所有

启用内核转发功能:有三种方式(详见第十章笔记的第8点)

-S:用来匹配封包来源ip,-s 192.168.1.0/24 可用来匹配一个段

4)编写防火墙的规则

-D:匹配封包的目的ip,同上。

6、防火墙的类型:

-O:匹配数据包的出网卡。

主机型防火墙:针对本机进行保护,使用filter表中的INPUT、OUTPUT链

--sport:匹配数据包的源端口,匹配一个范围可以设置成20:80

网络型防火墙:对内、外网转发进行保护,使用filter表中FORWARD链

--dport:同上。

 

--tcp-flags:匹配tcp中的标志位

Iptables防火墙(SNAT和DNAT)应用示例

实验拓扑图:

澳门新萄京官方网站 9

实验要求:

1、  如图所示,将网络连通,注意在外部服务器上不用配置默认网关。

澳门新萄京官方网站 10

澳门新萄京官方网站 11

澳门新萄京官方网站 12

2、分别在内部和外部服务器上搭建web服务,修改网页,如

内部web服务器的网页内容:

echo   “192.168.1.10”  >  /var/www/html/index.html 

在本机访问网页,测试能否成功访问。

步骤:

在网站服务器启动httpd服务

Service  httpd  start

在访问主页写入内容

echo  192.168.1.10  >  /var/www/html/index.html

在本机测试如下图:

澳门新萄京官方网站 13

外网主机同上,测试结果如下图:

澳门新萄京官方网站 14

3、分别启动网站服务器和网关服务器的SSh,并把网关ssh服务端口改为2345。

步骤:

启动sshd服务:  service sshd  restart

进入网关服务器的ssh主配置文件vim /etc/ssh/sshd_confing

澳门新萄京官方网站 15

4、清空三台服务器的防火墙默认配置:service  iptables    stop

5、  SNAT(源地址转换):要求内部主机192.168.1.10能访问外部服务器的网站。

验证:在外部服务器通过查看web的访问日志。

步骤:

SNAT源地址转换命令如下:

澳门新萄京官方网站 16

到网站服务器访问外网

澳门新萄京官方网站 17

查看外网的Web访问日志,是否是200.0.0.1访问

澳门新萄京官方网站 18

6、 DNAT(目标地址转换):

1)外部主机通过

在网关服务器上配置DANT

澳门新萄京官方网站 19

验证可以访问

澳门新萄京官方网站 20

2)外部主机使用ssh  –p 2345  200.0.0.1 能够远程管理网关服务器。

澳门新萄京官方网站 21

3)外部主机使用ssh  -p 2222  200.0.0.1 能够远程管理内部192.168.1.10服务器。

在网关服务器配置DNAT

澳门新萄京官方网站 22

到外网验证可以登录远程登录

澳门新萄京官方网站 23

7、在网关服务器上对防火墙进行保存和备份。

保存防火墙规则:

澳门新萄京官方网站 24

备份防火墙规则:iptables -save

澳门新萄京官方网站 25

8、在网关服务器上写一个防火墙的脚本。实现上面的功能。

   脚本提示:路由转发,清空所有防火墙规则,SNAT,DNAT。

   设置防火墙开机自动关闭,设置脚本开启自动执行。

脚本如下:

澳门新萄京官方网站 26

设置脚本开机自启动只需将脚本路径写入/etc/rc.local

澳门新萄京官方网站 27

文章参考微信公众号:L宝宝聊IT

 

【-j target/jump】

 常用的处理动作

   -j:用来指定处理动作

     ACCEPT :将数据包放行

     REJECT:拦阻数据包

    DROP:丢弃数据包不予处理

澳门新萄京官方网站 28

  实例:lan:1.1.1.1 wan:192.168.2.159
              内网主机:1.1.1.2
      内网中的1.1.1.2主机的22端口映射到公网地址192.168.2.159的88端口
     1,在nat表中的PREROUTING中添加一条
    iptables -t nat -A PREROUTING -d 192.168.2.159 -p tcp --dport 88 -j DNAT --to 1.1.1.2:22
   若1.1.1.2主机的网关在做iptables的服务器上就可以了,如果不在
    2,需要在POSTROUTING的链中添加一条
  iptables -t nat -A POSTROUTING  -d 1.1.1.2 -p tcp --dport 22  -j SNAT --to 1.1.1.1

SNAT一般用于到外网,出去 

SNAT的目的是进行源地址转换,应用于POSTROUTING规则链.在路由决定之后应用.SNAT与出站接口相关,而不是入站接口

DNAT用于从外面进来的

 目的地址NAT有2种形式: DNAT和REDIRECT. REDIRECT是目的地址转换的特殊形式,将数据包重定向到NAT设备的输入或回环接口. 目的地址NAT应用于nat表的PREROUTING和OUTPUT规则链,在做出路由决定前对目的地址进行修改.在PREROUTING中,DNAT和REDIRECT规则与用来接受通过本地路由转发或送到主机的入站接口的数据包的入站接口有关.在OUTPUT中,DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.

 

SNAT eg:

iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.0.5

将内网10.1网段映射为192.168.0.5出去

也可以这样:

iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.0.5-192.168.0.245

将本地映射到一段IP地址上(可以做攻击用^^)

上述例子的同样功能:iptables -t nat -I POSTROUTING -s 10.1.0.0/24 -j NETMAP --to 192.168.0.0/24

 

DNAT eg:

iptables -t nat -A PREROUTING -d ROUTEIP -p tcp --dport 80 -j DNAT --to-destination WEBIP

ROUTEIP表示防火墙(路由器)的公网IP 

WEBIP 表示内网WEB服务器IP

这条规则表示当外网访问本地的HTTP80端口时,自动转到内网的WEB服务器上。等于是把web服务器做了个映射到公网上。

当仅仅需要从外网访问内网时,这样是足够了,

但是如果需要从内网机器,通过WEB服务器的外网IP访问WEB服务器的话,还需要加条SNAT规则:

 iptables -t nat -A POSTROUTING -p tcp -d WEBIP --dport 80 -j SNAT --to ROUTEIP

将访问WEB服务器的数据包的源IP地址强制改为网关IP。否则会出现无法访问的问题。

 简单分析下原因:

 假设内网   192.168.0.10->需要从外部IP访问WEB的主机         

                  192.168.0.254->WEB服务器内部IP地址          

                 192.168.0.1->网关 (外部IP为202.96.22.22)

 当192.168.0.10访问202.96.22.22的WEB服务时,

根据网关上的DNAT,数据包的目的IP由202.96.22.22被转为192.168.0.254。254收到数据包后,发现是10发送过来的,

那么他会直接回数据包给192.168.0.10,但是10收到包后发现包的来源不是自己想要的202.96.22.22,

那这个包就会被直接丢弃。

解决办法就是在254不要直接发包给10,而是返回给网关,让网关原路返回给10机器。这样,只要将发往254请求WEB服务的数据包的源IP都改为网关的IP,192.168.0.1,就可以解决这个问题。 即

iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.254 --dport 80 -j SNAT --to 192.168.0.1

 

一局域网192.168.1.0/24,

web服务器:192.168.1.10

ftp服务器:192.168.1.11

网关linux,

内网eth0,IP为192.168.1.1

外网eth1,IP为a.b.c.d

 

怎样作NAT能使内外网都能访问公司的服务器?

A:# web

# 用DNAT作端口映射

iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10

# 用SNAT作源地址转换(关键),以使回应包能正确返回

iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1

 

# 一些人经常忘了打开FORWARD链的相关端口,特此增加

iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT

 

# ftp

modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT

modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块

# 用DNAT作端口映射

iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.1.11

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT

# 用SNAT作源地址转换(关键),以使回应包能正确返回

iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.1.1

 

 

 

详细参考:

 

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:防火墙设置2

关键词: