iptables上海时时乐走势图

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

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

iptables,iptableslinux

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

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

表:内置第三张表

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

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

Mangle:对指定包进行修改

上海时时乐走势图 1

iptables对数据包的处理过程

上海时时乐走势图 2

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

 

【-t tables】

指定规则表,默认filter

 

Command  常用命令列表:

 

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

-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

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、MASQUERADE:地址伪装

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

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

简化服务开启规则
一条规则开放多个端口
比如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

2)service  iptables restart

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

将SNAT规则改为MASQUERADE即可

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

1)iptables-restore  <  文件名

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

5、iptables脚本编写

发布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

3、DNAT:目标地址转换

配置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地址)

    导出到/etc/sysconfig/iptables

[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!

1)iptables-save  >  文件

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

lsmod        查看已加载的模块

内网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(开启路由转发)

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

!/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

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

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

2)加载必要的模块

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

 1、SNAT:源地址转换

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

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

发布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服务地址)

 

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

还原:

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

     导出到指定文件

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

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

——————————————————————————————————————————————————————
案例准备:
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

6、防火墙的类型:

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

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

发布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)

3)调整内核参数:

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

2)service  iptables save

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

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

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

实验拓扑图:

上海时时乐走势图 4

实验要求:

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

上海时时乐走势图 5

上海时时乐走势图 6

上海时时乐走势图 7

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

在本机测试如下图:

上海时时乐走势图 8

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

上海时时乐走势图 9

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

步骤:

启动sshd服务:  service sshd  restart

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

上海时时乐走势图 10

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

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

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

步骤:

SNAT源地址转换命令如下:

上海时时乐走势图 11

到网站服务器访问外网

上海时时乐走势图 12

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

上海时时乐走势图 13

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

1)外部主机通过

在网关服务器上配置DANT

上海时时乐走势图 14

验证可以访问

上海时时乐走势图 15

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

上海时时乐走势图 16

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

在网关服务器配置DNAT

上海时时乐走势图 17

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

上海时时乐走势图 18

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

保存防火墙规则:

上海时时乐走势图 19

备份防火墙规则:iptables -save

上海时时乐走势图 20

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

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

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

脚本如下:

上海时时乐走势图 21

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

上海时时乐走势图 22

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

1)定义变量

备份:

modprobe   ip_conntrack_ftp     ftp连接状态跟踪

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

4、备份和还原规则:

    重启自动加载

modprobe   ip_nat_ftp     ftp地址转换模块

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

4)编写防火墙的规则

本文由上海时时乐走势图发布于上海时时乐走势图,转载请注明出处:iptables上海时时乐走势图

您可能还会对下面的文章感兴趣: