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:
# 这需要知道源ip。on | off
forwardedfor = off
# 如果为on它用X-Forwarded-For:
# 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