国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 防火墻知識(shí) >

    利用Iptables實(shí)現(xiàn)網(wǎng)絡(luò)黑白名單防火墻怎么設(shè)置

    時(shí)間: 加城1195 分享

      防火墻主要由服務(wù)訪問(wèn)規(guī)則、驗(yàn)證工具、包過(guò)濾和應(yīng)用網(wǎng)關(guān)4個(gè)部分組成,防火墻就是一個(gè)位于計(jì)算機(jī)和它所連接的網(wǎng)絡(luò)之間的軟件或硬件。這篇文章主要介紹了詳解Android 利用Iptables實(shí)現(xiàn)網(wǎng)絡(luò)黑白名單(防火墻),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

      具體步驟

      二、Iptables網(wǎng)絡(luò)黑白名單(防火墻)實(shí)現(xiàn)細(xì)節(jié)

      因?yàn)榭紤]到一些權(quán)限的問(wèn)題所以在實(shí)現(xiàn)方法上采用的是創(chuàng)建一個(gè)systemserver來(lái)運(yùn)行這些方法。并提供出manager到三方應(yīng)用,這樣在調(diào)用時(shí)可以排除一些權(quán)限的限制。同時(shí)本文只是做一個(gè)簡(jiǎn)單的參考概述,所以在后文中只提供了增加黑白名單的方法和iptables規(guī)則,并沒(méi)有提供相應(yīng)的刪除規(guī)則等,原理類似大家可自行補(bǔ)充添加。

      2.1、創(chuàng)建systemserver

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

      type fxjnet_service, system_api_service, system_server_service, service_manager_type;

      2.2.2、在/system/sepolicy/service_contexts中添加如下,

      fxjnet u:object_r:fxjnet_service:s0

      2.2.3、在frameworks/base/core/java/android/content/Context.java中添加

      也可以不添加這個(gè),只不過(guò)為了后面調(diào)用方便所以添加了。如果跳過(guò)此步,那么后面出現(xiàn)Context.FXJNET_SERVICE的地方都用字串代替即可。

      public static final String FXJNET_SERVICE="fxjnet";

      2.2.4、在/frameworks/base/core/java/android/app/SystemServiceRegistry.java的靜態(tài)代碼塊中添加如下代碼注冊(cè)service。

      registerService(Context.FXJNET_SERVICE, FXJNETManager.class,

      new CachedServiceFetcher() {

      @Override

      public FXJNETManager createService(ContextImpl ctx) {

      IBinder b = ServiceManager.getService(Context.FXJNET_SERVICE);

      IFXJNETService service = IFXJNETService.Stub.asInterface(b);

      return new FXJNETManager(ctx, service);

      }});

      2.2.5、在frameworks/base/services/java/com/android/server/SystemServer.java中添加如下代碼,將service加入systemserver中。

      ServiceManager.addService(Context.FXJNET_SERVICE, new FXJNETService());

      2.2.6 、AIDL文件

      package android.os;

      interface IFXJNETService{

      void addNetworkRestriction(List ipName,int type);

      }

      2.2.7、提供給外部的FXJNETManager

      package android.app;

      import android.os.IFXJNETService;

      import android.os.RemoteException;

      import android.content.Context;

      public class FXJNETManager{

      IFXJNETService mService;

      public FXJNETManager(Context ctx,IFXJNETService service){

      mService=service;

      }

      public void addNetworkRestriction(List ipName,int type) {

      try{

      mService.addNetworkRestriction(ipName,type);

      }catch (RemoteException e){

      }

      }//end addNetworkRestriction

      }

      2.2.8、系統(tǒng)服務(wù)即AIDL的實(shí)現(xiàn)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");

      /**

      * 增加{網(wǎng)絡(luò)IP訪問(wèn)}黑白名單數(shù)據(jù)

      */

      public void addNetworkRestriction(List ipName,int type) {

      String str= getIPlist(type,ipName);

      setiptablesRestriction();

      }

      //構(gòu)建Iptables的規(guī)則,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、運(yùn)行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();//給創(chuàng)建的sh文件設(shè)置權(quán)限

      // 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();

      //通過(guò) SystemProperties.set("ctl.start", "fxjmotnitor")執(zhí)行service,來(lái)運(yùn)行腳本,

      //fxjmotnitor為service名稱,可以根據(jù)自己的愛(ài)好隨便叫

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

      } catch (Exception ex) {

      if (res != null)

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

      } finally {

      //destroy();

      }

      }

      }

      補(bǔ)充閱讀:防火墻主要使用技巧

      一、所有的防火墻文件規(guī)則必須更改。

      盡管這種方法聽(tīng)起來(lái)很容易,但是由于防火墻沒(méi)有內(nèi)置的變動(dòng)管理流程,因此文件更改對(duì)于許多企業(yè)來(lái)說(shuō)都不是最佳的實(shí)踐方法。如果防火墻管理員因?yàn)橥话l(fā)情況或者一些其他形式的業(yè)務(wù)中斷做出更改,那么他撞到槍口上的可能性就會(huì)比較大。但是如果這種更改抵消了之前的協(xié)議更改,會(huì)導(dǎo)致宕機(jī)嗎?這是一個(gè)相當(dāng)高發(fā)的狀況。

      防火墻管理產(chǎn)品的中央控制臺(tái)能全面可視所有的防火墻規(guī)則基礎(chǔ),因此團(tuán)隊(duì)的所有成員都必須達(dá)成共識(shí),觀察誰(shuí)進(jìn)行了何種更改。這樣就能及時(shí)發(fā)現(xiàn)并修理故障,讓整個(gè)協(xié)議管理更加簡(jiǎn)單和高效。

      二、以最小的權(quán)限安裝所有的訪問(wèn)規(guī)則。

      另一個(gè)常見(jiàn)的安全問(wèn)題是權(quán)限過(guò)度的規(guī)則設(shè)置。防火墻規(guī)則是由三個(gè)域構(gòu)成的:即源(IP地址),目的地(網(wǎng)絡(luò)/子網(wǎng)絡(luò))和服務(wù)(應(yīng)用軟件或者其他目的地)。為了確保每個(gè)用戶都有足夠的端口來(lái)訪問(wèn)他們所需的系統(tǒng),常用方法是在一個(gè)或者更多域內(nèi)指定打來(lái)那個(gè)的目標(biāo)對(duì)象。當(dāng)你出于業(yè)務(wù)持續(xù)性的需要允許大范圍的IP地址來(lái)訪問(wèn)大型企業(yè)的網(wǎng)絡(luò),這些規(guī)則就會(huì)變得權(quán)限過(guò)度釋放,因此就會(huì)增加不安全因素。服務(wù)域的規(guī)則是開(kāi)放65535個(gè)TCP端口的ANY。防火墻管理員真的就意味著為黑客開(kāi)放了65535個(gè)攻擊矢量?

      三、根據(jù)法規(guī)協(xié)議和更改需求來(lái)校驗(yàn)每項(xiàng)防火墻的更改。

      在防火墻操作中,日常工作都是以尋找問(wèn)題,修正問(wèn)題和安裝新系統(tǒng)為中心的。在安裝最新防火墻規(guī)則來(lái)解決問(wèn)題,應(yīng)用新產(chǎn)品和業(yè)務(wù)部門的過(guò)程中,我們經(jīng)常會(huì)遺忘防火墻也是企業(yè)安全協(xié)議的物理執(zhí)行者。每項(xiàng)規(guī)則都應(yīng)該重新審核來(lái)確保它能符合安全協(xié)議和任何法規(guī)協(xié)議的內(nèi)容和精神,而不僅是一篇法律條文。

      四、當(dāng)服務(wù)過(guò)期后從防火墻規(guī)則中刪除無(wú)用的規(guī)則。

      規(guī)則膨脹是防火墻經(jīng)常會(huì)出現(xiàn)的安全問(wèn)題,因?yàn)槎鄶?shù)運(yùn)作團(tuán)隊(duì)都沒(méi)有刪除規(guī)則的流程。業(yè)務(wù)部門擅長(zhǎng)讓你知道他們了解這些新規(guī)則,卻從來(lái)不會(huì)讓防火墻團(tuán)隊(duì)知道他們不再使用某些服務(wù)了。了解退役的服務(wù)器和網(wǎng)絡(luò)以及應(yīng)用軟件更新周期對(duì)于達(dá)成規(guī)則共識(shí)是個(gè)好的開(kāi)始。運(yùn)行無(wú)用規(guī)則的報(bào)表是另外一步。黑客喜歡從來(lái)不刪除規(guī)則的防火墻團(tuán)隊(duì)。


    利用Iptables實(shí)現(xiàn)網(wǎng)絡(luò)黑白名單防火墻怎么設(shè)置相關(guān)文章:

    1.vmware 防火墻如何設(shè)置

    2.linux怎么關(guān)閉iptables linux如何關(guān)閉防火墻

    3.阿里云防火墻如何設(shè)置

    4.linux如何關(guān)閉防火墻

    5.suse linux 防火墻如何設(shè)置

    4042548