linux 运维,代理,acl控制访问

运维概述:
运行 & 维护,Operation & Maintance
IT运维、业务运维、日常管理运维
采用相关的方法、手段、技术、制度、流程和文档等,
对IT运行环境、IT业务系统和IT运维人员进行的综合管理。

传统运维技术特点:
单一化:业务及服务单一
简单化:部署的服务与架构相对简单
被动化:出现问题后,救火式的管理

linux运维最佳实践
集中化
自动化
分布式
标准化
虚拟化
... ...

————————————————————————————————————
squid代理

代理服务器分类:
正向代理:客户程序(如浏览器)用指定代理服务器的地址,端口
反向代理:负载均衡。

squid服务器:
软件包:squid-3.1.23-9.el6.x86_64
系统服务:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默认监听端口:tcp 3128
默认访问日志:/var/log/squid/access.log

常用配置解析
[root@daili ~]# vim /etc/squid/squid.conf
http_port 3128(监听端口)
cache_man 64 MB(缓存软件相关信息)
access_log /var/log/squid/access.log(日志文件)
visible_hostname www.hydra.org(域名/主机名。默认没有要加上去)
cache_dir ufs /var/spool/squid 100 16 256(默认页面缓存)
(ufs:存储格式,100:目录空间100mb,16:一级子目录,256:二级子目录)

——————————————————————————————————————————————

正向代理:
测试:使客户机机,通过代理服务器访问web主机(使用squid)
主机:beiqiang客户机 eth0 192.168.4.1
主机:daili为代理服务器 eth0 192.168.4.5 eth1 192.168.2.5
主机:web服务器 eth1 192.168.4.100
[root@daili ~]# yum -y install squid(安装squid代理)
[root@daili ~]# vim /etc/squid/squid.conf
http_access allow all(允许所有代理/默认拒绝,要开启)
。。
cache_dir ufs /var/spool/squid 100 16 256(把注释去掉以开启)
。。
visible_hostname www.hydra.org(配置主机名)
。。
http_port 3128(配置监听端口)
[root@daili ~]# /etc/init.d/squid start(启动服务)
[root@daili ~]# curl http://192.168.2.100(在本机测试访问web主机)
hydra
[root@beiqiang ~]# curl --proxy1.0 192.168.4.5:3128 http://192.168.2.100(使用客户机测试)
hydra
[root@beiqiang ~]# curl -I --proxy1.0 192.168.4.5:3128 http://192.168.2.100(-I抓包)
HTTP/1.0 200 OK
Last-Modified: Sun, 13 Aug 2017 22:25:20 GMT
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html; charset=UTF-8
Date: Sun, 13 Aug 2017 23:31:46 GMT
Server: Apache/2.2.15 (Red Hat)
ETag: "1c0bba-6-556aa057c2f58"
X-Cache: HIT from www.hydra.org
X-Cache-Lookup: HIT from www.hydra.org:3128
Via: 1.0 www.hydra.org (squid/3.1.23)
Connection: keep-alive

squid反向代理:
与传统代理方向相反,代替公网用户访问组织内部的web服务器
部署基于地区的cdn服务器
测试:配置反向代理服务器
[root@daili ~]# vim /etc/squid/squid.conf
http_port 80 vhost(注意端口冲突,端口改为80)
cache_peer 192.168.2.100 parent 80 0 originserver(本机ip 端口 原始服务器)
[root@daili ~]# /etc/init.d/squid restart(设置后重启服务)
[root@beiqiang ~]# curl http://192.168.4.5(客户机直接访问代理服务器)
hydra

——————————————————————————————————————————————————————

ACL控制访问列表

定义acl
acl 列表名称 列表类型 列表内容
示例:
acl xx src url_regex .*\.mp4

常见的acl列表类型:
src:源地址
dst:目标地址
port:目标端口
time:访问时间
dstdomain:目标域
maxconn:最大并发连接
url_regex:目标url地址
urlpath_regex:整个目标url路径

匹配规则
未设置任何规则时,拒绝所有访问请求
已设置规则时,依次进行检查,匹配即停止,
否则采用最后一条规则相反的权限。

调用acl
http_access allow 列表名称
http_access deny 列表名称

示例:
[root@daili ~]# vim/etc/squid/squid.conf
acl xiuxi time MTWHF 00:00-12:00(定义acl)
acl ip src 192.168.1.1(定义acl)
.....
http_access deny xiuxi(调用acl)
http_access deny ip(调用acl)

案列:
禁止任何客户机使用此代理服务
[root@daili ~]# vim/etc/squid/squid.conf
acl renhe src 0.0.0.0/0.0.0.0
。。。。
http_access deny all

案列:
允许多个局域网网段在工作时间上网
[root@daili ~]# vim/etc/squid/squid.conf
acl all src 0.0.0.0/0.0.0.0
acl wangduan src 192.168.2.0/24 192.168.3.0/24
acl shijian time MTWHF 09:30-18:30
http_access allow wangduan shijian
http_sccess deny all

通过黑名单限制目标网站
[root@daili ~]# vim/etc/squid/ipblock.list(创建地址列表)
61.135.16.35
56.125.65.98
60.28.16.0/24
[root@daili ~]# vim/etc/squid/dmblock.list(创建域列表)
.qq.com
.google.com
[root@daili ~]# vim/etc/squid/squid.conf
acl ipaddress dst "/etc/squid/ipblock.list"
acl dmname dstdomain "/etc/squid/dmblock.list"
。。。。。
acl http_access deny ipaddress
acl http_access deny dmname

[root@daili ~]# vim/etc/squid/squid.conf
acl binfa maxconn 20(最大支持20个用户连接)
.。。。
http_access deny binfa

————————————————————————————————————————————————
varnish服务器

varnish是一款高薪能且开源的反向代理服务器和http加速器
与传统的squid相比,varnish具有性能更高,速度更快,
管理更方便等诸多优点

varnish服务器
/etc/varnish:配置文件目录
/etc/init.d/varnish:varnish启动程序
/etc/sysconfig/varnish:配置文件,varnish定义自身属性
/etc/varnish/default.vcl:默认配置文件,定义后端节点
/usr/bin/varnish_reload_vcl:加载vcl
/usr/bin/varnishadm:客户端程序
/usr/bin/varnishstat:状态监控

部署varnish
编译安装(红帽没有内置的yum包,需要源码包安装)
[root@daili ~]# yum -y install readline-devel pcre-devel
[root@daili ~]# useradd -s /sbin/nologin varnish
[root@daili ~]# tar -xzf varnish-3.0.6.tar.gz
[root@daili ~]# cd varnish-3.0.6
[root@daili ~]# ./configure --prefix=/usr/local/varnish
[root@daili ~]# make
[root@daili ~]# make install
[root@daili ~]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@daili ~]# cp redhat/varnish.sysconfig/etc/sysconfig/varnish
[root@daili ~]# cp redhat/varnish_reload_vcl /usr/bin/
[root@daili ~]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/

[root@daili ~]# vim /etc/sysconfig/varnish
VARNISH_VCL_CONF=/etc/varnish/default.vcl:后台配置文件路径
VARNISH_LISTEN_PORT=80:默认端口6081(要改为80)
VARNISH_SECRET_FILE=/etc/varnish/secret:密钥文件
VARNISH_STORAGE_SIZE=64M:缓存大小,默认1G
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}":默认为硬盘存储,改为基于内存方式

[root@daili]# cd /etc/varnish
[root@daili varnish]# vim default.vclvim default.vcl(改后台配置文件)
backend default {
.host = "192.168.2.5";
.port = "80";
}
[root@daili]# service varnish restart(配置完成后重启服务)
[root@beiqiang /]# curl http://192.168.4.5(客户机测试访问代理服务器)
hydra

清除缓存命令格式:
varnishadm -T ip:端口 -S /etc/varnish/secret(密钥文件)
[root@daili ~]# varnishadm ban.list(查看缓存)
[root@daili ~]# varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url /test.html(删除缓存)

varnish日志
varnishlog [-w file](共享内存的日志,不写参数则把日志直接显示在屏幕上)
varnishncsa [-w file](类apache日志,不写参数则把日志直接显示在屏幕上)

——————————————————————————————————————————————————————————

上一篇:百度云曲显平:AIOps时代下如何用运维数据系统性地解决运维问题?


下一篇:CMDB(Configuration Management Database)资产管理系统和 运维自动化