「Linuxは、このような研究の点で」トレーニングは、Squidプロキシキャッシュの展開サービスを使用し_ch16_ノート
最後に、記事のノートは帳簿上の写真を掲載します。
プロキシキャッシングサービス
Squidは通常、事前キャッシングサービスとして使用される最も人気のあるLinuxシステム、高性能のプロキシサービスソフトウェア、Webサイトでは、ユーザーはサーバーとキャッシュされたページデータの代わりに要求することができます。イカサービスプログラムは、Webサイトのソースサーバーにように必要なデータページ、画像に合わせて受信し、ユーザの要求、イカのサービスプログラムを実行しているサーバーに要求し、サーバは、データストレージを返します。ユーザーが同じデータを要求すると、ユーザーの待ち時間を短縮するだけでなく、圧力負荷のWebサーバーを容易にするだけでなくように、あなたが直接、ユーザーに配信サーバー上でローカルにデータを保存することができます。
ユーザーに提供するサービスプログラムのSquidキャッシュプロキシサービスを使用する場合はフォワードプロキシモードとプロキシモードの逆のポイントを。
フォワードプロキシモード:ユーザーは、イカのWebページやその他のプログラムリソースをサービスにアクセスでき、およびサイトの行動へのユーザーアクセスを制限するアクセス制御リスト(ACL)機能、サービスは標準プロキシモードと透過プロキシモードに分けられ、特に方法:
- 標準的なフォワードプロキシモード:キャッシュデータへのウェブサイトのサーバーがローカルリソース・データの効率を向上させるためには、再度アクセスされていますが、ユーザがインターネットでブラウザや他のソフトウェアでのプロキシサーバーのIPアドレスとポート番号の情報を入力する必要があり、デフォルトではそうではありませんプロキシサービスを使用します。
- 透過フォワードプロキシモード:フォワードプロキシ役割標準モードでは、ユーザーのIPアドレスとポート番号を手動でプロキシサーバーを指定する必要はありませんを除いて、基本的にはユーザーに対して透過フォワードプロキシと同じであるが、比較的透明です。
プロキシサービスのトポロジを前方に提供するために、イカのサービスプログラムを使用します。
あなたがインターネットにアクセスするには、LAN上でホストしたい場合はイカのサーバーは、ユーザーのコマンドは、受信したデータがバック命令の問題に、外部への要求を送信し受信したとき、それは仕事のためのSquidプロキシサーバによって提供されなければなりませんユーザーの代理アクセスニーズを有効にするユーザーが、。
これは流れのための唯一の方法であるため、企業は一般的に会社にイカのサーバー・ロケーション・サービスプログラムを展開し、ACL(アクセス制御リストを通じてますので、インターネットをホストするために、企業は、それは、同社のゲートウェイサーバーを通過する必要があります企業の従業員のアクセス監査と制限内)機能。
リバースプロキシモード:複数のホストがキャッシングノードサイトデータを反転可能にするので、ユーザのアクセス速度を高速化。
一般的に、サイトは一般的に、テキスト、画像およびその他の静的なリソースの多くをロードしますが、ユーザがこれらの静的リソース要求にアクセスするためのWebページを開始したとき、彼らは比較的安定したデータであり、あなたはサービスプログラムイカを使用することができます応答するために提供さプロキシモードリバース。リバースプロキシサーバは、ユーザがアクセスする静的リソースを持っているために起こる場合は、直接キャッシュへのユーザーに送信され、これらの静的リソース、できるだけでなく、ユーザーのサイトのアクセス速度を高速化するだけでなく、ある程度のWebサーバ圧力の負荷を軽減。
利用イカリバースプロキシサービスプログラムは、サービスのトポロジを提供します。
ユーザーは、エクストラネットサイトにアクセスしようとすると、実際の要求は、Squidサーバに処理されています。リバースプロキシサーバーは、それによってユーザーをアクセスされたWebページを高速化、外部ユーザーへの静的リソースより良いと高速配信をキャッシュします。静的リソースは、Webページのデータがイカサーバーに処理された要求しているため、Webサーバは、動的データクエリを担当し、その上、それによってサーバルームのWebサーバーの負荷圧力を低下させます。
フォワードプロキシとリバースプロキシの概要について:
- フォワードプロキシモードは、一般的にされ、企業のローカルエリアネットワークで使用される、それはある程度、公衆ネットワーク帯域幅のコストを削減することができ、また、ウェブサイトのコンテンツにアクセスするユーザーは、規制の制限となりますため、ビジネスユーザーにイカを介してインターネットリソースへの統一サービスへのアクセスを許可します;
- リバースプロキシモードでは、一般的に大規模なサイトへの媒体のためのキャッシングサービスを提供し、ユーザは静的リソースへのアクセス要求を開始したときに、ユーザーが最も近いノードと送信を割り当てることができ、エンジンルーム内の複数のノードの国における静的リソース保全のサイトです、資源。
イカサービスプログラムの設定
実験基本設定:
- イカサーバー:デュアルカード、自動的にDHCPは、外部ネットワークすることができ、IPアドレスを取得するネットワーク192.168.10.10の(ホストのみ)IPアドレス、外部ネットワーク(ブリッジ)。
- イカクライアント:ネットワークカード(ホストのみ)IPアドレス192.168.10.20、クライアントは、WindowsまたはLinuxが行いますです。
- 目的:イカプロキシサーバーを経由して、元のインターネット内のサーバ上でイカプログラムを展開するので、クライアントのみアクセスネットワーク缶に。
イカサーバーのインストールサービスプログラム:YUM -yイカをインストールします。
イカサービスプログラムプロファイル:の/etc/squid/squid.conf。
一般的に使用されるイカやサービス構成パラメータの役割
パラメータ | 効果 |
HTTP_PORT 3128 | リスニングポート番号 |
cache_mem 64M | メモリバッファのサイズ |
イカのcache_dir UFSの/ var /スプール/ 2000 16 256 | ハードディスクバッファのサイズ |
cache_effective_userイカ | 有効なユーザーキャッシュの設定 |
cache_effective_groupイカ | 設定したキャッシュの有効なユーザー・グループ |
dns_nameservers IPアドレス | 一般的に設定されますが、デフォルトのDNSサーバーのアドレスとしていません |
cache_access_log /var/log/squid/access.log | ファイル・アクセス・パスをログ保存 |
cache_log /var/log/squid/cache.log | ログファイルのパスキャッシュを保存 |
visible_hostname linuxprobe.com | サーバーイカの名前を設定します。 |
フォワードプロキシ
標準的なフォワードプロキシ
服务端要做的:在安装好squid服务程序后,默认就可以提供标准正向代理服务。立即重启squid服务并加入开机启动项即可(如果客户端是Linux系统,服务端还需要清空iptables防火墙)。
systemctl restart squid #重启squid服务
systemctl enable squid #把squid服务加入开机启动项
iptables -F #清空iptables防火墙
service iptables save #保存iptables当前策略状态
客户端(Linux)要做的:打开浏览器(Firefox)。
Edit -> Preferences,Advanced -> Network -> Settings...,勾选“Manual proxy configuration:”,填写相关参数值HTTP Proxy:192.168.10.10 Port:3128。勾选“Use this proxy server for all protocols”。
Squid服务程序默认使用3128、3401与4827等端口号,可以把默认使用的端口号修改为其他值,以便起到一定的保护作用。注意需要把要更改的新端口加入到squid服务在SELinux域的允许列表中让SELinux放行。
vim /etc/squid/squid.conf #编辑squid主配置文件 ... 59 http_port 10000 #修改默认端口号为10000 ... systemctl restart squid #重启squid服务 systemctl enable squid #把squid服务加入开机启动项 semanage port -l | grep squid_port_t #过滤出与squid服务相关的端口允许列表 semanage port -a -t squid_port_t -p tcp 10000 #把新的端口号添加到Squid服务在SELinux域的允许列表中 semanage port -l | grep squid_port_t #查看与squid服务相关的端口允许列表中是否已添加新端口
透明正向代理
透明正向代理只能设置在网关上。
透明正向代理模式让用户在没有感知的情况下使用代理服务,一方面不需要用户手动配置代理服务器的信息,进而降低了代理服务的使用门槛;另一方面也可以更隐秘地监督员工的上网行为。
如果服务器同时部署了DHCP服务,则squid透明代理配合dhcp服务可以让用户无须在浏览器或其他软件中配置代理服务器地址、端口号等信息,只要打开浏览器就能自动使用代理服务。
在实现透明正向代理前,客户机需要把浏览器的代理信息删除,回归到无法通过代理上网的状态。客户机网卡设置:IP地址:192.168.10.20,子网掩码:24,默认网关:192.168.10.10(squid服务端),DNS:8.8.8.8。
要实现透明正向代理,需要SNAT技术完成数据转发,让让客户端主机将数据交给Squid代理服务器,再由后者转发到外网中。
实现透明正向代理有两种方法:
- (简单)执行firewall-config弹出firewall设置窗口,把Runtime和Permanent下的Masquerading下的“Masquerade zone”勾选上。配置好客户机即刻通过浏览器上网;
- (困难)采用纯命令行的iptables防火墙管理工具来部署。
采用纯命令行的iptables防火墙管理工具来配置squid透明正向代理方法详解:
- 要想让内网中的客户端主机能够访问外网,客户端主机首先要能获取到DNS地址解析服务的数据,才能在互联网中找到对应网站的IP地址。完成这一步配置后,客户机ping某外网网址,虽然ping不通,但应该能解获取DNS域名解析数据了(这一步的验证结果很重要);
- 编辑squid服务的主配置文件,开启透明正向代理模式。
- 完成SNAT数据转发功能。使用iptables防火墙管理命令把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上。
iptables -F #1.清空iptables防火墙 iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE #通过iptables命令实现DNS地址解析服务53端口的数据转发功能,enoXXXXXXXX是桥接网卡的名称 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf #编辑/etc/sysctl.conf文件,允许Squid服务器转发IPv4数据包 sysctl -p #让/etc/sysctl.conf文件中的转发参数立即生效 vim /etc/squid/squid.conf #2.编辑squid服务的主配置文件,开启透明正向代理模式 ... 59 http_port 3128 transparent #在主配置文件中服务器端口号后面追加上transparent(透明的),即开启透明正向代理模式。 ... 62 cache_dir ufs /var/spool/squid 100 16 256 #设置缓存的保存路径(加快网站的二次响应) ... systemctl stop squid #先关闭squid服务(对Squid服务程序的透明代理技术进行初始化需要) squid -k parse #检查主配置文件是否有错误 squid -z #(生成16个缓存目录)对Squid服务程序的透明代理技术进行初始化 systemctl restart squid #重启squid服务 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 #3.把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno33554968 -j SNAT --to 192.168.1.102 #地址伪装,10段的地址统统伪装成192.168.1.102,这是桥接网卡地址(如果不做这一步,则当网站回送响应时会找不到客户机的私网地址而导致丢包) service iptables save #保存当前iptables防火墙策略状态
ACL访问控制
squid3.3.8服务无法限制https的网站。
当将Squid服务程序部署为网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将可以根据指定的策略条件来缓存数据或限制用户的访问。
Squid服务程序的ACL是由多个策略规则组成的,它可以根据指定的策略规则来允许或限制访问请求,而且策略规则的匹配顺序与防火墙策略规则一样都是由上至下;在一旦形成匹配之后,则立即执行相应操作并结束匹配过程。为了避免ACL将所有流量全部禁止或全部放行,起不到预期的访问控制效果,运维人员通常会在ACL的最下面写上deny all或者allow all语句,以避免安全隐患。
对于ACL变量,是不能批量定义和引用的(比如想禁止多个网址,则只能逐个网址定义,然后逐个引用拒绝操作)。
实现squid服务的ACL访问控制依然是编辑其主配置文件/etc/squid/squid.conf。
ex1:只允许IP地址为192.168.10.20的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。
vim /etc/squid/squid.conf
...
26 acl client src 192.168.10.20 #定义了一个名为client的别名,client = 192.168.10.20
...
31 http_access allow client #允许client,即192.168.10.20使用代理服务
32 http_access deny all #禁止所有主机请求
33 http_access deny !Safe_ports #禁止不在Safe_ports列表中的端口号的请求
...
systemctl restart squid #重启squid服务
把客户机IP地址改成192.168.10.20以外的值,发现无法上网。
ex2:禁止所有客户端访问网址中包含sincerity关键词的网站。
vim /etc/squid/squid.conf ... 26 acl deny_keyword url_regex -i sincerity #url_regex -i代表匹配网址中关键字,没有-i参数则指的是匹配整个网址 ... 31 http_access deny deny_keyword ... systemctl restart squid #重启squid服务
例如www.sincerity.com网址中包含sincerity关键字的网站无法访问,仅限于非https网站(squid3.3.8无法限制https的网站)。
ex3:禁止所有客户端访问某个特定的网站。
vim /etc/squid/squid.conf ... 26 acl deny_url url_regex www.bklgold.com #禁止访问www.bklgold.com ... 31 http_access deny deny_url ... systemctl restart squid
www.bklgold.com也是目前稀少的仍旧使用http的网站,经过上述设置,自然不能再访问了。
ex4:禁止下载带有某些后缀的文件。
vim /etc/squid/squid.conf ... 26 acl badfile urlpath_regex -i \.mp3$ \.rar$ #禁止下载后缀为mp3和rar的文件 ... 31 http_access deny badfile ... systemctl restart squid
设置后,不管网址的文件是否存在,例如http://www.linuxprobe.com/book.rar,只要匹配到了规定的后缀,均会被拒绝访问(https的依然无法限制)。其次,如果是使用迅雷等P2P下载软件来下载资源的话,就只能使用专业级的应用防火墙来禁止。
反向代理
反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求(图片、视频等静态资源的请求)交给Squid服务器缓存节点来处理。一来提升用户访问网站的速度,二来减少网站源服务器的负载压力。
但是,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(部分钓鱼网站就是基于此原理)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。
找出无开启CDN的网站的方法:
ping网站域名,经过DNS解析后可得到IP地址,直接在浏览器上输入该ip地址访问该网站,如果能看到与输入域名访问时一样的内容,说明该网站大概率没有开启CDN,反之若输入IP访问不了,则该网站大概率无法进行反向代理。
已知一网站www.sincerity.com无开启CDN,其IP地址:139.159.253.44。可进行反向代理实验。
服务端:还原,重新安装squid。把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(正向代理服务不能与反向代理服务同时使用)。
yum install -y squid vim /etc/squid/squid.conf ... 59 http_port 192.168.1.105:80 vhost #192.168.1.105是服务端能上外网的网卡的IP地址 60 cache_peer 139.159.253.44 parent 80 0 originserver #139.159.253.44是网站源服务器IP地址 ... systemctl restart squid
在服务端访问自己ip地址,却会出现与网站www.sincerity.com一模一样的效果。
书本笔记