APP下载

基于Netfilter的Android防火墙实现

2015-12-25付影平

科技视界 2015年18期
关键词:优缺点内核进程

付影平 马 龙

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

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 命令并进行防火墙的搭建就行了。

图1 项目结构

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

图2 重写onReceive 方法

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

图3 MainActivity.java

图4 ScriptThread

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

3.2 电话短信防火墙

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

图5 类PhoneReceiver

4 结论

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

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

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

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

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

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

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

猜你喜欢

优缺点内核进程
紫外消毒在给水处理中的优缺点分析
强化『高新』内核 打造农业『硅谷』
债券市场对外开放的进程与展望
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
深度学习优缺点的剖析
ICP-MS与AAS、AFS测定土壤中汞、铅、镉、铜的优缺点
社会进程中的新闻学探寻
我国高等教育改革进程与反思
Linux僵死进程的产生与避免