⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000015.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
理或者类似的其他代理程序通常只能对确定的应用程序进行代理。这类代理程序往往是&nbsp;<BR>为了减少网络流量,提高网络速度或者是绕过防火墙用。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;我们在这里讨论最常用的代理程序。squid类似于apache的浏览代理,实际就是一个高&nbsp;<BR>速缓冲器,但是在某些方面,它比apache更容易管理。而socks5代理则是一个特殊的转&nbsp;<BR>发器,它利用某种特定的编程接口接受客户的请求并且代替客户处理请求。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;8.5.1&nbsp;squid代理程序&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;与Apache的proxy功能类似,squid也是一个接受客户请求,代替客户处理并且加以缓&nbsp;<BR>冲的产品。但是与apache不同的是,squid不需要forks自身。另外,squid可以配置成为&nbsp;<BR>利用用户名和口令来限制用户的身份,这在按照IP地址进行身份认证不适用的时候是很&nbsp;<BR>重要的。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;squid是一个功能非常强大的程序,例如你可以将它配置成向“内”的服务器(提高你&nbsp;<BR>自己的服务器的响应能力),或者是用多个squid机器构成复杂的缓冲系统,如此等等,&nbsp;<BR>你可以自己参考squid的文档。作为一本教程,我们不想涉及到这一类过于专门的问题中&nbsp;<BR>去。我们将主要介绍如何配置一个可以通过密码验证用户的代理系统。实际上,很多防&nbsp;<BR>火墙的设计者都利用squid在不损害防火墙的可靠性的同时使得用户的应用更加简便。例&nbsp;<BR>如,你可以用防火墙将除了squid机器之外的所有内部机器全部挡住,然后让客户通过s&nbsp;<BR>quid访问外界,这样的方法比建立复杂的ipchains过滤规则更容易,而且除非防火墙机&nbsp;<BR>器被攻克,内部的机器是安全的。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要使用squid,首先必须安装这个程序,例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;[root@wxd&nbsp;linux]#&nbsp;rpm&nbsp;-q&nbsp;squid&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;squid-2.2.STABLE4-5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;然后就可以配置squid程序了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;squid的配置文件在/etc/squid/squid.conf,(编译时定义),实际上,你完全可以&nbsp;<BR>在缺省的配置文件上改动,不过,按照我们的一般方法,我们从一个适当构作的最小的&nbsp;<BR>squid.conf开始:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_port&nbsp;4444&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;LOCALDOMAIN&nbsp;src&nbsp;202.199.248.0/255.255.255.0&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;test&nbsp;proxy_auth&nbsp;REQUIRED&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;all&nbsp;src&nbsp;0.0.0.0/0&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;SSL_ports&nbsp;port&nbsp;443&nbsp;563&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_mem&nbsp;&nbsp;8&nbsp;MB&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_dir&nbsp;/var/squid/cache&nbsp;100&nbsp;16&nbsp;256&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_access_log&nbsp;/var/log/squid/access.log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_log&nbsp;/var/log/squid/cache.log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_store_log&nbsp;/var/log/squid/store.log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_dns_program&nbsp;/usr/bin/dnsserver&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;dns_children&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_program&nbsp;/usr/bin/ncsa_auth&nbsp;/etc/squid/passwd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_children&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_ttl&nbsp;30&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;reference_age&nbsp;1&nbsp;month&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;Safe_ports&nbsp;port&nbsp;80&nbsp;21&nbsp;443&nbsp;563&nbsp;70&nbsp;210&nbsp;1025-65535&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;CONNECT&nbsp;method&nbsp;CONNECT&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;allow&nbsp;LOCALDOMAIN&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;allow&nbsp;test&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;!Safe_ports&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;CONNECT&nbsp;!SSL_ports&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;all&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个配置文件包含了squid的主要内容,首先,http_port&nbsp;4444定义squid使用的代理&nbsp;<BR>服务端口。这里利用4444端口作为代理端口,注意由于squid是以nobody权限运行,这个&nbsp;<BR>端口必须大于1024。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;接下来,acl是一种定义行,上面的定义可以这样解释:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;all&nbsp;src&nbsp;0.0.0.0/0将&quot;all&quot;定义为一个类,包含所有客户机器。src说明这里的定&nbsp;<BR>义是对源地址的,也可以用dest对目标地址进行定义,如acl&nbsp;sth&nbsp;dest&nbsp;202.199.248.0&nbsp;<BR>/24。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;LOCALDOMAIN&nbsp;src&nbsp;202.199.248.0/255.255.255.0如上述是定义所有位于202.199&nbsp;<BR>.248.*处的客户机器为LOCALDOMAIN类。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;SSL&nbsp;port&nbsp;443&nbsp;563&nbsp;将所有目标端口是443或563的访问定义为SSL类。同样另外的&nbsp;<BR>一句acl&nbsp;safe_ports&nbsp;port&nbsp;80&nbsp;21&nbsp;443&nbsp;563&nbsp;70&nbsp;210&nbsp;1025-65535定义连接到这些端口的访&nbsp;<BR>问为安全端口。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;test&nbsp;proxy_auth&nbsp;REQUIRED定义所有需要身份验证的用户为test类。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;acl&nbsp;CONNECT&nbsp;method&nbsp;CONNECT&nbsp;定义所有使用TCP连接的用户为CONNECT类。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;实际上,所有这些类的定义都是为了给后面的存取限制提供定义,我们可以在最后看&nbsp;<BR>到存取限制语句:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;allow&nbsp;LOCALDOMAIN&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;allow&nbsp;test&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;!Safe_ports&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;CONNECT&nbsp;!SSL_ports&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;http_access&nbsp;deny&nbsp;all&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;允许202.199.248.0/24的用户使用代理;另外凡是通过了身份验证的用户也可以使用&nbsp;<BR>代理;其他的全部禁止。访问到非安全端口的全部禁止。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;squid的用户身份验证是通过密码验证。要使用这个功能,首先必须编译squid的密码&nbsp;<BR>验证程序。这要求你安装了squid的源代码,然后在squid源代码的目录中&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$make&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gcc&nbsp;-g&nbsp;-O2&nbsp;-Wall&nbsp;-I.&nbsp;-I../../include&nbsp;-I../../include&nbsp;&nbsp;&nbsp;&nbsp;-c&nbsp;ncsa_auth.c&nbsp;-o&nbsp;&nbsp;<BR>ncsa_auth.o&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gcc&nbsp;-g&nbsp;ncsa_auth.o&nbsp;-o&nbsp;ncsa_auth&nbsp;-L../../lib&nbsp;-lmiscutil&nbsp;-lcrypt&nbsp;-lm&nbsp;-lresol&nbsp;<BR>v&nbsp;-lbsd&nbsp;-lnsl&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;将会在当前目录下产生一个ncsa_auth程序。将它拷贝到/usr/bin下面。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;我们可以通过Apache部分讲到的htpasswd程序生成身份验证需要的密码文件:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$htpasswd&nbsp;-c&nbsp;/etc/squid/passwd&nbsp;wanghy&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;New&nbsp;password:&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Re-type&nbsp;new&nbsp;password:&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Adding&nbsp;password&nbsp;for&nbsp;user&nbsp;wanghy&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>$&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这样就加入了一个名叫wanghy的squid用户,然后就可以用上面的行来启用身份验证程&nbsp;<BR>序了:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_program&nbsp;/usr/bin/ncsa_auth&nbsp;/etc/squid/passwd&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_children&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;说明用/usr/bin/ncsa_auth作为身份验证程序,验证密码文件为/etc/squid/passwd,&nbsp;<BR>注意这个文件必须全局可读,因为squid在工作的时候,是用一个属主为nobody的子进程&nbsp;<BR>来执行,相应地ncsa_auth的权限也是nobody。authenticate_children是身份验证程序&nbsp;<BR>的个数。设置了身份验证后,用户访问代理服务时会弹出这样的对话框:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;图8.3&nbsp;squid的身份验证&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;只有用户名和口令符合,才能通过代理访问外界。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;authenticate_ttl&nbsp;3600这样的行用来定义一次身份验证的有效期,如果超过了这个时&nbsp;<BR>间用户没有动作,再连接时squid会要求用户重新进行身份验证。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;接下来的几行设置squid用的内存数量,使用的纪录文件,而最重要的是下面一行:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_dir&nbsp;/var/squid/cache&nbsp;100&nbsp;16&nbsp;256&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个命令设置squid用来存贮cache文件的目录,这个目录必须是全局可写的;后面三&nbsp;<BR>个参数,第一个是目录的容量,或者说最大允许多大的cache;第二个和第三个则是第一&nbsp;<BR>层和第二层目录下允许有多少个子目录,你可以自己调节这些数字。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如果你处在防火墙内部,而名字服务器位于防火墙外,你可能希望代理服务器能同时&nbsp;<BR>对DNS进行代理,下面两行:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;cache_dns_program&nbsp;/usr/bin/dnsserver&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;dns_children&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;启动了这个功能,dnsserver程序是缺省的dns代

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -