当前位置: 首页 > news >正文

DansGuardian

dansguardian能真正实现内容过滤,不仅能过滤网站,URL,还能过滤网页里包含的一些词、还有mime类型等。DansGuardian中有一些鉴别文档,类似黑白名单,可以向相应的文档里输入所要控制的相应内容,再重启DansGuardian即可生效。

工作原理:

dansguardian默认监听8080端口,默认的squid代理端口为3128,dansguardian将得到的http请求转发给squid,然后再从squid将响应转发给用户,在这个过程中进行过滤。

安装过程:

1) tar -zxvf dansguardian-2.6.1-13.source.tar.gz

2) cd dansguardian-2.6.1

3) ./configure

4) make

5) make install

安装完成后,在启动之前可以编辑/etc/dansguardian/dansguardian.conf

同时加上iptables规则:

iptables -t nat -A PREROUTING -s 192.168.0.xxx/32 -i eth1 -p tcp --dport 80 -j REDIRECT --to-dports 8080

启动dansguardian:

1) 手工启动:service dansguardian start

2) 系统启动:chkconfig dansguardian on

配置文件:

dansguardian配置文件默认路径:/etc/dansguardian

相关配置文件如下:

bannedextensionlist -- 禁止的文件扩展名列表

bannediplist -- 禁止的ip访问列表

bannedmimetypelist -- 禁止的mime类型列表

bannedphraselist -- 禁止的关键字列表(整个页面)

bannedregexpurllist -- 禁止带有关键字的url列表

bannedsitelist -- 禁止域名列表(域名下所有的网页)

bannedurllist -- 禁止域名下的部分网页

banneduserlist -- 禁止代理认证中的用户

contentregexplist -- 关键字替换列表

dansguardian.conf -- dansguardian的配置文件

exceptioniplist -- ip白名单,不过滤

exceptionphraselist -- 关键字白名单

exceptionsitelist -- 站点白名单

exceptionurllist -- url白名单

exceptionuserlist -- 用户白名单

logrotation -- 自调用文件

messages -- 用于页面显示哪种阻止信息,在dansguardian.conf中调用

phraselists -- 是供weightedphraselist等调用的文件夹

pics/ -- PICS过滤

template.html -- dansguardian的阻止页面信息

weightedphraselist -- 短语权重列表


# DansGuardian.conf
# 拒绝 Web 访问报告
# -1 = 做日记但不阻止-秘密模式
# 0 = 只是说"拒绝访问"
# 1 = 报告为什么但是不报告什么关键词阻止
# 2 = 完全报告
# 3 = 用 HTML 模式文件(突略拒绝访问地址)-推进
reportinglevel = 3
# 全局语言贮存的语言目录,只是用于reportinglevel=3时的HTML模式,
# 当被用,DansGuardian 将用html文件代替用perl cgi脚本来显示,这个
# 选项更快更清晰更容易让访问者访问被阻止的页面
# 语言文件用于没有问题的任何设置
languagedir = '/etc/dansguardian/languages'
# 从语言目录中运用的语言
language = 'ukenglish'
# 日记设定
# 0 = none 1 = just denied 2 = all text based 3 = all request
loglevel = 2
# 记录扩展命中
# 记录如扩展(用户、ip、URL、关键词)匹配因此让这个页面通过,非常有用于诊断
# 怎样的站点可以通过过滤器
# on | off
logexceptionhits = on
# 日记文件格式
# 1 = DansGuardian format 2 = CSV-style format
# 3 = Squid Log File Format 4 = Tab delimited
logfileformat = 1
# 本地日记文件
# 定义日记目录和文件名
loglocation = '/var/log/dansguardian/access.log'
# 网络设置
# DansGuardian 侦听的IP。保留空着DansGuardian将侦听所有的IPs。
# 通常你都会让你的防火墙保护这些,但是当你只是限制1个IP,单单时一。
filterip =
# DansGuardian 侦听的端口
filterport = 8080
# 代理服务器的IP(缺省是环回网卡ip-i.e. 这是服务器)
proxyip = 127.0.0.1
# DansGuardian 连接到代理服务器的端口
proxyport = 3128
# accessdeniedaddress是cgi dansguardian 报告脚本的web服务器的地址被拷贝
# 如果你不用到cgi就不要更改缺省
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
# 非标准分隔符(仅用于accessdeniedaddress)
# 缺省是激活但可以返回用原始标准模式去disable
nonstandarddelimiter = on
# 禁止image交换
# Images 被禁止是由于domain/url/etc的原因包含了广告黑名单将被交换
# 例如,掩藏广告images和删除非法的image
# icons禁止域名
# 0 = off
# 1 = on (default)
usecustombannedimage = 1
custombannedimagefile = '/etc/dansguardian/transparent1x1.gif'
# 组过滤选项
# filtergroups设置组过滤器的数量。组过滤器是设置包含过滤器选项应用于这个组的用户。
# 这个参数变量必须是1或者更多
# DansGuardian 将自动查找dansguardianfN.conf 当N是这个过滤器的组。用filtergroupslist
# 选项来分配用户到组。所有的用户缺省是属于过滤器组1。你必须有一些鉴别分类能够让用
# 户到组的匹配。尽可能少的用更多的组过滤器更多的拷贝清单
filtergroups = 1
filtergroupslist = '/etc/dansguardian/filtergroupslist'
# 本地鉴别文件
bannediplist = '/etc/dansguardian/bannediplist'
exceptioniplist = '/etc/dansguardian/exceptioniplist'
banneduserlist = '/etc/dansguardian/banneduserlist'
exceptionuserlist = '/etc/dansguardian/exceptionuserlist'
# 展示有利的关键词建立
# 如果激活则只要报告的标准够高所有超越不规则限制关键词建立将被记录,
# on | off
showweightedfound = on
# 有利的关键词的模式
# 下边是3种可能模式的选项:
# 0 = off = 不用关键词的特征
# 1 = on, normal = 通用的关键词选项
# 2 = on, singular = 每个有用的关键词建立在一个页面中只是一次
weightedphrasemode = 2
# 真实报告caching的文本URLs
# 好的caches页面就不需要再次检测
# 0 = off (推荐用户不同的浏览ISPs)
# 1000 = 推荐多数用户
# 5000 = 暗示最多上限
urlcachenumber = 1000
# 在多少秒过期在他们不活动和将被突略
# 0 = never
# 900 = recommended = 15 mins
urlcacheage = 900
# 敏捷和未处理的关键词内容过滤选项
# Smart 是多样的空间和HTML将删除在关键词过滤之前
# Raw 是rew的HTML包含meta标记将过滤关键词
# 0 = raw only
# 1 = smart only
# 2 = both (default)
phrasefiltermode = 2
# 小写选项
# 为了比较关键词当文件中检查到大写字母时将更改为小写
# 然而这将违背Big5和16-bit文本,如果需要保护大小写
# 2.7.0版本的支持这个功能
# 0 = 强制更改为小写 (default)
# 1 = 不做任何改变
preservecase = 0
# 16进制解码选项
# 当文件检查到它会随意的更改%XX成chars
# 如果你发现文件在过滤关键词时让其通过是由于编码则enable
# 然而这将违背Big5和16-bit文本
# 0 = disabled (default)
# 1 = enabled
hexdecodecontent = 0
# Force Quick搜索好于DFA搜索算法
# 通常的DFA执行不是和16-bit字符完全一致,但是它作为缺省是因为它管理很大
# 关键词的列表时很快,如果你希望用很大数量的6-bit字符关键词则激活这选项
# 0 = off (default)
# 1 = on (Big5 compatible)
forcequicksearch = 0
# 反向查找禁止的设置和URLs
# 如果设置为on,DansGuardian 将为IP URL地址查找forward DNS和搜索禁止设置和URL列表
# 这将防止用户简单输入IP来访问禁止的地址,如果不是用本地的DNS服务器它将稍微降低查
# 找的速度,设置它为off,用Blanket IP Block选项的bannedsitelist文件来代替
reverseaddresslookups = off
# 反向查找禁止和扩张的IP列表
# 如果设置为on,DansGuardian 将为IP连接的计算机查找forward DNS,这就意味着
# 你可以输入hostname在exceptioniplist 和 bannediplist
# 如果不是用本地的DNS服务器它将稍微降低搜索的速度,设置为off
reverseclientiplookups = off
# 创建bannedsitelist和bannedurllist cache文件
# 这将比较列表文件日戳和cache的日戳,使其得到重新创建这是必须的
# 如果bsl或bul程序的文件存在,则将被用于代替,它将增加处理300%的速度
# 在很慢的计算机上这是很有用,在很快的计算机上就不需要这个选项
# on | off
createlistcachefiles = on
# POST保护(web 上传和窗体)
# 不阻止窗体没有任何文件上传,i.e. 这是只是为了阻止和限制上传
# kibibytes在MIME encoding和header bumph标准之后
# 用 0 表示完全阻止
# 用高些(e.g. 512 = 512Kbytes)来限制
# 用-1表示不阻止
#maxuploadsize = 512
#maxuploadsize = 0
maxuploadsize = -1
# 最大内容过滤页面大小
# 有时候web服务器的二进制文本文件非常大就会消耗巨大的内存和CPU资源
# 处理这些,你可以限制文件的大小来过滤,直接让它通过
# 这设置也同样应用正规的内容扩张修改
# 大小单位为Kibibytes - e.g. 2048 = 2Mb
# 用 0 表示不限制
maxcontentfiltersize = 256
# 用户名辨别算法(用于日记记录)
# 你可以有很多的算法不仅仅是这一个,第一当这被用虽然用户名没有建立,接着将很有用
# * proxyauth 是基本的代理辨别被用(对透明代理不是有用)
# * ntlm 是当代理支持MS NTLM辨认协议(只是工作于IE5.5 sp1或者更高版本)**NOT IMPLEMENTED**
# * ident 是当其他的算法不能用作时工作,它将连接来自连接的计算机和尝试接连到identd服务器和
# query,它是用户拥有的连接
usernameidmethodproxyauth = on
usernameidmethodntlm = off # **NOT IMPLEMENTED**
usernameidmethodident = off
# 优先禁止 - 这意味你激活代理辨别和用户访问设置禁止的URL,例如他们阻止直接外出没有
# 享有的请求和通过,这影响用户的需要访问一个干净的设置,第一需它知道他们是谁甚至可以
# 是管理员
# 这就是为什么DansGuardian总是起作用但有些情况下缺少完美的,所以你可以随便disable它
# 缺省是 on,众所周知这个设置像mime类型一样结果不能这作用AD image交换工作好
preemptivebanning = on

# Misc 设置
# 如果为on它增加一个X-Forwarded-For: <clientip> HTTP请求头,这有帮助于一些设置问题
# 这需要知道源ip。on | off
forwardedfor = off
# 如果为on它用X-Forwarded-For: <clientip> 确定客户端的IP,这作用于squid介于客户端和
# DansGuardian之间
# 警告-报头容易欺骗。on | off
usexforwardedfor = off
# 如果为on它记录一些调试信息关于fork()和accept(),通常试突略的,他们试用syslog来记录的
# 它安全的设置为on或者off
logconnectionhandlingerrors = on

# Fork pool 选项
# 设置最多的进程数fork来处理进来的连接,最大变量通常是250,依赖OS
# 最大设置你可以尝试180
maxchildren = 120
# 设置最小的进程数fork来处理进来的连接
# 最大设置你可以尝试32
minchildren = 8
# 设置最小的进程数fork来处理保持真正的连接
# 最大设置你可以尝试8
minsparechildren = 4
# 设置最小的进程数fork来运行
# 最大设置你可以尝试10
preforkchildren = 6
# 设置最大的进程数来不做任何东西
# 当有空间的时候可以精选他们一些
# 最大设置你可以尝试64
maxsparechildren = 32
# 设置最大的子进程croaks的age
# 这是在他们退出之前他们处理的连接数
# 最大设置你可以尝试10000
maxagechildren = 500

# 进程选项
# (更改他们只有你真正知道你自己在干什么)
# 这些选项允许你运行DansGuardian在多种场合在单个机器上
# 记住以你的意图编辑上面日记文件路径
# IPC 文件名
# 定义IPC 服务用于log进程通信的目录和文件名
ipcfilename = '/tmp/.dguardianipc'
# URL 列表 IPC 文件名
# 定义URL列表IPC服务用于URL cache进程通信的目录和文件名
urlipcfilename = '/tmp/.dguardianurlipc'
# PID 文件名
# 定义进程id的目录和文件名
pidfilename = '/var/run/dansguardian.pid'
# 不能守护
# 如果激活,进程将不会fork运行在后台
# 它不是通常有利去做这些
# on|off ( defaults to off )
nodaemon = off
# 不启动日记进程
# on|off ( defaults to off )
nologger = off
# 守护进程运行的用户和组
# 这是DansGuardian运行时的用户,通常 user/group nobody
# 不注释的用 缺省用户在编译时定义
# daemonuser = 'nobody'
# daemongroup = 'nobody'
# 软件重启
# 当on时不会强制的杀死所有同一进程组的进程
# 这不是很困惑运行时加上 -g 的选项 他们不是很有关系
# on|off ( defaults to off )
softrestart = off

相关文章:

  • 【转】ie6.0下div 不能实现1px 高度的几种解决方法
  • 在.Net平台开发Wap的一些记录
  • 未能为 SSL/TLS 安全通道建立信任的解决办法
  • squid + dansguardian + iptable 实现网页过滤
  • 虚拟光驱文件bin/cue到iso的转换
  • 纯八卦一下。。。。。Orx的名字来源于一个沼泽。。。。
  • IE8 兼容视图 IE7 解决办法
  • SIGHUP信号与控制终端
  • IT技术的三个层次
  • Ruby connect to SQL server native client
  • Nmap使用方法
  • 系统蓝屏重起:如何修改设置,记录系统蓝屏重起的错误
  • Asp.Net应用程序配置Web.config
  • ubuntu9.10下构建tftp服务
  • WPF入门笔记
  • 【mysql】环境安装、服务启动、密码设置
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Hexo+码云+git快速搭建免费的静态Blog
  • Javascript Math对象和Date对象常用方法详解
  • java小心机(3)| 浅析finalize()
  • Octave 入门
  • rc-form之最单纯情况
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue.js-Day01
  • vue.js框架原理浅析
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 经典排序算法及其 Java 实现
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 聊聊sentinel的DegradeSlot
  • 区块链共识机制优缺点对比都是什么
  • 如何解决微信端直接跳WAP端
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Java总结 - String - 这篇请使劲喷我
  • zabbix3.2监控linux磁盘IO
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​secrets --- 生成管理密码的安全随机数​
  • "无招胜有招"nbsp;史上最全的互…
  • # Java NIO(一)FileChannel
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Mysql的优化设置
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)项目管理杂谈-我所期望的新人
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件