当前位置:首页 > 科技 > 正文内容

利用Iptables实现网络黑白名单防火墙怎么设置(防火墙白名单在哪里设置)

2019-05-29 23:48:05科技1017

大家好,今天就和小月一起来看看这个问题吧 。防火墙白名单在哪里设置,利用Iptables实现网络黑白名单防火墙怎么设置很多人还不知道,现在让我们一起来看看吧!

具体步骤

利用Iptables实现网络黑白名单防火墙怎么设置(防火墙白名单在哪里设置)

二、Iptables网络黑白名单(防火墙)实现细节

因为考虑到一些权限的问题所以在实现方法上采用的是创建一个系统服务器来运行这些方法。并提供出经理到三方应用,这样在调用时可以排除一些权限的限制。同时本文只是做一个简单的参考概述,所以在后文中只提供了增加黑白名单的方法和防火墙规则,并没有提供相应的删除规则等,原理类似大家可自行补充添加。

2.1、创建系统服务器

2.1.1、 在/system/sepolicy/service.te中添加

fxjnet_service,system_api_service,system_server_service,service _ manager _ type

2.2.2、在/system/se策略/服务上下文中添加如下,

fxjnet u : object _ r : fxjnet _ service :s 0

2.2.3、在框架/base/core/Java/Android/content/context。爪哇中添加

也可以不添加这个,只不过为了后面调用方便所以添加了。如果跳过此步,那么后面出现语境FXJNET_SERVICE的地方都用字串代替即可。

公共静态最终字符串FXJNET _ SERVICE=' fxjnet

2.2.4、在/frameworks/base/core/Java/Android/app/systemserviceregistry。爪哇的静态代码块中添加如下代码注册服务。

注册服务(上下文FXJNET_SERVICE,FXJNETManager.class,

新CachedServiceFetcher() {

@覆盖

公共FXJNETManager创建服务(ContextImpl ctx) {

服务经理。获取服务(上下文. FXJNET _ SERVICE);

IFXJNETService service=IFXJNETService .存根。作为接口(b);

返回新的FXJNETManager(ctx,服务);

}});

2.2.5、在框架/基础/服务/Java/com/Android/服务器/系统服务器。爪哇中添加如下代码,将服务加入系统服务器中。

ServiceManager.addService(上下文. FXJNET_SERVICE,new FXJNET SERVICE());

2.2.6、AIDL文件

打包android.os

接口IFXJNETService{

void addNetworkRestriction(List IP name,int type);

}

2.2.7、提供给外部的FXJNETManager

打包android.app

导入安卓。OS。ifxjnetservice

导入安卓。OS。远程异常;

导入安卓。内容。语境;

公共类FXJNETManager{

IFXJNETService mService

公共FXJNETManager(上下文ctx,IFXJNETService服务){

mService=服务;

}

public void addNetworkRestriction(List IP name,int type) {

尝试{

mservice。addnetworkrestriction(IP名称,类型);

}catch(远程异常e){

}

}//结束添加网络

  }

  2.2.8、系统服务即AIDL的实现server

  package com.android.server;

  import android.os.IFXJNETService;

  import java.io.File;

  import java.io.FileOutputStream;

  import java.io.IOException;

  public class FXJNETService extends IFXJNETService.Stub {

  final File file = new File("/data/fxj/", "firewall.sh");

  /**

  * 增加{网络IP访问}黑白名单数据

  */

  public void addNetworkRestriction(List ipName,int type) {

  String str= getIPlist(type,ipName);

  setiptablesRestriction();

  }

  //构建Iptables的规则,1-黑名单 ;2-白名单

  private String getIPlist(int type,List iplist){

  StringBuilder sb = new StringBuilder();

  sb.append("echo runscript start\n");

  sb.append("iptables -F OUTPUT\n");

  if (type == 1){

  if (iplist != null && iplist.size() > 0){

  for (int i = 0 ; i < iplist.size() ;i++){

  String ipname = iplist.get(i);

  sb.append("echo blacklist mode\n");

  sb.append("iptables -I OUTPUT -d ");

  sb.append(ipname);

  sb.append(" -j DROP\n");

  }

  }

  }else if (type == 2){

  if (iplist != null && iplist.size() > 0){

  for (int i = 0 ; i < iplist.size() ; i++){

  String ipname =iplist.get(i);

  sb.append("echo whitelist mode\n");

  sb.append("iptabless -P OUTPUT DROP\n");

  sb.append("iptables -I OUTPUT -d ");

  sb.append(ipname);

  sb.append(" -j ACCEPT\n");

  }

  }

  }

  sb.append("run script end\n");

  return sb.toString();

  }

  private void setiptablesRestriction(String ipName){

  final FXJScriptRunner runner = new FXJScriptRunner(file,ipName,new StringBuilder());

  new Thread(new Runnable() {

  @Override

  public void run() {

  runner.run();

  }

  }).start();

  }

  }

  2.2.9、运行IPTABLES脚本命令的工具类

  package com.android.server;

  import java.io.File;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.OutputStreamWriter;

  import android.os.FileUtils;

  import android.os.SystemProperties;

  import android.util.Log;

  public class FXJScriptRunner extends Thread{

  private final File file;

  private final String script;

  private final StringBuilder res;

  public int exitcode = -1;

  private final String TAG = "ScriptRunner" ;

  public ScriptRunner(File file, String script, StringBuilder res,

  boolean asroot) {

  this.file = file;

  this.script = script;

  this.res = res;

  }

  @Override

  public void run() {

  // TODO Auto-generated method stub

  try {

  file.delete();

  file.createNewFile();

  final String abspath = file.getAbsolutePath();

  // make sure we have execution permission on the script file

  FileUtils.setPermissions(abspath, 00700, -1, -1);

  Runtime.getRuntime().exec("chmod 777 " + abspath).waitFor();//给创建的sh文件设置权限

  // Write the script to be executed

  final OutputStreamWriter out = new OutputStreamWriter(

  new FileOutputStream(file));

  if (new File("/system/bin/sh").exists()) {

  out.write("#!/system/bin/sh\n");

  }

  out.write(script);

  if (!script.endsWith("\n"))

  out.write("\n");

  out.write("exit 0\n");

  out.flush();

  out.close();

  //通过 SystemProperties.set("ctl.start", "fxjmotnitor")执行service,来运行脚本,

  //fxjmotnitor为service名称,可以根据自己的爱好随便叫

  SystemProperties.set("ctl.start", "fxjmotnitor");

  } catch (Exception ex) {

  if (res != null)

  res.append("\n" + ex);

  } finally {

  //destroy();

  }

  }

  }

  补充阅读:防火墙主要使用技巧

  一、所有的防火墙文件规则必须更改。

  尽管这种方法听起来很容易,但是由于防火墙没有内置的变动管理流程,因此文件更改对于许多企业来说都不是最佳的实践方法。如果防火墙管理员因为突发情况或者一些其他形式的业务中断做出更改,那么他撞到枪口上的可能性就会比较大。但是如果这种更改抵消了之前的协议更改,会导致宕机吗?这是一个相当高发的状况。

  防火墙管理产品的中央控制台能全面可视所有的防火墙规则基础,因此团队的所有成员都必须达成共识,观察谁进行了何种更改。这样就能及时发现并修理故障,让整个协议管理更加简单和高效。

  二、以最小的权限安装所有的访问规则。

  另一个常见的安全问题是权限过度的规则设置。防火墙规则是由三个域构成的:即源(IP地址),目的地(网络/子网络)和服务(应用软件或者其他目的地)。为了确保每个用户都有足够的端口来访问他们所需的系统,常用方法是在一个或者更多域内指定打来那个的目标对象。当你出于业务持续性的需要允许大范围的IP地址来访问大型企业的网络,这些规则就会变得权限过度释放,因此就会增加不安全因素。服务域的规则是开放65535个TCP端口的ANY。防火墙管理员真的就意味着为黑客开放了65535个攻击矢量?

  三、根据法规协议和更改需求来校验每项防火墙的更改。

  在防火墙操作中,日常工作都是以寻找问题,修正问题和安装新系统为中心的。在安装最新防火墙规则来解决问题,应用新产品和业务部门的过程中,我们经常会遗忘防火墙也是企业安全协议的物理执行者。每项规则都应该重新审核来确保它能符合安全协议和任何法规协议的内容和精神,而不仅是一篇法律条文。

  四、当服务过期后从防火墙规则中删除无用的规则。

  规则膨胀是防火墙经常会出现的安全问题,因为多数运作团队都没有删除规则的流程。业务部门擅长让你知道他们了解这些新规则,却从来不会让防火墙团队知道他们不再使用某些服务了。了解退役的服务器和网络以及应用软件更新周期对于达成规则共识是个好的开始。运行无用规则的报表是另外一步。黑客喜欢从来不删除规则的防火墙团队。

利用Iptables实现网络黑白名单防火墙怎么设置相关文章:

1.vmware 防火墙如何设置

2.linux怎么关闭iptables linux如何关闭防火墙

3.阿里云防火墙如何设置

4.linux如何关闭防火墙

5.suse linux 防火墙如何设置

这篇文章到此就结束,希望能帮助到大家。

扫描二维码推送至手机访问。

版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!

本文链接:http://www.xixia168.cn/n/kj/4273.html

标签: 防火墙名单
分享给朋友:

“利用Iptables实现网络黑白名单防火墙怎么设置(防火墙白名单在哪里设置)” 的相关文章

描写春分节气的古诗(关于春分的古诗最简单的)

描写春分节气的古诗(关于春分的古诗最简单的)

大家好,今天就和小鱼一起来看看这个问题吧 。关于春分的古诗最简单的,描写春分节气的古诗很多人还不知道,现在让我们一起来看看吧!    1、《癸丑春分后雪》苏轼  雪入春分省见稀,半开桃李不胜威。  应惭落地梅花识,却作漫天柳絮飞。  2、《春分》长卿  日月阳阴两均天,玄鸟不辞桃花寒。  从来今日竖...

秦始皇称帝时间在什么时候(秦始皇在位了多少年)

秦始皇称帝时间在什么时候(秦始皇在位了多少年)

大家好,今天就和蜜蜜一起来看看这个问题吧 。秦始皇在位了多少年,秦始皇称帝时间在什么时候很多人还不知道,现在让我们一起来看看吧!  一、  秦始皇在位了多少年  秦始皇总共在位三十七年的时间,他从公元前246年继承秦王王位开始,一直到公元前221年这段时间,秦始皇只是秦国的秦王,公元221年他才正式...

每隔几年出现一次闰年(闰年几年一次)

每隔几年出现一次闰年(闰年几年一次)

大家好,今天就和丹尼一起来看看这个问题吧 。闰年几年一次,每隔几年出现一次闰年很多人还不知道,现在让我们一起来看看吧!  一、  闰年几年一次  闰年是公历中的名词,分为普通闰年和世纪闰年。普通闰年是4年一次,公历年份是4的倍数的,且不是100的倍数,为普通闰年。世纪闰年是400年一次,公历年份是整...

春分传统美食(春分吃什么食物)

春分传统美食(春分吃什么食物)

大家好,今天就和兔兔一起来看看这个问题吧 。春分吃什么食物,春分传统美食很多人还不知道,现在让我们一起来看看吧!  一、春分吃什么食物  1、吃春菜  昔日四邑有个不成节的习俗,叫做“春分吃春菜”。“春菜”是一种野苋菜,乡人称之为“春碧蒿”。逢春分那天,全村人都去采摘春菜。在田野中搜寻时,多见是嫩绿...

中秋节的寓意和象征(中秋节的寓意是什么)

中秋节的寓意和象征(中秋节的寓意是什么)

大家好,今天就和毛毛一起来看看这个问题吧 。中秋节的寓意是什么,中秋节的寓意和象征很多人还不知道,现在让我们一起来看看吧!    中秋节的寓意为家庭团圆幸福、花好月圆。中秋节自古便有祭月、赏月、吃月饼、玩花灯、赏桂花、饮桂花酒等民俗。到后来人们逐渐把赏月与月饼结合在一起,寓意家人团圆,寄托思念。拜月...

农历七月七被称为什么节(七月七日是什么节日)

农历七月七被称为什么节(七月七日是什么节日)

大家好,今天就和小白一起来看看这个问题吧 。七月七日是什么节日,农历七月七被称为什么节很多人还不知道,现在让我们一起来看看吧!    七月七日是七夕节,又称乞巧节,是中国历史悠久的传统节日。古俗在这天晚上,汉族女孩们要穿针乞巧。鹊桥相会歌颂了汉族劳动人民忠贞不渝的爱情,以及追求美好生活的强烈愿望。一...