配置linux iptables(iptables配置文件详解)

大家好,感谢邀请,今天来为大家分享一下配置linux iptables的问题,以及和iptables配置文件详解的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

linux中iptables防火墙怎么设置

Linux系统内核内建了netfilter防火墙机制。Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放行或阻挡的机制。Netfilter提供了iptables这个程序来作为防火墙数据包过滤的命令。Netfilter是内建的,效率非常高。

我们可以通过iptables命令来设置netfilter的过滤机制。

iptables里有3张表:

> Filter(过滤器),进入Linux本机的数据包有关,是默认的表。

> NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。

> Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,对这个表的修改破坏性很大,慎改之)。

每张表里都还有多条链:

Filter:INPUT, OUTPUT, FORWARD

NAT:PREROUTING, POSTROUTING, OUTPUT

Mangle:PREROUTING, OUTPUT, INPUT, FORWARD

iptables命令的使用

基本格式:iptables [-t table]-CMD chain CRETIRIA-j ACTION

-t table:3张表中的其中一种filter, nat, mangle,如果没有指定,默认是filter。

CMD:操作命令。查看、添加、替换、删除等。

chain:链。指定是对表中的哪条链进行操作,如filter表中的INPUT链。

CRETIRIA:匹配模式。对要过滤的数据包进行描述

ACTION:操作。接受、拒绝、丢弃等。

查看

格式:iptables [-t table]-L [-nv]

修改

添加

格式:iptables [-t table]-A chain CRETIRIA-j ACTION

将新规则加入到表table(默认filter)的chain链的最后位置

插入

格式:iptables [-t table]-I chain pos CRETIRIA-j ACTION

将新规则插入到table表(默认filter)chain链的pos位置。原来之后的规则都往后推一位。pos的有效范围为:1~ num+1

替换

格式:iptables [-t table]-R chain pos CRETIRIA-j ACTION

用新规则替换table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1~ num

删除

格式:iptables [-t table]-D chain pos

删除table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1~ num

包匹配(CRETIRIA)

上面没有介绍CRETIRIA的规则,在这小节里详细介绍。包匹配就是用于描述需要过滤的数据包包头特殊的字段。

指定网口:

-i:数据包所进入的那个网络接口,例如 eth0、lo等,需与INPUT链配合

-o:数据包所传出的那么网络接口,需与OUTPUT链配合

指定协议:

-p:tcp, udp, icmp或all

指定IP网络:

-s:来源网络。可以是IP或网络

IP: 192.168.0.100

网络: 192.168.0.0/24或 192.168.0.0/255.255.255.0均可

可以在前加!表示取反

-d:目标网格。同-s

指定端口:

--sport:指定来源端口。可以是单个端口,还可以是连续的端口,例如:1024:65535。

--dport:指定目标端口。同--sport

注意:要指定了tcp或udp协议才会有效。

指定MAC地址:

-m mac--mac-source aa:bb:cc:dd:ee:ff

指定状态:

-m state--state STATUS

STATUS可以是:

> INVALID,无效包

> ESTABLISHED,已经连接成功的连接状态

> NEW,想要新立连接的数据包

> RELATED,这个数据包与主机发送出去的数据包有关,(最常用)

例如:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃

-m state--state RELATED,ESTABLISHED

ICMP数据比对

ping操作发送的是ICMP包,如果不想被ping到,就可以拒绝。

--icmp-type TYPE

TYPE如下:

8 echo-request(请求)

0 echo-reply(响应)

注意:需要与-p icmp配合使用。

操作(ACTION)

DROP,丢弃

ACCEPT,接受

REJECT,拒绝

LOG,跟踪记录,将访问记录写入/var/log/messages

保存配置

将新设置的规则保存到文件

格式:iptables-save [-t table]

将当前的配置保存到/etc/sysconfig/iptables

其它

格式:iptables [-t table] [-FXZ]

-F:请除所有的已制订的规则

-X:除掉所有用户“自定义”的chain

-Z:将所有的统计值清0

Linux下针对路由功能配置iptables的方法详解

作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、dns缓存、流量控制、应用程序控制,nat地址转换通过iptables可以直接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz来实现

1、网络规划

操作系统是centos5.8

2、安装dhcpd

代码如下:

yum install dhcp-3.0.5-31.el5

vim/etc/dhcp/dhcpd.conf

ddns-update-style interim;

ignore client-updates;

subnet 10.0.0.0 netmask 255.255.255.0{

option routers 10.0.0.1;

option subnet-mask 255.255.255.0;

option domain-name-servers 10.0.0.1;

range dynamic-bootp 10.0.0.100 10.0.0.200;

default-lease-time 21600;

max-lease-time 43200;

}

3、安装bind,实现dns缓存

代码如下:

yum install bind97.i386 bind97-libs.i386 bind97-utils.i386

vim/etc/named.conf

options{

directory"/var/named";

allow-recursion{ 10.0.0.0/24;};

recursion yes;

forward first;#将所有请求都进行转发

forwarders{ 114.114.114.114;};#定义转发服务器地址

};

zone"." IN{

type hint;

file"named.ca";

};

zone"localhost" IN{

type master;

file"named.localhost";

allow-transfer{ none;};

};

zone"0.0.127.in-addr.arpa" IN{

type master;

file"named.loopback";

allow-transfer{ none;};

};

创建根域文件,默认有

代码如下:

dig-t NS./var/named/named.ca

chown:named/var/named/named.ca

创建本地正向解析文件,默认有

代码如下:

vim/var/named/named.localhost

$TTL 1D

@ IN SOA@ rname.invalid.(

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS@

A 127.0.0.1

chown:named/var/named/named.localhost

创建本地反向解析文件,默认有

代码如下:

vim/var/named/named.loopback

$TTL 1D

@ IN SOA@ rname.invalid.(

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS@

A 127.0.0.1

PTR localhost.

chown:named/var/named/named.loopback

检查主配置文件

代码如下:

named-checkconf

检查根区域配置文件

代码如下:

named-checkzone“.”/var/named/named.ca

检查区域文件

代码如下:

named-checkzone“localhost”/var/named/named.localhost

启动服务

代码如下:

service named start

4、重新编译编译内核和iptables以支持应用层过滤

由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.22作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库17-protocols-2009-05028.tar.gz

1、给内核打补丁,并重新编译内核

2、给iptables源码打补丁,并重新编译iptables

3、安装17proto

备份iptables脚本和配置文件

代码如下:

cp/etc/rc.d/init.d/iptables/root/iptables.sysv

cp/etc/sysconfig/iptables-config/root/iptables-config

2.6内核下载地址

netfilter下载地址

iptables源码下载地址

应用程序特征码库下载地址

代码如下:

xz-d linux-2.6.28.10.tar.xz

tar-xvf linux-2.6.28.10.tar.gz-C/usr/src#新的内核源码,用于重新编译

tar-zxvf netfilter-layer7-v2.22.tar.gz-C/usr/src#内核补丁和iptables补丁,只支持到2.6.28

#进入解压目录并创建软连接

pcd/usr/src

ln-sv linux-2.6.28.10 linux

#进入内核目录

pcd/usr/src/linux

#为当前内核打补丁

ppatch-p1../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.path

#为了方便编译内核将系统上的内核配置文件复制过来

pcp/boot/config-2.6.18-164.el5/usr/src/linux/.config

编译内核

代码如下:

make menuconfig

Networking support- Networking Options- Network packet filtering framework- Core Netfilter Configuration

Netfilter connection tracking support

"lawyer7" match support

"string" match support

"time" match support

"iprange" match support

"connlimit" match support

"state" match support

"conntrack" connection match support

"mac" address match support

"multiport" Multiple port match support

Networking support- Networign options- Network packet filtering framework- IP:Netfiltr Configuration

IPv4 connection tracking support(required for NAT)

Full NAT

MASQUERADE target support

NETMAP target support

REDIRECT target support

在Networking support中选择 Networking options

查找Network packet filtering framework(Netfilter)–Core Netfiler Configrationg–Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”

查找IP:Netfilter Configuration–IPv4 connection tracking support,Full NAT(NEW)

代码如下:

make

make modules_install

make install

重启操作系统选择新内核登录

卸载旧的iptables

代码如下:

rpm-e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5--nodeps

安装新的iptables,以支持新的netfiler模块

代码如下:

tar-jsvf iptables-1.4.6.tar.bz2-C/usr/src

cd/usr/src/netfilter-layer7-v2.23

cd iptables-1.4.3forward-for-kernel-2.6.20forward

cp*/usr/src/iptables-1.4.6/extensions/

cd/usr/src/iptables-1.4.6/

./configure--prefix=/usr--with-ksource=/usr/src/linux

make

make install

查看安装后的iptables的文件

代码如下:

ls/usr/sbin|grep iptables

ls/usr/libexec/xtables

复制之前备份的配置文件和脚本

代码如下:

cp/root/iptables-config/etc/sysconfig/

cp/root/iptables.sysv/etc/rc.d/init.d/iptables

修改脚本中iptables的路径

代码如下:

vim/etc/rc.d/init.d/iptables

:.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g

让iptables服务开机自动启动

代码如下:

chkconfig--add iptables

修改iptables配置文件

将/etc/sysconfig/iptables-config中的

IPTABLES_MODULES=”ip_conntrack_netbios_ns”注释掉

安装协议特征码

代码如下:

tar xvf 17-protocols-2009-05028.tar.gz

make install

完成后在/etc/l7-protocols会生成文件

支持的协议/etc/l7-protocols/protocols

添加iptables策略,运行内部网络上网,禁止qq和视频

代码如下:

iptables-t nat-A POSTROUTING-s 10.0.0.0/24-j SNAT--to-soure 192.168.6.67

iptables-A FORWARD-m layer7--l7proto qq-j DROP

iptables-A FORWARD-m layer7--l7proto httpvideo-j DROP

iptables-A FORWARD-m layer7--l7proto httpaudio-j DROP

指定8点到12点无法上网

复制代码

代码如下:

iptables-A FORWARD-m time--timestart 08:00--timestop 12:00-j DROP

5、使用tc控制带宽

例如公司出口带宽是10Mbps,个用户A分配500KB的最大下载带宽,给用户B分配分配的最大下载带宽是200KB

A用户ip:10.0.0.100

B用户ip:10.0.0.101

代码如下:

#在eth0网卡上创建一个根队列规则,队列规则的算法使用htb,default 2表示指定一个默认类别编号,默认的流量控制策略,如果ip没有在后面的filter中被匹配到就都是有这个策略

tc qdisc add dev eth0 root handle 1:0 htb default 2

#在eth0网卡上定义一个类,prant 1:0中的1对应根队列规则中的handle 1:0,classid 1:2表示当前这个类的标识,用于应用在后面的得到filter中,rate 200kbsp表示带宽为200KB/s,ceil 200kbps表示最大带宽也为200KB/s,prio 2是优先级

tc class add dev eth0 parent 1:0 classid 1:2 htb rate 200kbps ceil 200kbps prio 2

tc class add dev eth0 parent 1:0 classid 1:3 htb rate 500kbps ceil 500kbps prio 2

#将两个类的默认的fifq队列规则改为sfq

tc qdisc add dev eth0 parent 1:2 handle 20 sfq

tc qdisc add dev eth0 parent 1:3 handle 30 sfq

#在网卡eth0上的1:0节点(对应qdisc中的handle 1:0)添加一个u32过滤规则,优先级为1,凡是目标地址是10.0.0.100的数据包都使用1:2类(对应classid为1:2的类)

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.100 flowid 1:2

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.101 flowid 1:3

如果还有其他用户例如用户C和D的ip是102、103,要求的下载带宽也要求500那么在加入

代码如下:

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.102 flowid 1:3

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.103 flowid 1:3

清除eth0上的规则

代码如下:

tc qdisc del dev eth1 root/dev/null

在linux 下如何设置iptables 防火墙

Iptable-A Input-p Tcp-d自己的IP地址 b--dPort端口-J Reject

RedHat机器

cat/etc/sysconfig/iptables

*filter

:INPUT ACCEPT [10276:1578052]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [13784:16761487]

-A INPUT-s 10.0.0.0/255.0.0.0-i eth1-j DROP

-A INPUT-s 172.16.0.0/255.240.0.0-j DROP

-A INPUT-s 192.168.0.0/255.255.0.0-i eth1-j DROP#eth1 is interface to internet

# anti Sync Flood

-A FORWARD-p tcp-m tcp--tcp-flags SYN,RST,ACK SYN-m limit--limit 1/sec-j ACCEPT

# anti some port scan

-A FORWARD-p tcp-m tcp--tcp-flags FIN,SYN,RST,ACK RST-m limit--limit 1/sec-j ACCEPT

# anti ping of death

-A FORWARD-p icmp-m icmp--icmp-type 8-m limit--limit 1/sec-j ACCEPT

COMMIT

chkconfig iptables on

以后每次启动iptables就会自动读取配置文件(/etc/sysconfig/iptables)

自动启动

或者是/etc/rc.d/init.d/iptables start手工启动

/etc/rc.d/init.d/iptables stop手工停止

在LINUX下架设防火墙

linuxbird

随着Internet的普及,人们的日常工作与之的关系也越来紧密,因而越来越多的单位为员工开设了Internet的代理上网服务。但当一个企业的内部网络接上Internet之后,企业的内部资源就象待卖的羔羊一样,面临任人宰割的危险,因而系统的安全除了考虑计算机病毒、系统的健壮性等内部原因之外,更主要的是防止非法用户通过Internet的入侵。而目前防止的措施主要是靠防火墙的技术完成。

一、什么是防火墙

防火墙(firewall)是指一个由软件或和硬件设备组合而成,处于企业或网络群体计算机与外界通道(Internet)之间,限制外界用户对内部网络访问及管理内部用户访问外界网络的权限。主要是控制对受保护的网络(即网点)的往返访问,逼使各连接点的通过能得到检查和评估。

从诞生到现在,防火墙已经历了四个发展阶段:基于路由器的防火墙、用户化的防火墙工具套、建立在通用操作系统上的防火墙、具有安全操作系统的防火墙。目前防火墙供应商提供的大部分都是具有安全操作系统的软硬件结合的防火墙,象NETEYE、NETSCREEN、TALENTIT等。在LINUX操作系统上的防火墙软件也很多,除了下面要专门介绍的IPCHAINS外,还有很多,如:Sinus Firewall、Jfwadmin等。

目前的防火墙从结构上讲,可分为两种:

1)代理主机结构

内部网络<----->代理网关(Proxy Gateway)<----->Internet

2)路由器加过滤器结构

内部网络<----->过滤器(Filter)<---->路由器(Router)<---->Internet

二、用IPCHAINS构建局域网防火墙的原理

其实从本质上讲,用IPCHAINS构建局域网防火墙也是一种C/S模式的交互式的应用。一般服务器提供某特定功能的服务总是由特定的后台程序提供的。在TCP/IP网络中,常常把这个特定的服务绑定到特定的TCP或UDP端口。之后,该后台程序就不断地监听(listen)该端口,一旦接收到符合条件的客户端请求,该服务进行TCP握手后就同客户端建立一个连接,响应客户请求。与此同时,再产生一个该绑定的拷贝,继续监听客户端的请求。

IPCHAINS就是这样的一个SERVER。对内部网通往Intenet的请求,或从外部通往内部网的请求,都进行监听、检查、评估、转发、拒绝等动作。

常用的服务、协议与默认端口。

服务类型协议端口

WWW TCP/UDP 80

TELNET

ICMP

SMTP

POP3

FTP

DNS

三、用IPCHAINS作防火墙的步骤

1.安装

IPCHAINS现在的版本已经发展到1.3.9。一般在安装LINUX时都会安装上,如果没有的话可以到www.linux.org下载。下面笔者一TLC4.0为例安装IPCHAINS。由于它需IP-MASQ的支持,所以确定已安装了IP-MASQ模块。

在TLC4.0中,把该光盘放入光驱中,

#turbopkg

并选择ipchains,然后按OK就自动自动安装了。

如果你是下载ipchains安装包的话:

1)如果是rpm包:

#rpm–ivh*.rpm

2)如果是.tar.gz包

#tar xvfz*.tar.gz(先把包解开)

再到解开目录

#./configure

#make

#make install

这样就安装成功了。

2.启用ipchains

手工修改/proc/sys/net/ipv4/ipforward文件,将其内容置为1。

在/etc/rc.d/目录下用touch命令建立rc.ipfwadm文件

在/etc/rc.d/目录下的rc.local文件中加上下面这段代码:

if [-f/etc/rc.d/rc.ipfwadm ]; then/etc/rc.d/rc.ipfwadm; fi;

以后所有的ipchains的配置命令都将在rc.ipfwadm文件里修改。

3.配置ipchains(基本应用)

ipchains对机器的管理是通过对机器的ip地址作为标志的,因而首先得确保你的局域网的机器的ip地址已经配分配好,并且你对之相当熟悉。

Ipchains的配置规则一般是围绕着input、output、ipforward这三个规则进行的,其中input是指对内连接请求的过滤规则,output是指对外连接请求的过滤规则,ipforward是指对内部与外部通讯包的转发。Ipchains的命令格式一般是:

ipchains [ADC] ipchains规则 [ipchains选项]。

有关命令的详细用法请参考有关HOWTO文档。

现在我们假设企业的内部网网段为192.168.1.0~192.168.1.255.其中防火墙的主机的IP地址为:192.168.1.1,假设目前防火墙是进行代理上网,拒绝所有的外部telnet。对内部用户访问外部站点进行限制、并授予一些机器特权可任意访问外部机器、拒绝内部某些机器访问Internet等。网段示意图为:

+--------------+

|内部网段| 192.168.1.1 ISDN、PSDN

|+------------|firewall|<===============>Internet

| 192.168.1.0|+--------+

+--------------+

配置ipchains防火墙规则一般有两种方式:

1)首先允许所有的包,然后在禁止有危险的包通过防火墙;

2)首先禁止所有的包,然后再根据所需要的服务允许特定的包通过防火墙。

相比较而言,第二种方式的做法更为安全。

下面是我的rc.ipfwadm的文件内容:

/sbin/depmod–a

/*自动加载所需模块,如果觉得这样有危险,需手动指定安装模块,可以如下面这一小段就是手动指定加载模块*/

#/sbin/modprobe/lib/modules/2.2.10/ipv4/ip_masq_ftp

/*加载ip伪装的ftp模块*/

#/sbin/modprobe/lib/modules/2.2.10/ipv4/ip_masq_irc

/*加载ip伪装的irc模块*/

#/sbin/modprobe/lib/modules/2.2.10/ipv4/ip_masq_raudio

#/sbin/modprobe/lib/modules/2.2.10/ipv4/ip_masq_user

#/sbin/modprobe/lib/modules/2.2.10/ipv4/ip_masq_autofw

/sbin/modprobe-a-t/lib/modules/2.2.10/ipv4/ip_masq*

/*自动加载ip伪装的相关模块*/

ipchains–F

/*刷新所有的ipchains规则*/

ipchains-P forward DENY

/*拒绝转发所有的ip包*/

/*下面允许特定的包通过*/

/*开设权限比较高的主机*/

ipchains-A forward-s 192.168.1.10/32-j MASQ

/*允许内部的192.168.1.10主机不受限制访问。比如总经理*/

ipchains-A forward-s 192.168.1.12/32-j MASQ

/*允许内部的192.168.1.12主机不受限制访问。比如系统管理员,在依次添加*/

ipchains-A forward-s 192.168.1.41/32-j MASQ

/*for example linuxbird的主机地址:192.168.1.41*/

/*某些机器,因需要不能对外连接*/

ipchains-A forward-s 192.168.1.3/32-j DENY

/*此机器为内部文档专用机,不能访问外部*/

/*设置内部普通用户能访问的站点*/

ipchains-A forward-d 202.101.98.55/32-j MASQ# FJ-DNS

ipchains-A forward-d 202.101.0.133/32-j MASQ# FJ-DNS

/*这是上网的DNS服务器,本人用的是福州电信局的DNS*/

/*以下是普通用户能访问的站点,根据需要可以对其增删改*/

ipchains-A forward-d 202.101.98.50/32-j MASQ

/* public.fz.fj.cn*/

ipchains-A forward-d 202.101.98.60/32-j MASQ

/* pub5.fz.fj.cn*/

ipchains-A forward-d 202.96.44.14/24-j MASQ

/*freemail.263.net*/

ipchains-A forward-d 202.99.11.120/32-j MASQ

/*www.linuxaid.com.cn*/

ipchains-A forward-d 205.227.44.44/24-j MASQ

/* www.oracle.com*/

ipchains-A forward-d 205.227.44.46/32-j MASQ

/* lliance.oracle.com*/

#ipchains-A forward-d 205.227.44.237/32-j MASQ

/* support.oracle.com*/

ipchains-A forward-d 209.246.5.38/24-j MASQ

/* technet.oracle.com*/

ipchains-A forward-d 137.69.200.8/32-j MASQ

/* www.legato.com*/

ipchains-A forward-d 202.96.125.102/32-j MASQ

/*www.188.net*/

ipchains-A forward-d 207.105.83.51/32-j MASQ

/* www.borland.com*/

ipchains-A forward-d 207.46.131.30/24-j MASQ

/* www.microsoft.com*/

ipchains-A forward-d 207.46.130.30/24-j MASQ

/* www.microsoft.com*/

ipchains-A forward-d 204.146.81.99/32-j MASQ

/* www.ibm.com*/

ipchains-A forward-d 202.102.24.74/24-j MASQ

/* www.lodesoft.com*/

ipchains-A forward-d 210.77.34.109/32-j MASQ

/* www.csdn.net*/

ipchains-A forward-d 192.138.151.66/32-j MASQ

/* www.sybase.com*/

ipchains-A forward-d 202.102.26.1/32-j MASQ

/* www.nari-china.com*/

ipchains-A forward-d 202.102.26.51/32-j MASQ

/*www.aeps-info.com*/

ipchains-A forward-d 202.106.185.2/32-j MASQ

/* www.sohu.com*/

……

阅读剩余
THE END