`
isiqi
  • 浏览: 16553928 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

redhat9调试笔记之防火墙

阅读更多

<!--StartFragment -->


1.安装我不讲了,RH9的rpm安装方式非常简单,大家只要在rh的安装源盘找到相应的rpm包就行。

然后rpm-Uvhiptables-?.i386.rpm


2.我们今天调试的环境是一台双网卡的服务器,通过DDN固定ip地址上网,两块网卡分别是
eth0:211.101.251.4外部ip地址,直接上网
eth1:192.168.0.1内部网卡地址,连接192.168.0.0/255.255.255.0网断局域网

3.客户端A是台WWW,地址是192.168.0.2。我们将利用后面的DNAT功能,让外面的机器能访问这台机器的www服务。其他客户端都在192.168.0.0/24网段,且网关都指向192.168.0.1

4.如果大家要使用iptables的NAT功能,之前我们要确保系统内核配置的是正确的,我的iptables好几次就因为内核编译错误,造成客户端不能正常使用SNAT功能,甚至不能加载ip_tables模块。这是一般的内核配置,基本上iptables的NAT功能能正常使用,内核版本不同可能显示不一样,大家灵活掌握就行,应该不会出现麻烦。


Networkingoptions--->
[*]Networkpacketfiltering(replacesipchains)
[*]TCP/IPnetworking
IP:NetfilterConfiguration--->
<M>Connectiontracking(requiredformasq/NAT)(NEW)
<M>FTPprotocolsupport(NEW)
<M>IPtablessupport(requiredforfiltering/masq/NAT)(NEW)
<M>limitmatchsupport(NEW)
<M>MACaddressmatchsupport(NEW)
<M>netfilterMARKmatchsupport(NEW)
<M>Multipleportmatchsupport(NEW)
<M>TOSmatchsupport(NEW)
<M>tcpmssmatchsupport(NEW)
<M>Connectionstatematchsupport(NEW)
<M>Packetfiltering(NEW)
<M>REJECTtargetsupport(NEW)
<M>FullNAT(NEW)
<M>MASQUERADEtargetsupport(NEW)
<M>REDIRECTtargetsupport(NEW)
<M>Packetmangling(NEW)
<M>TOStargetsupport(NEW)
<M>MARKtargetsupport(NEW)
<M>LOGtargetsupport(NEW)
<M>TCPMSStargetsupport(NEW)
<M>ipchains(2.2-style)support(NEW)
<>ipfwadm(2.0-style)support(NEW)


5.我们要打开ip_forward,
直接修改/etc/sysctl.conf这个文档,把net.ipv4.ip_forward=1并把前面的#去掉,或者
echo"1">/proc/sys/net/ipv4/ip_forward,但是下次重起还是变0,所以还是直接修改文档的好。

6.我们在使用iptables之前,先要了解iptables的参数:

ACCEPT
接受这个封包,也就是可以通过规则检验而放行、顺利通过这个链。

DROP
丢弃这个封包,也就不能通过规则检验而被挡掉。

REJECT
与DROP一样,但会向来源地送出ICMP封包,告之对方‘portunreachable’的错误信息。

REDIRECT
将封包重导至本机端的其它port。

SNAT/DNAT/MASQUERADE
这些都是NAT的处理,视要求而修改为特定的SourceSocket或DestinationSocket、或动态的根据路由判断後的界面而修改SourceSocket。

建立一个新的(自定)链(-N)。
删除一个空的(自定)链(-X)。
改变一个内建链的原则(-P)。
列出一个链中的规则(-L)。
清除一个(内建)链中的所有规则(-F)。
在一个链的最後面新增(append)一条规则(-A)。
在链内某个位置插入(insert)一条新规则(-I)。
在链内某个位置替换(replace)一条规则(-R)。
在链内某个位置删除(delete)一条规则(-D)。
删除(delete)链内第一条符合的规则(-D)。
在iptables中,要指定规则是欲作用在那一个规则表上(使用-t来指定,如-tnat),若不指定,则预设是作用在filter这个表。


封包于防火墙中的流向(INPUT、OUTPUT、FORWARD)
相关界面(-i或-o)
所属协定(-p)
连线类型(-mstate)
封包类型(--syn)
来源地(-s)
来源端口(--sport)
目的地(-d)
目的地端口(--dport)


好了,开始工作!

首先查看一下机器上的有关于iptables的设定情况
作法如下:

iptables-L-n或者iptablse-tnat-L-n

定义参数

$DDN_IP="211.101.251.4"

如果你以前调试过iptables那么我们先清除先前的设定

iptables-F清除预设表filter中,所有规则链中的规则

iptables-X清除预设表filter中,使用者自订链中的规则

iptables-F-tmangle清除mangle表中,所有规则链中的规则

以此类推:

iptables-tmangle-X清除mangle表中,使用者自订链中的规则

iptables-F-tnat清除nat表中,所有规则链中的规则

iptables-tnat-X清除nat表中,使用者自订链中的规则

首先我们来设置filtertable的预设策略

iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT

当然我们也可以使用DROP,但一般我们不会这么做

接下来配置nattables表

&&一个典型的例子IP伪装(SNAT应用),即局域网网所有的机器都通过eth0做的透明网关出去,不做其他限制,

iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jMASQUERADE

假如你的上网方式是adsl拨号上网,adsl接口是ppp0,那么也可以这么设置
iptables-tnat-APOSTROUTING-oppp0-s192.168.0.0/24-jMASQUERADE


好了,现在我们要把这些命令保存为策略文件,好让iptables认出

/etc/rc.d/init.d/iptablessave系统会根据你刚才输入的命令保存为一个策略配置文件/etc/sysconfig/iptables

然后我们运行/etc/rc.d/init.d/iptablesstart启动iptables,并加载配置文件

好了现在你的局域网客户端都可以通过这台服务器上网,ftp,qq,www都没有限制,因为我们现在设置的是透明的防火墙。我们总结一下刚才的命令是:


源码:--------------------------------------------------------------------------------
echo1>/proc/sys/net/ipv4/ip_forward
iptables-F
iptables-X
iptables-tnat-F
iptables-tnat-X
iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
iptables-tnat-PPREROUTINGACCEPT
iptables-tnat-POUTPUTACCEPT
iptables-tnat-PPOSTROUTINGACCEPT
iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jMASQUERADE
/etc/rc.d/init.d/iptablessave
/etc/rc.d/init.d/iptablesstart
--------------------------------------------------------------------------------


&&另外一个典型的例子是DNAT,利用转址、转port的方式,使外网的封包,可以到达内网中的服务器主机,俗称虚拟主机。这种方式可保护服务器主机大部份的port不被外界存取,只开放公开服务的通道(如WebServerport80),因此安全性较高。

比如:凡对211.101.251.4:80连线者,则转址至192.168.0.2:80

iptables-tnat-APREROUTING-ieth0-ptcp-d211.101.251.4--dprot80-jDNAT--to-distination192.168.0.2:80

同样DNAT还可以利用在DMZ区域的mail,FTP等服务,大家就安需自己写吧!

以上讲的策略对大多数朋友来说已经绰绰有余了,但有些公司的老板可不是这么想,老板们往往希望员工好好工作,除了能上网收信以外,其他的诸如 FTP,QQ一律静止,这样的话iptables的设置就比较大,我们不能简单的MASQUERADE。比如我们现在只开放53(dns)80,25, 110三个端口用来平时的www和mail服务,那么我们就可以这样设置


源码:--------------------------------------------------------------------------------
ptables-F
iptables-X
iptables-tnat-F
iptables-tnat-X
iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
iptables-tnat-PPREROUTINGACCEPT
iptables-tnat-POUTPUTACCEPT
iptables-tnat-PPOSTROUTINGACCEPT

iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jSNAT--to-source211.101.251.4
1192.168.0.0/24这个网段,伪装成211.101.251.4出去。

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport80-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport80-d211.101.251.4--dport1024:65535-jACCEPT
开放内网可以观看外网的网站。

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport25-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport25-d211.101.251.4--dport1024:65525-jACCEPT
你可以送信给别人

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport110-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport110-d211.101.251.4--dport1024:65535-jACCEPT
开放内网可以对外网的POP3server取信件。

iptables-AOUTPUT-oeth0-pudp-s211.101.251.4--sport1024:65535-dany/0--dport53-jACCEPT
iptables-AINPUT-ieth0-pudp-sany/0--sport53-d211.101.251.4--dport1024:65535-jACCEPT
开放查询外网的DNS主机

iptables-AOUTPUT-oeth0-picmp-s211.101.251.4--icmp-type8-dany/0-jACCEPT
iptables-AINPUT-ieth0-picm-sany/0--icmp-type0-d211.101.251.4-jACCEPT
开放ping功能

--------------------------------------------------------------------------------


好了,差不多了大家学的怎么样,反正这些已经够你用了,其他的你就举一反三吧!

这里还要讲的是我的服务器是运行着squid服务,由于带宽有限,所以虽然开了透明SNAT功能,但还是希望客户端特别是www的访问还是使用 squid服务,这样可以节省不少带宽资源,这里我们就可以用到iptables的Transparent功能,让iptables的客户端80端口的访问强行转移到squid的3128端口,

首先,修改/etc/squid/squid.conf,找到下面几行,并修改为如下样子:

httpd_accel_hostredhat.frankhome.com#请修改为您的squid主机名称
httpd_accel_port80
httpd_accel_with_proxyon
httpd_accel_uses_host_headeron
然后/etc/rc.d/init.d/squidrestart

接着添加以下策略:
iptables-tnat-APREROUTING-ieth1-ptcp-s192.168.0.0/24--dport80-jREDIRECT--to-ports3128

这时候,您的TransparentProxy就起来了!如果您要测试它,可以取消client端的proxy设定,并将 squid关闭,然後测试是否不能连线(建议用一个未曾浏览过的网址来测试)?然则,再将squid打开,如果能这样又能恢复连线的话,那就已经成功了!这样有一个好处是:以後您再也不必跑到client那边设定proxy;而且,更好的地方在於:重复性的连线再也无需占用宝贵的对外频宽,速递当然也能'假性'的获得提高

ok!今天就写到这里,大家学了多少?一定要慢慢消化哦!:)

发表回复】【查看CU论坛原帖】【关闭
<!-----------回复----------->

guangdong 回复于:2003-07-29 12:55:40
6月19日,今天就iptables大家比较关心的问题来个补充说明

1.关于DNAT的补充说明!

对于用ADSL拨号上网的用户,外部网卡往往获取的ip地址是不固定的,所以虚拟主机,或者WWW,mail,ftp发布可能会有些问题,在此针对ADSL的不固定IP情况设置相应的DNAT策略,使能正常发布内网的FTP,MAIL,WWW。

我们这里以发布WWW为例,还是192.168.0.2为内部WWW服务器,只不过现在的服务器是通过ADSL上网

所以我们添加以下策略:
ptables-tnat-APREROUTING-ptcp-mtcp--dport80-jDNAT--to-destination192.168.0.2:80
将80请求转发至192.168.0.2:80端口
iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.2-ptcp-mtcp--dport80-jSNAT--to-source192.168.0.1
返回a.b.b.d时数据源来自同一子网,就将其源地址更改为192.168.0.1,从eth0发出,并在连接跟踪表中查出a.b.c.d是从ppp0进来的,又由ppp0将此数据发出。(我也看不明白为何要有这句话)
iptables-AINPUT-ptcp--dport80-ippp0-jACCEPT
允许80端口访问的语句。
然后重新
/etc/rc.d/init.d/iptablessave
/etc/rc.d/init.d/iptablesrestart

其他如FTP发布也可举一反三:
ptables-tnat-APREROUTING-ptcp-mtcp--dport21-jDNAT--to-destination192.168.0.2:21
iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.2-ptcp-mtcp--dport21-jSNAT--to-source192.168.0.1
iptables-AINPUT-ptcp--dport21-ippp0-jACCEPT


上网的时候,用ifconfig看看ppp0的地址,然后用那个地址看看WWW是否正常发布。呵呵,应该是没问题的哦!


2.关于封QQ,联众和边峰游戏的补充说明

相信很多公司的老板会让网管通过防火墙来封锁QQ,联众和边峰游戏,但又不能耽误其他事,我这里有个简单的配置文件服务器也是通过ADSL上网,能简单的实现以上要求:
iptables-PINPUTDROP
iptables-PFORWARDDROP
iptables-AFORWARD-picmp-jACCEPT开放ping功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport80-jACCEPT开放网页浏览功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport25-jACCEPT开放smtp发信功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport110-jACCEPT开放pop3收信功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport21-jACCEPT开放默认FTP功能
iptables-AFORWARD-ptcp--dport4000-oppp0-jDROP封锁边峰
iptables-AFORWARD-ptcp--dport2000-oppp0-jDROP封锁联众
iptables-AFORWARD-pudp-s192.168.0.0/24--dport8000-jDROP封锁QQ(有时udp4000端口也要封锁)
iptables-AFORWARD-pudp-jACCEPT允许其他UDP服务,比如DNS等

IPTABLES-AFORWARD-pTCP--dport1863-jACCEPT
IPTABLES-AFORWARD-pTCP--dport7801:7825-jACCEPT
IPTABLES-AFORWARD-pTCP--dport6891:6900-jACCEPT
上面三条是开放了MSN,不知行不行?
iptables-tnat-APOSTROUTING-s192.168.1.0/24-oppp0-jMASQUERADE


3.我不想让人家可以PING到我

这大概是做防火墙用到最多的一种了你可以在iptables写这句话
iptables-AINPUT-picmp--icmp-typeecho-request-ippp0-jDROP
分享到:
评论

相关推荐

    在RedHat Linux上安装配置防火墙系统

    在RedHat Linux上安装配置防火墙系统

    RedHat Linux环境下防火墙配置初级入门

    RedHat Linux环境下防火墙配置初级入门

    Redhat关闭SELinux和防火墙的办法.docx

    Redhat关闭SELinux和防火墙的办法.docx

    redhat_linux系统管理笔记

    - **书籍信息**:本书名为《RedHat Linux 9系统管理》,主要针对Linux初学者编写,假设读者具备一定的Linux shell基础。 - **笔记作者**:张启峰(zqf620@gmail.com),该笔记为作者在十一假期期间整理完成,旨在...

    redhat syslog 配置 笔记

    - `DEBUG`: 用于调试的信息。 ##### 3. 特殊符号 - `*`: 表示任何设施(句点前的*)或任何优先级(句点后的*)。 - `none`: 不包括任何优先级。 - `=`: 仅针对该优先级而不包括大于它的优先级。 - `!`: 求反,...

    RedHat企业版笔记

    ### RedHat企业版笔记知识点详解 #### 网络配置与测试 - **ifconfig**:此命令用于显示网络接口的配置详情。通过`ifconfig`可以查看IP地址信息;而`ifconfig -a`则提供了更为详尽的网络配置信息,包括所有活动的...

    RedHat Linux下iptables防火墙设置.docx

    RedHat Linux下iptables防火墙设置.docx

    RedHat9下安装yum

    从描述中看到,提供的压缩包文件名是"RedHat9安装gcc.rar",这应该是包含GCC源码的压缩文件。你需要解压该文件,然后进入解压后的目录。 2. 使用`./configure`命令来配置GCC的编译环境,这个步骤会检测系统环境并...

    redhat9安装中文输入法

    在Red Hat Linux 9操作系统中,用户可能会遇到需要安装中文输入法的需求,以便更方便地进行汉字输入。本文将详细讲解如何使用fcitx-3.0.0-1.i386.rpm这个rpm安装包在Red Hat 9上安装中文输入法。 首先,fcitx是一个...

    Redhat关闭SELinux和防火墙[0分]

    在Redhat系统中,SELinux(Security-Enhanced Linux)与防火墙是其核心安全机制,但有时为了特定的应用需求或解决配置问题,用户可能需要临时或永久地关闭这些服务。下面将详细介绍如何在Redhat系统中关闭SELinux和...

    RedHat9百度云下载链接

    根据提供的信息,我们可以了解到这篇内容主要关注的是Red Hat 9版本的百度云下载链接。由于提供的信息非常有限,我们将基于这个主题展开相关的知识点介绍,包括Red Hat 9的基本信息、安装指南以及使用百度云下载软件...

    RedHat Linux 7防火墙管理机制.pdf

    RedHat Linux 7防火墙管理机制.pdf

    redhat linux 9 三光盘合一的 ISO 文件

    redhat linux 9 三光盘合一的 ISO 文件

    RedHat6 建立基于防火墙和SELinux的虚拟用户vsFTP.docx

    RedHat6 建立基于防火墙和SELinux的虚拟用户vsFTP 知识点一:安装vsFTP * RedHat6 安装vsFTP需要使用yum install vsftpd命令,安装的版本为vsftpd-2.2.2-6.el6.i686 * 为了建立匿名账户的vsFTP,还需要安装db4和...

    redhat9 nvidia 显卡驱动安装

    ### RedHat 9 NVIDIA 显卡驱动安装指南 在Linux环境下,尤其是对于RedHat这样的发行版来说,正确安装显卡驱动对于发挥硬件的最佳性能至关重要。本文将详细介绍如何在RedHat 9系统上安装NVIDIA显卡驱动的过程。通过...

    redhat9下的yum安装包

    在redhat9下直接安装yum ,不需其他关联文件

    在VMware中完全安装Redhat9

    在VMware中完全安装Redhat9的方法。

    经典!Redhat LINUX 9从入门到精通[PDF][44.1MB]

    Redhat LINUX 9从入门到精通[PDF][44.1MB] 中文名称: 红帽子Redhat LINUX 9从入门到精通 英文名称: 无 资源格式: PDF 发行时间: 2009 地 区: 中国 文字语言: 简体中文 文字语言: 简体中文 不用介绍了吧,接触...

    redhat9入门教程

    学习redhat9比较好的一本书,作者写的也很认真

    RedHat9 的安装过程(图解)

    ### RedHat9的安装过程详解 #### 一、准备工作 在开始RedHat9的安装之前,需要做一些必要的准备工作。首先,确保你拥有RedHat9的安装光盘或镜像文件,可以通过官方网站([www.redhat.com](http://www.redhat.com)...

Global site tag (gtag.js) - Google Analytics