导航菜单

基于Netfilter 的Android 防火墙实现

付影平1 马 龙2

(1.西安邮电大学信息中心,陕西 西安 710061;2.西安邮电大学计算机学院,陕西 西安 710061)

【摘 要】本文先是简要地介绍了Android平台中目前存在的安全问题,进而就对本课题的研究意义进行了说明。之后又对Netfilter框架的实现原理进行了探究,引入了iptables在防火墙中的配置规则。在对于配置原理有所了解的基础之上,选择Eclipse作为开发工具完成了程序的开发,并使用DDMS扩展工具和数部手机中分别进行了模拟测试和真机测试,达到了预期的网络权限控制作用,能够对电话和短信黑名单进行过滤。

教育期刊网 http://www.jyqkw.com
关键词 Netfilter;Android;防火墙

作者简介:付影平(1973—),男,西安邮电大学,助理工程师,研究方向为计算机网络安全。

0 引言

随着移动通信网络技术的高速发展及移动互联网的普及,智能手机做为一种便捷的上网设备已被广泛接受。据IDC2014年1月份数据报告,在过去的一年里,智能手机的全球出货量突破10亿,Android智能手机的份额更是占到了78.6%[1]。目前,针对的手机的骚扰电话、短信,病毒的侵袭等问题,国内外有一些解决的办法[2]。但对于手机厂商或者运营商等的定制软件的无端启动连接则没有很好的办法解决。本文分析了手机防火墙的主要工作模式,基于开源软件Netfilter框架提出了一种能综合解决问题的方案。

1 手机防火墙主要功能

1.1 主要功能

手机防火墙的主要功能包括:通信拦截(骚扰电话短信),联网过滤、权限管理三个方面。

与系统的交互主要包括:设置通讯黑名单,设置拦截关键字,在软件权限分级结果上进行添加信任操作,在风险应用启动是弹框提示时进行确认操作和设置禁用联网程序列表。

1.2 安卓手机防火墙的主要实现技术比较

目前,Android网络防火墙是存在其他多种实现方式的,包括了应用层的敏感函数hook、框架层的INTERNET权限,以及基于Netfilter框架的Android防火墙。他们的主要工作模式和优缺点,序号1:工作位置:Android应用层:敏感函数hook;工作原理:通过调用Android Framework来实现网络通讯的,所以遍历对这些类中的所有函数然后把它们一个一个的全部钩起来,这样就可以起到防火墙所需的作用;主要方式:使用对每一个应用本身进行修改的方式加入Hook代码,之后再通过进程注入的方式将Client代码再一次写进每个应用的进程中。当进程存在网络活动时,应用进程会发起IPC请求到Server进程并由Server进程决定是否对其放行;优缺点:优势就体现在无需root也可实现控制不能做到对所有的网络访问入口的拦截对骚扰短信电话拦截需另外开发。序号2:工作位置:Android框架层:android.permission.INTERNET权限;工作原理:在Android操作系统中,任何应用都必须申请android.permission.INTERNET权限后才能访问网络。当Zygote服务fork()到一个AndroidManifest.xml中存在该权限的应用时,会将其加入到inet组中;主要方式:其一是变更应用的AndroidManifest.xml文件来去除对应的权限,其二就是重写Zygote进程阻止其在对说明文件侦测后将inet加入应用的gid组中;优缺点:实现起来不算复杂。

对于一个被设置过的gid组,程序不再拥有修改的权限,虽然能从根本上实现对应用的上网权限禁止,但想再次获得上网权限就必须使用Zygote服务再一次生成对短信电话的拦截需另外开发。序号3:工作位置:Linux内核层:Netfilter/iptables:工作原理:Android操作系统采用的是Linux内核,而在Linux内核中,Netfilter在TCP/IP的协议栈中加入了相应的Hook,我们使用这些链钩子来过滤或者丢弃指定的数据包:主要方式:要利用Linux为我们提供的另一个工具iptables来简化这一步骤:优缺点:不需要进程注入,又能对Wifi和3G网络区分控制。

但需要取得root权限。

2 Netfilter防火墙的关键技术

安卓智能手机系统是基于Linux操作系统的实现。Netfilter是由Rusty Russell提出的内核防火墙框架,该框架分为用户层和内核层部分,在用户层的iptables的作用就是创建出链表规则,完成这些包过滤任务的还是位于内核底层的Netfilter以及相关的一些其它模块。这个机构既简洁又灵活,可实现安全策略应用中的许多功能。

对于一个Linux自带的防火墙来说,Netfilter模块中存放着各种表,每个表中又存在着不同的链,每个链中定义着各式的规则,而iptables需要做的就是控制这些规则的增加、删除、修改等操作,从而达成对网络数据包的控制。

3 手机防火墙的Netfilter的实现

3.1 网络防火墙实现

利用Netfilter实现网络防火墙比较简单,只需要简单的配置好安卓的开发环境,安装好Netfilter代码,建立项目结构,然后以面向对象的方式调用Netfilter所带iptable命令并进行防火墙的搭建就行了。

在Broadcast.java中重写了onReceive方法,这样做可以在启动时就直接调用已经定义好的iptables规则。

MainActivity.java的作用就是定义程序的界面,它继承Activity类,所有的交互都在这个类中实现。

Interface.java在这个项目中承担着对常量数据进行定义,配置生成iptables脚本文件,生成App信息等非常重要的工作,同时需要指出的是,SharePreference是Android中提供的一种用来存放简单配置信息的数据类型,在这里正是使用的这种机制解决的iptables规则存放问题。

3.2 电话短信防火墙

Android上的广播存在着两种不同的类型,一般情况下的广播是异步的,这样会被每一个接收者同时得到,这样做是没办法实现拦截的,所以我们需要使用有序广播的方式,提高优先级获得广播。此时对于需要拦截的情况,只要终止广播就可以实现黑名单拦截。

4 结论

自Android正式进入4.0时代以来,整个系统的长足进步是每个人都看在眼里的,但是作为一把双刃剑的开源政策在为Android拉拢来众多人气的同时,也必须为现在这种“碎片化”的状况买单。

Netfilter框架作为一种很好的开源防火墙的软件实现,因为有了iptable命令规则的配置使用而变得比较简单了,是的我们可以按照自己的意愿来进行手机的防护,对手机安全不失为一种好的办法。

教育期刊网 http://www.jyqkw.com
参考文献

[1]李刚.疯狂Android讲义[M].2版.电子工业出版社,2014,02,01.

[2]徐娟娟,李玲玲.基于Netfilter的防火墙原理分析[J].安徽淮南:信息产业,2011.

[3]康海燕,陈然,苑晓姣,李清华.基于Android防火墙日志系统的研究与实现[J].北京:北京信息科技大学学报,2012,8.

[4]张磊.基于系统的手机防火墙的设计与实现[J].应用研发,2013.

[5]张苏颖.基于Android系统的手机防火墙的设计及实现研究[J].信息与电脑,2012,12.

[责任编辑:刘展]

下载文本