荣新IT培训中心
全国咨询热线:400-1335-066
您现在的位置:首页>技术文章 > 正文

linux下iptables的配置和使用

时间:2018-02-11 14:21:00 来源:荣新IT教育培训 作者:荣新科技

linux下,iptables的配置和使用还是比较重要的,今天就来简单分享下这些,大家一起来看看吧。

linux下iptables的配置和使用

启动和中止

1、指令:

仿制代码代码如下:

service iptables start/stop/restart

或许直接去找/etc/init.d/下的

2、装备文件:

/etc/sysconfig/iptables

没有的话,能够用iptables-save生成

框架: tables > chains > rules(target)

全体上能够为iptables就是由许多chain组成的,要不然其老版本怎样叫做ipchains呢。可是区分层次为:

一个table可由多个chain组成,一个chain可由多个rules组成(一个rule对应一个target)。

target概念的优点是:体系预置了一些target,如ACCEPT,DROP,REJECT,LOG等,意思是假如这个包匹配这条rule,其处理办法就是target。这儿引入target的优点在于,答应用户自定义一条chain,然后用chain名做为新的target,这样,就能够聚合一些rule!形成了层次性的rule,就是说假如满意这条rule,那么再看其target里边的rule。

1、iptables由四张table组成,每张table由默许的chain组成:

(1)filter: 默许有三个chain——INPUT,OUTPUT和FORWARD

(2)nat: 做NAT作业,默许三个chain——OUTPUT,PREROUTING,POSTROUTING

(3)mangle: 对包的一些参数进行修正,默许有五个chain——INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

(4)raw:作用未明,默许有两个chain——OUTPUT,PREROUTING

不同的table分担不同的方面。iptables的默许指令是对filter收效。能够用-t nat指定对nat收效。

2、所谓的装备防火墙就是:

(1)向chain添加rule:

每个chain都是由一系列rule组成的,比方你要更改INPUT这个chain来答应用户拜访你机器上的某个端口。

比方这个INPUT有两个rule,一个用于答应用户拜访你的5901端口,一个用于答应用户拜访你的5902端口

一般安全战略:

1、从最严厉的安全措施开端,当你发现有用的东西不能作业时再一点点儿的放宽极限。

2、防火墙不能当作防备侵略的首要手法,它只能作为每台主机上独立保护措施的一个补充算了。每台主机上的独立保护措施包括crack,tcpd,nmap,COPS,tripwire和相应的战略。

规矩和指令:

规矩很简单,相应的包,会交给相应的内置chain,然后对于chain中的rules,是从上到下的次序进行匹配,和break句子相同。所以,比方你要敞开某些端口,就写上面,最终才写关闭一切端口。

静态规矩:

1、iptables -F chain-name:

铲除名为chain-name的chain中的一切rule,只写-F铲除一切的chain中的一切rule,但保存chain。

这默许只对filter table的。假如要铲除如nat table的,要用 iptables -t nat -F

2、iptables -P chain-name target:

给名为chain-name的chain设置默许的rule。这个通常是放在给该chain设置的一切rule的最初。相当于break句子中的default。 留意,假如给nat或mangle中的chain设置,则别忘了用 -t table。 可是留意的是,这儿的target只能用内置的

3、iptables -A chain-name rule

给名为chain-name的chain添加一条规矩,后边rule是一下的组合:

-j target 预置target或用户自定义的chain

-i interface 如eth0

-p proto 协议,有tcp,udp

-s source-ip 源ip

-d dest-ip 意图ip

--sport source-port 源端口

--dport dest-port 意图端口

--icmp-type type 匹配ICMP类型,比方你答应哪些类型的ICMP包经过,后边跟数字

! 否定

-t table

4、iptables -I chain-name rulenum rule:

这个和-A的区别是:刺进,而不是加在结尾。rulenum为1表明加在最前面。

5、iptables -X chain-name:

删去非体系内置(用户自定义)的chain,这个不同于-F,这个是把chain整个删去,名字都没了,即你用iptables -L -v看不到了。

6、iptables -D chain-name rule/rulenum

这个同iptable -A chain-name rule完全相反,假如你要删去chain-name中的一条rule,就依照-A时的写法就能够删去之。或许用rulenum,即该chain的从上往下数的num数,第一条rule的rulenum为1。

7、iptables -L chain-name

打印名为chain-name的chain的rules。不给出chain-name,则打印一切chain。

8、iptables -L -v chain-name

在6的基础上加了些有用信息,如从开机到现在,匹配每条rule的包的数量!

动态规矩: 针对connection(TCP衔接)

1、有三种动态参数:

NEW:指收到的第一次TCP衔接

ESTABLISHED:当衔接树立后,属于该connection的包

RELATED:当衔接树立后,又有相关的衔接树立(典型的是ftp的passive形式,由client建议到server的数据衔接,这个端口是由server指定的,但由client建议)

2、指令:

仿制代码代码如下:

iptables -A INPUT -m state --state NEW -j DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

上面两条指令,回绝一切NEW的外来包。但答应自己宣布的衔接收到外来的数据(ESTABLISHED)

再加上:

仿制代码代码如下:

iptables -A INPUT -p tcp -dport 21 -j ACCEPT

iptables -A INPUT -p udp -dport 21 -j ACCEPT

则表明能够答应外界拜访21端口(FTP,并假定选用passive形式),结合上面的状况,则答应外界自动建议到自己的ftp数据衔接———可能是恣意端口,但这儿已不必写了!!

所以,一般,先写上动态规矩,然后再写静态规矩,就能够做到处理一些像FTP Passive形式这种不知道用户会拜访哪个端口的状况。

3、留意:

有状况的规矩需求内核相应模块支撑,假如没有编译进,或没有加载,则不会收效的。

iptables对恳求的URL作IP拜访操控

下面来看一个实例。

服务器运转环境是Tomcat,现在要完成的意图是,只答应特定的IP拜访某个目录,

一种办法是在tomcat装备文件server.conf中,运用RemoteAddrValve对虚拟主机做拜访操控。

别的一种办法能够经过iptables规矩。个人比较喜爱iptables

例如:制止拜访http://192.168.137.254:10000/managersns 这个途径,只答应192.168.137.101拜访

仿制代码代码如下:

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP

以上规矩是正对eth0网卡,能够盯梢自己需求修正。

参数说明:

-m string

运用string功用,string是iptables的一个module,也就是做字符串匹配的。

–string “xxxx”

定义字符串内容,能够是URL里恣意字符,假如是需求block下载某些类型的文件或恳求,这个有很大的发挥空间,可自在幻想喔。

–algo bm

设置字符匹配的查询算法,一般默许运用bm算法作用就能够了,别的还能够设置kmp算法,那是一种更杂乱的算法,具体内容可自行拜见高等数学里的材料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)

-j DROP

这在公司网络禁用视频网站是非常有效的,在网关服务器上设置:

仿制代码代码如下:

iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP

iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP

iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP

iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP

其间各项参数的含义如下:

-A FORWARD

添加FORWARD链的规矩,以上规矩是针对启用了路由功用(即:echo 1 > /proc/sys/net/ipv4/ip_forward)

假如是直接拜访,可运用的INPUT或OUTPUT。

设置契合此条件的包的处理方式,DROP即是丢弃,也是reject的意思。

仿制代码代码如下:

iptables -A INPUT -m string --string "stringname" --algo bm -j DROP

 
文章源自荣新教育官网:www.vfast.com.cn欢迎访问,转载需注明出处