•  
 
 
iptables详解   

Iptables原理
现在防火墙主要分以下三种类型:包过滤、应用代理、状态检测
包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术的防火墙哈~
代理防火墙:因一些特殊的报文攻击可以轻松突破包过滤防火墙的保护,比如大家知道的SYN攻击、ICMP洪水攻击,所以以代理服务器作为专门为用户保密或者突破访问限制的数据转发通道的应用代理防火墙出现了哈~其使用了一种应用协议分析的新技术。
状态检测防火墙:其基于动态包过滤技术发展而来,加入了一种状态检测的模块,进一点发展了会话过滤功能,会话状态的保留是有时间限制的,此防火墙还可以对包的内容进行分析,从而避免开放过多的端口。
netfilter/iptables IP数据包过滤系统实际上由netfilter和iptables两个组件构成。netfilter是集成在内核中的一部分,其作用是定义、保存相应的规则,而iptables是一种工具,用来修改信息的过滤规则及其他配置,我们可以通过iptables来设置一些适合我们企业需求环境的规则哈~,而这些规则会保存在内核空间之中。
netfilter是Linux核心中的一个通用架构,其提供了一系列的表(tables),每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。实际上netfilter是表的容器,表是链的容器,而链又是规则的容器。
filter表
nat表
mangle表
iptables内置链
PREROUTING:路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTIONG:路由之后
netfilter五条链相互关系,即iptables数据包转发流程图
 
Iptables工作流程图
iptables拥有三个表和五条链组成
 
Iptables基本语法
iptables [-t 表名] -命令 -匹配 -j 动作/目标
iptables内置了filter、nat和mangle三张表,我们可以使用-t参数来设置对哪张表生效哈~也可以省略-t参数,则默认对filter表进行操作。
具体命令参数可以通过man iptables查询哈~
 
配置SNAT命令基本语法
iptables -t nat -A POSTROUTING -o 网络接口 -j SNAT --to-source IP地址
配置DNAT命令基本语法
iptables -t nat -A PREROUTING -i 网络接口 -p 协议 --dport 端口 -j DNAT --to-destination IP地址
 
 
 
(1)删除策略
iptables -F:清空所选链中的规则,如果没有指定链则清空指定表中所有链的规则
iptables -X:清除预设表filter中使用者自定链中的规则
iptables -Z:清除预设表filter中使用者自定链中的规则
 
 
2、设置回环地址
有些服务的测试需要使用回环地址,为了保证各个服务的正常工作,需要允许回环地址的通信,如果不设置回环地址,有些服务不能启动哈~。
iptables -A INPUT -i lo -j ACCEPT
 
3、连接状态设置
为了简化防火墙的配置操作,并提高检查的效率,需要添加连接状态设置
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
连接跟踪存在四种数据包状态
NEW:想要新建连接的数据包
INVALID:无效的数据包,例如损坏或者不完整的数据包
ESTABLISHED:已经建立连接的数据包
RELATED:与已经发送的数据包有关的数据包
4、设置80端口转发
公司网站需要对外开放,所以我们需要开放80端口
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
5、DNS相关设置
为了客户端能够正常使用域名访问互联网,我们还需要允许内网计算机与外部DNS服务器的数据转发。
开启DNS使用UDP、TCP的53端口
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
 
6、允许访问服务器的SSH
管理员会通过外网进行远程管理,所以我们要开启SSH使用的TCP协议22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 
 
7、NAT端口映射设置
由于局域网的地址为私网地址,在公网上不合法哈~所以必须将私网地址转为服务器的外部地址进行地址映射哈~连接外网接口为ppp0
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
MASQUERADE和SNAT作用一样哈~相样是提供源地址转换的操作,但是MASQUERADE是针对外部接口为动态IP地址来设置滴,不需要使用--to-source指定转换的IP地址。如果网络采用的是拨号方式接入互联网,而没有对外的静态IP地址(主要用在动态获取IP地址的连接,比如ADSL拨号、DHCP连接等等),那么建议使用MASQUERADE哈~
注意:MASQUERADE是特殊的过滤规则,其只可以映射从一个接口到另一个接口的数据哈~
8、内网机器对外发布WEB网站
内网WEB服务器IP地址为192.168.0.3,我们需要进行如下配置哈~,当公网客户端访问服务器时,防火墙将请求映射到内网的192.168.0.3的80端口
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80
9、保存与恢复iptables配置
保存:iptables-save
iptables-save [-c] [-t 表名]
-c:保存包和字节计数器的值。可以使在重启防火墙后不丢失对包和字节的统计
-t:用来保存哪张表的规则,如果不跟-t参数则保存所有的表
可以使用重定向命令来保存这些规则集
iptables-save > /etc/iptables-save
恢复:iptables-restore
iptables-restore [-c] [-n]
-c:如果加上-c参数则表示要求装入包和字节计数器
-n:表示不覆盖己有的表或表内的规则,默认情况下是清除所有己存在的规则
使用重定向来恢复由iptables-save保存的规则集
iptables-restore > /etc/iptables-save
如果要在服务或系统重启后依然生效
service iptables save
 
 
 
 

《iptables详解 》RHEL6的更多相关文章

  1. 《搭建更新DNS集群服务》RHEL6

    DNS服务器的更新: 一听就知道不止一台的DNS服务器,要是一台也用不着更新对吧?一般都是DNS集群. 一台DNS更新了,添加一条数据,下面的都要跟着它变. 主DNS服务器的配置 首先先配置DNS服务 ...

  2. 搭建redis cluster集群服务

    redis 5.0以下为ruby编写,运行命令时需要安装ruby,而5.0以上则为c编写,可直接安装后运行.因此本文使用redis5.0.5 1.编写配置文件 在 /home 下新建 redis-cl ...

  3. CentOs7.3 搭建 SolrCloud 集群服务

    一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.C ...

  4. 使用Codis搭建redis集群服务

    转(http://www.jianshu.com/p/f8e968e57863) 一. 应用场景 redis 作为数据结构存储引擎,有着很多优点 高性能单机引擎可以达到5-10W qps 数据结构全面 ...

  5. LINUX中的DNS服务---DNS集群

    一.DNS集群的理解 在使用DNS的时候,为了缓解服务器的压力,会使用多个辅助DNS服务器来分担主DNS的工作.这些DNS就叫做DNS集群. 二.配置过程 1)在辅DNS中操作如下:(主机号为172. ...

  6. Windows10 搭建 ElasticSearch 集群服务

    一.前言 集群的搭建需要多台机器,之前我使用 ubuntu 16.04 搭建过 hadoop 的单机模式和分布式模式,这个今后会写,今天先写一篇使用 < Windows10 搭建 Elastic ...

  7. LVS负载均衡集群服务搭建详解(二)

    lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...

  8. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  9. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  10. 了解一下zookeeper,搭建单机版和集群版的环境玩玩,需要手稿的,留下邮箱

    第一章:Zookeeper介绍 Zookeeper,动物管理员,是用来管理hadoop(大象).Hive(蜜蜂).Pig(小猪)的管理员. Apache Hbase和Apache Solr的分布式集群 ...

随机推荐

  1. mongodb目录

    1. mongodb 数据库操作--备份 还原 导出 导入 2. ubuntu下mongodb启动脚本 3. mongodb实现远程连接 4. 用java在客户端读取mongodb中的数据并发送至服务 ...

  2. nodejs配置与入门

    Node.js 笔记(一) nodejs.npm.express安装 http://blog.csdn.net/haidaochen/article/details/7257655 Windows平台 ...

  3. 在MVC中要实现Ajax

    在MVC中要实现Ajax有很多的方式,有微软自己的MicrosoftAjax,也可以用JQuery的AJax来实现,如果对其他的JavaScript框架熟悉,还可以采用其他的实现方案,比如说Proto ...

  4. Dapper ORM 用法

    假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM.Dapper的优势:1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编译后就40K ...

  5. centos下卸载rpm包

    rpm -qa|grep sphinx rpm -e sphinx..... 安全地卸载 RPM卸载软件包,并不是简单地将原来安装的文件逐个删除,那样做的话,可能会出现这样或那样的问题.如,A软件包依 ...

  6. javaScript入门2--变量,作用域,内存

    变量类型:基本类型和引用类型 基本类型上节已经提到.基本类型的值是按值传递的,既改变形参的值不会影响实参 <html> <head> <meta charset=&quo ...

  7. 安卓Design包之CoordinatorLayout配合AppBarLayout,ToolBar,TabLaout的使用

    转载: CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用 控件的简单介绍: AppBarLayout:它是继承LinerLayout实现的一个V ...

  8. open source e-business software - prestashop

    https://www.prestashop.com/en/system-requirements

  9. request.getHeader("Referer")理解【转载】

    request.getHeader("Referer")用于获取来源页地址,但有时却为空值,这是怎么回事.原因如下: getHeader("Referer")要 ...

  10. page74-泛型可迭代的基础集合数据类型的API-Bag+Queue+Stack

    [泛型可迭代的基础集合数据类型的API] 背包:就是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素.(用例也可以检查背包是否为空, 或者获取背包中元素的 ...