Iptables防火墙详细介绍与实战增强服务器安全


一:Iptables的概述及应用

iptables概述:

netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables 组成。

netfilter/iptables 关系:

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

netfilter/iptables 后期简称为:iptables。 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。   所有规则配置后,立即生效,不需要重启服务。

三张表

表名

作用

Filter

#负责过滤数据包,包括的规则链有,input,output和forward;

Nat

#网络地址转换,包括的规则链有,prerouting,postrouting和output;

Mangle

#表则主要应用在修改数据包内容上,用来做流量×××的,给数据包打个标识,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;

五个链:

链名

作用

Input

匹配目IP是本机的数据包,

output

出口数据包,一般不在此链上做配置

forward

匹配流经本机的数据包,

prerouting

用来修改目的地址用来做DNAT。如:把内网中的80端口映射到路由器外网端口上

postrouting

用来修改源地址用来做SNAT。如:内网通过路由器NAT转换功能实现内网PC机通过一个公网IP地址上网。

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

 

总结:iptables三个表,5个链接,结构如图:

 

Raw表用于处理异常,包括的规则链有,prerouting,output; 一般使用不到。

 

表->链->规则

Iptables过滤封包流程

 

总结:

 整体数据包分两类: 1、发给防火墙本身的数据包 ;2、需要经过防火墙到达防火墙之外数据

 

POSTROUTIONG:发送到网卡接口之前。如下图:

数据包流向的基本步骤如下: 
1. 数据包到达网络接口,比如 eth0。 
2. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。 
3. 如果进行了连接跟踪,在此处理。 
4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。 
5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。 
6. 决定路由,看是交给本地主机还是转发给其它主机。

   到了这里我们就得分两种不同的情况进行讨论了,

一种情况就是数据包要转发给其它主机,这时候它会依次经过: 
7. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。 
8. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。 
9. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。 
10. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。 
11. 进入出去的网络接口。完毕。

另一种情况是,数据包就是发给本地主机的,那么它会依次穿过: 
7. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。 
8. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。 
9. 交给本地主机的应用程序进行处理。 
10. 处理完毕后进行路由决定,看该往那里发出。 
11. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。 
12. 连接跟踪对本地的数据包进行处理。 
13. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。 
14. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。 
15. 再次进行路由决定。 
16. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。 
17. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。 
18. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。 
19. 进入出去的网络接口。完毕


二:实验安装与配置简述

Iptables的安装

安装

[root@xuegod63 ~]# rpm -qf `which iptables`

iptables-1.4.7-4.el6.x86_64

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/iptables-1.4.7-4.el6.x86_64.rpm

 

配置文件位置:

[root@xuegod63 ~]# ls /etc/sysconfig/iptables

/etc/sysconfig/iptables

 

启动服务

[root@xuegod63 ~]# /etc/init.d/iptables start

[root@xuegod63 ~]# chkconfig --list iptables

iptables       0:off1:off2:on3:on4:on5:on   6:off

 

 

iptables语法总结:

 

iptables主要参数

-A 向规则链中添加一条规则,默认被添加到末尾

-T指定要操作的表,默认是filter

-D从规则链中删除规则,可以指定序号或者匹配的规则来删除

-R进行规则替换

-I插入一条规则,默认被插入到首部

-F清空所选的链,重启后恢复

-N新建用户自定义的规则链

-X删除用户自定义的规则链

-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,

-s指定源地址

-d指定目的地址

-i进入接口

-o流出接口

-j采取的动作,accept,drop,snat,dnat,masquerade

--sport源端口

--dport目的端口,端口必须和协议一起来配合使用

注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写

基本配置简述

例1:iptables命令使用方法

1:   -A <链名>    APPEND,追加一条规则(放到最后)

[root@xuegod63 ~]# iptables -t filter -A INPUT -j DROP    #拒绝所有人访问服务器

2:   -D <链名> <规则号码 | 具体规则内容>    DELETE,删除一条规则

 

 

 iptables -D INPUT 1(按号码匹配) 删除 filter INPUT 链中的第1条规则(不管它的内容是什么)

注意:

    1、若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条

    2、按号码匹配删除时,确保规则号码 ≤ 已有规则数,否则报错

    3、按内容匹配删除时,确保规则存在,否则报错

 

 iptables -D INPUT -s 192.168.0.1 -j DROP(按内容匹配)

 删除 filter INPUT 链中内容为“-s 192.168.0.1 -j DROP”的规则

 

3:   -P <链名> <动作>    POLICY,设置某个链的默认规则

       

4:   -F [链名]       FLUSH,清空规则

例如:

添加规则:

[root@xuegod63 ~]# iptables -t filter -A INPUT -j DROP #添加一条规则

[root@xuegod63 ~]# iptables -F INPUT   #清除INPUT链上的规则

[root@xuegod63 ~]# iptables -F   #清除filter表中所有链上的规则

[root@xuegod63 ~]# iptables -t nat -F  #清空NAT表中所有链上的规则

[root@xuegod63 ~]# iptables -t nat -F PREROUTING  #清空NAT表中PREROUTING链上的规则

注意:

 1-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则。 需要手动改:

[root@xuegod63 ~]# iptables -P INPUT ACCEPT

2-P 设置了 DROP 后,使用 -F 一定要小心!!!

配置crontab :

*/15 * * * *  iptables -P INPUT ACCEPT

*/15 * * * *  iptables –F

3、如果不写链名,默认清空某表里所有链里的所有规则

 

5:     -L [链名]       LIST,列出规则

    v:显示详细信息,包括每条规则的匹配包数量和匹配字节数

    x:在 v 的基础上,禁止自动单位换算(KM

    n:只显示 IP 地址和端口号码,不显示域名和服务名称

例如:

[root@xuegod63 ~]# iptables L #粗略列出 filter 表所有链及所有规则

[root@xuegod63 ~]# iptables -t nat vnL #用详细方式列出 nat 表所有链的所有规则,只显示 IP 地址和端口号

[root@xuegod63 ~]#  iptables -t nat -vxnL PREROUTING #用详细方式列出 nat PREROUTING 链的所有规则以及详细数字,不反解

 

6:     按网络接口匹配

-i <匹配数据进入的网络接口>   #此参数主要应用于nat表,例如目标地址转换

例如:

  -i eth0   匹配是否从网络接口 eth0 进来

    -i ppp0  匹配是否从网络接口 ppp0 进来

 

-o 匹配数据流出的网络接口

例如:

    -o eth0    匹配数据是否从eth0网络接口流出

    -o ppp0   匹配数据是否从ppp0网络接口流出

 

iptables  -t nat  -o eth0 条件  动作

 

7:按来源目的地址匹配

 

-s <匹配来源地址>

    可以是 IPNETDOMAIN,也可空(任何地址)

例如:

    -s 192.168.0.1     匹配来自 192.168.0.1 的数据包

    -s 192.168.1.0/24  匹配来自 192.168.1.0/24 网络的数据包

    -s 192.168.0.0/16  匹配来自 192.168.0.0/16 网络的数据包

 

-d <匹配目的地址>

    可以是 IPNETDOMAIN,也可以空

例如:

    -d 202.106.0.20    匹配目标去往 202.106.0.20 的数据包

    -d 202.106.0.0/16  匹配目标去往 202.106.0.0/16 网络的数据包

    -d www.abc.com   匹配目标去往域名 www.abc.com 的数据包

 

8:按协议类型匹配

-p <匹配协议类型>

    可以是 TCPUDPICMP 等,也可为空

例如:

    -p tcp

    -p udp

    -p icmp --icmp-type 类型

    ping: type 8      pong: type 0

 

9:按来源目的端口匹配

--sport <匹配源端口>

    可以是个别端口,可以是端口范围

例如:

    --sport 1000      匹配源端口是 1000 的数据包

    --sport 1000:3000 匹配源端口是 1000-3000 的数据包(含10003000

    --sport :3000     匹配源端口是 3000 以下的数据包(含 3000

    --sport 1000:     匹配源端口是 1000 以上的数据包(含 1000

--dport <匹配目的端口>

    可以是个别端口,可以是端口范围

例如:

    --dport 80        匹配目的端口是 80 的数据包

    --dport 6000:8000 匹配目的端口是 6000-8000 的数据包(含60008000

    --dport :3000     匹配目的端口是 3000 以下的数据包(含 3000

    --dport 1000:     匹配目的端口是 1000 以上的数据包(含 1000

注意:--sport --dport 必须配合 -p 参数使用

 

10:匹配应用举例

1、端口匹配

-p udp --dport 53

匹配网络中目的端口是 53 UDP 协议数据包

2、地址匹配

-s 10.1.0.0/24 -d 172.17.0.0/16

匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包

 

3、端口和地址联合匹配

-s 192.168.0.1 -d www.abc.com -p tcp --dport 80

匹配来自 192.168.0.1,去往 www.abc.com 80 端口的 TCP 协议数据包

 

iptable配置实例

iptable基本操作

iptables -L  列出iptables规则
iptables -F  清除iptables内置规则
iptables -X  清除iptables自定义规则

设定默认规则

在iptables规则中没有匹配到规则则使用默认规则进行处理

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

配置SSH规则

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT  如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。

只允许192.168.0.3的机器进行SSH连接

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

允许loopback回环通信

IPTABLES -A INPUT -i lo -p all -j ACCEPT 
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT

目的地址转换,映射内部地址

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10

源地址转换,隐藏内部地址

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

地址伪装,动态ip的NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

masquerade和snat的主要区别在于,snat是把源地址转换为固定的IP地址或者是地址池,而masquerade在adsl等方式拨号上网时候非常有用,因为是拨号上网所以网卡的外网IP经常变化,这样在进行地址转换的时候就要在每次都要修改转换策略里面的ip,使用masquerade就很好的解决了这个问题,他会自己去探测外网卡获得的ip地址然后自动进行地址转换,这样就算外网获得的ip经常变化也不用人工干预了。

开启转发功能

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允许已建连接及相关链接对内转发
ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 允许对外转发

过滤某个MAC

iptables -A FORWARD -m mac --mac -source MAC地址 -j DROP

报文经过路由后,数据包中原有的MAC信息会被替换,所以在路由后的iptables中使用mac匹配没有意义。

数据包整流

iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP

多端口匹配

用以一次匹配多个端口

iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT

丢弃非法连接

iptables -A INPUT   -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables-A FORWARD -m state --state INVALID -j DROP

存储于恢复iptables规则

iptables-save > somefile
iptables-restore < somefile

如果你的IPTABLES基础知识还不了解,建议先去看看.


Linux下配置iptables防火墙增强服务器


一:实验环境

iptables服务端:xuegod-63   IP:192.168.1.63

iptables客户端:xuegod-64   IP:192.168.1.64

二:实验目标

例1:使用iptables防火墙保护公司web服务器

例2:使用iptables搭建路由器,通过SNAT功能,使内网PC机,可以上网。

例3:拒绝访问服务器本身和拒绝通过服务器访问别的机器

例4:使用DNAT 功能,把内网web服务器端口映射到路由器外网

 

三:实验代码

例1:使用iptables防火墙保护公司web服务器

具体配置如下:

web服务器端:xuegod63

      客户端: xuegod64

配置xuegod63防火墙:

 

 

服务端运行防火墙并清空防火墙

[root@xuegod-63 ~]# /etc/init.d/iptables start

[root@xuegod-63 ~]# iptables –F

#清空防火墙是怕在防火墙中会有一些规则

启动远程连接服务器--22

[root@xuegod-63 ~]# /etc/init.d/sshd restart

安装vsftpd并启动--21

[root@xuegod-63 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm

[root@xuegod-63 ~]# /etc/init.d/vsftpd restart

客户端安装lftpd并测试

[root@xuegod-64 ~]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm

[root@xuegod-64 ~]# lftp 192.168.1.63

lftp 192.168.1.63:~> ls

drwxrwxrwx    2 0        0            4096 Aug 18 05:12 pub

lftp 192.168.1.63:/> exit

服务端启动阿帕奇服务器--80

[root@xuegod-63 ~]# /etc/init.d/httpd restart

[root@xuegod-63 ~]# echo 192.168.1.63 > /var/www/html/index.html

[root@xuegod-63 ~]# vim /etc/httpd/conf.d/welcome.conf #注释掉阿帕奇服务器的默认首页

#<LocationMatch "^/+$">

#   Options -Indexes

#  ErrorDocument 403 /error/noindex.html

#</LocationMatch>

#将以上四个命令进行注释

[root@xuegod-63 ~]# /etc/init.d/httpd restart

客户端1.64上测试

#现在是服务端与客户端是可以ping通的

服务器防火墙配置

[root@xuegod-63 ~]# iptables -A INPUT -i lo -j ACCEPT

[root@xuegod-63 ~]# iptables -A INPUT -p tcp  --dport 22 -j ACCEPT

[root@xuegod-63 ~]# iptables -A INPUT -p tcp  --dport 80 -j ACCEPT

#服务器之间要用ssh来说远程连接,其端口号是22号,web服务器的端口号是80端口,因此前面要把22,80两个端口开放,在数据包进入(INPUT)链处,给予通过。 

[root@xuegod-63 ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#这个想要进入封包是否为刚刚我发出去的回应? 如果是刚刚我发出去的回应,那么就可以予以接受放行. ESTABLISHED:已建立的链接状态。 RELATED:该封包为本机发出的封包有关。

[root@xuegod-63 ~]#  iptables -P INPUT DROP

注:-

P:设置一个链的默认策略

DROP:默认策略的动作

iptables的默认表是:filter 

所以这条规则的意思就是:设置filter表的INPUT链的默认策略为丢包。就是本机默认不接受任何连接,除非在INPUT链上再设置接收的规则。

注:一般iptablesl-,OUTPUT出口一般都放行,不需要在出口上做限制。这样允许服务器主动访问外网所有数据。

 

[root@xuegod-63 ~]#  iptables -L -n

Chain INPUT (policy DROP)

target     prot opt source               destination

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

测试

[root@xuegod-64 ~]# ssh 192.168.1.63

root@192.168.1.63's password: 123456

Last login: Wed Aug 26 19:32:13 2015 from 192.168.1.64

[root@xuegod-63 ~]# exit

例2:使用iptables搭建路由器,通过SNAT功能,使内网PC机,可以上网。

 

 

实验环境:

配置:xuegod-63

Xuegod-63做路由器 添加两1个网卡,配置eth0为桥接,eth1为vmnet4模式。

配置eth0的IP地址为:192.168.1.63 /24

配置eth1的IP地址为:192.168.2.1 /24

注释:这里eth1设置重启之后,eth0会被no掉,必须要登录到配置文件中修改为yes

[root@xuegod-63 network-scripts]# /etc/init.d/network restart

配置客户端xuegod64:

xuegod-64做客户端,eth0网卡模式为vmnet4

配置eth0  IP,192.168.2.2

 

启用内核路由转发功能:

[root@xuegod63 ~]#echo "1" > /proc/sys/net/ipv4/ip_forward

或者

[root@xuegod63 ~]# vim /etc/sysctl.conf

改:#net.ipv4.ip_forward = 0

为: net.ipv4.ip_forward = 1

[root@xuegod63 ~]#sysctl -p #改完使配置生效:

 

防火墙配置并查看规则

[root@xuegod63 ~]#iptables -t nat -A POSTROUTING -s 192.168.2.0/24   -j  SNAT  --to 192.168.1.63

[root@xuegod-63 ~]# iptables -t nat -L

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination         

SNAT       all  --  192.168.2.0/24       anywhere            to:192.168.1.63

 

测试:

[root@xuegod-63 ~]# ping 192.168.1.1   #ping路由器

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.19 ms

64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=3.06 ms

[root@xuegod-63 ~]# ping www.baidu.com  #ping外网

PING www.a.shifen.com (119.75.217.109) 56(84) bytes of data.

64 bytes from 119.75.217.109: icmp_seq=1 ttl=52 time=37.7 ms

64 bytes from 119.75.217.109: icmp_seq=2 ttl=52 time=38.1 ms

 

实例3:拒绝访问服务器本身和拒绝通过服务器访问别的机器:

 

实验环境:

配置好网络和对应的IP地址:

Xuegod-64: eth0 : IP:192.168.2.2          网卡属于:Vmnet4

xuegod-63: eth1 : IP:192.168.2.1            网卡属于:Vmnet4

xuegod-63: eth0 : IP:192.168.1.63           网卡属于:桥接

网络拓扑图如下:

3.1:拒绝访问服务器本身

xuegod63启用内核路由转发功能:

[root@xuegod63 ~]#iptables –F  :清除之前实验的所有规则,不包括做SNAT所添加的规则,即这个时候xuegod64是能ping通192.168.1.1,能上网。

[root@xuegod63 ~]#iptables -A INPUT -s 192.168.2.2 -j DROP

测试:ping不通192.168.2.1

是否可以通过FORWARD链上做规则限制呢?测试:

[root@xuegod63 ~]#iptables –F  清除之前实验的所有规则,不包括做SNAT所添加的规则,即这个时候xuegod64是能ping通192.168.1.1,能上网。

[root@xuegod63 ~]#iptables -A FORWARD -s 192.168.2.2 -j DROP

可以ping通192.168.2.1

注:为什么在INPUT链上做DROP可以限制192.168.2.2访问192.168.2.1,而在FORWARD链上却是不能够限制192.168.2.2访问192.168.2.1呢?

答:首先,现在要做的是限制192.168.2.2访问服务器192.168.2.1本身。第二INPUT链是本地的,是可以限制其他服务器访问本地服务器的链。而FORWARD链他不是本地的,它是不能够限制其他服务器访问服务器本身的,而只能限制另一个服务器的数据流量要经过本地服务器来访问其他服务器的,只要不是访问本地的,是流经的数据流 都是可以做限制的 。同理,INPUT链是不能做限制另一个服务器的数据流量要经过本地服务器来访问其他服务器的。

查看数据包,匹配流程图:

注:直接ping服务器本身,数据流是不经过RORWARD链的。所以规则要添加在INPUT链上。

 

 [root@ xuegod63 ~]# iptables -A INPUT -s 192.168.2.2 -j DROP 

 

#不能访问本地服务器了,但是可以正常上网

#这里也不能在OUTPUT链上做规则,不允许数据流流出,如果其在这个链上做规则的话,数据流是任然可以访问本地服务器的,只不过不能出去罢了。

 

3.2:拒绝通过服务器上网

注:上一个规则中,只禁止了其访问本地服务器,但是它任然是可以上网的

 

[root@ xuegod63 ~]# iptables -A OUTPUT -d 192.168.2.2 -j DROP 

#这里它还是可以上网的,为什么还是能够上网呢?    错误的依旧在链的作用上,OUTPUT链也是本地的,他只能限制访问本地服务器的数据流是否能够通过。而想要上网,需要经过本地服务器,即数据流是流经本地服务器的,所以在OUTPUT链上是无法限制到的。因此,这里只能在FORWARD链上做限制。,

 

[root@xuegod63 ~]#iptables -A FORWARD -s 192.168.2.2 -j DROP

测试

#不能上网

例4:使用DNAT 功能,把内网web服务器端口映射到路由器外网

注释:80端口映射

实验环境:

xuegod64: IP  :192.168.2.2       网卡属于:Vmnet4

xuegod63: eth1 : IP:192.168.2.1    网卡属于:Vmnet4

xuegod63: eth0 : IP:192.168.1.63   网卡属于:桥接

Xuegod63 为路由器

Xuegod64 为WEB服务器

物理机     为客户机

[root@xuegod63 ~]# iptables -F

xuegod64,开启动httpd服务,首页内容为: 192.168.2.2

[root@xuegod64~]# yum install httpd -y

[root@xuegod64~]# /etc/init.d/httpd start

[root@xuegod64 ~]# echo 192.168.2.2 > /var/www/html/index.html

xuegod63做DNAT端口映射:

[root@xuegod63 ~]#  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.2:80

或:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.1.63 -p tcp --dport 80 -j DNAT --to 192.168.2.2:80

 

测试

物理机访问

==============================================================

转载于:https://blog.51cto.com/blxueyuan/1862936

Iptables防火墙详细介绍与实战增强服务器安全相关推荐

  1. iptables的详细介绍及配置方法

    Firewall(防火墙):组件,工作在网络边缘(主机边缘),对进出网络数据包基于一定的规则检查,并在匹配某规则时由规则定义的处理进行处理的一组功能的组件. 防火墙类型:根据工作的层次的不同来划分,常 ...

  2. Rhino| Rhino详细介绍与实战

    文章目录 一:Rhino简介 二:Rhino资料 三:主要解决的问题 四:Rhino的基本使用 五:Java 和 JavaScript 对象相互调用 一:Rhino简介 Rhino是一个完全以Java ...

  3. 美国Linux服务器系统内核的详细介绍

    美国Linux服务器的系统是能够处理复杂应用程序的稳定操作系统之一,适用于创建复杂架构,其系统有一个内核,被称为美国Linux服务器系统的核心,是操作系统的主要部分,可以完全控制系统中的所有内容,同时 ...

  4. ntp网络时间服务器的详细介绍

    ntp网络时间服务器的详细介绍 ntp网络时间服务器的详细介绍 NTP属于运用层协议(依据UDP传输,运用的端口号为123),用来同步网络中分布式时间服务器和客户端之间的时间,使网络中的设备供应依据一 ...

  5. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  6. 保护你的Web服务器 iptables防火墙脚本全解读

    本文假设你已经对iptables有基本的了解,否则请先阅读iptables入门. 在我们的Web服务器上,系统的默认策略是INPUT为DROP,OUTPUT:FORWARD链为ACCEPT,DROP则 ...

  7. linux防火墙端口配置策略路由,Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战...

    Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中,防火墙操作工具叫:ipfwadm 在2.2内核中,防火墙操作工具叫:ipc ...

  8. 网站服务器防火墙waf介绍

    这篇文章内容关键详细介绍WAF的一些基本概念.WAF是专业为维护根据Web程序运行而设计的,我们科学研究WAF绕开的目地一是协助安服工作人员掌握渗透检测中的检测方法,二是可以对安全机器设备生产商出示一 ...

  9. 【目标检测】56、目标检测超详细介绍 | Anchor-free/Anchor-based/Backbone/Neck/Label-Assignment/NMS/数据增强

    文章目录 1.双阶段和单阶段目标检测器 1.1 双阶段目标检测器 1.1.1 R-CNN 1.1.2 SPP 1.1.3 Fast R-CNN 1.1.4 Faster R-CNN 1.2 单阶段目标 ...

最新文章

  1. linux fuser 命令 查看文件/网络端口 被什么进程占用
  2. 一个word文档中,多个表格的批量调整(根据窗口调整表格和添加表格水平线)...
  3. Linux学习笔记-对Makefile的初步优化
  4. c语言tty,1. 终端_C语言_C语言入门-Linux C编程一站式学习
  5. 机器学习分类算法综述
  6. oracle lead_lag wm_concat,oracle函数 lag()和lead()
  7. 软件评测师考试需要知道什么?
  8. java毕业设计明德学院网站源码+lw文档+mybatis+系统+mysql数据库+调试
  9. 移动广告聚合平台经验分享:芒果、果合、Adview、抓猫哪家好?
  10. RUI手机桌面,开年大更新绝对值得拥有!
  11. Ajax怎么解决乱码PHP,php Ajax乱码
  12. java读properties配置文件中的值
  13. django 配置微信JS接口安全域名文件MP_verify_HYY0KkfTzujsyGhW.txt
  14. 卷积神经网络CNN简图
  15. Fusion 360 常见问题
  16. linux怎么用命令期启动ngrok,ngrok 开机启动设置
  17. OSPF协议-HCIA
  18. php socket_read 读取全部,PHP中socket_read的问题_php
  19. Linux终端关机命令
  20. 网站建设和网站运营需要样注意什么?

热门文章

  1. 【ES6】数组的拓展
  2. 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
  3. ASP .NET Core Web Razor Pages系列教程五:更新Razor Pages页面
  4. python对list中所有数值类型转换
  5. linux中使用yum安装主程序包,linux使用yum对程序包管理相关知识
  6. Go Reflect
  7. python做bi系统_如何使用Python创建可视化对象
  8. b树与b+树的区别_一篇文章理清B树、B-树、B+树、B*树索引之间的区别与联系
  9. php按条件修改xml,php如何修改xml内容
  10. 九九乘法表c语言代码空格,九九乘法表的C语言代码.doc