忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: old_farmers

[文本处理] linux安全日志文件 grep "failure" /var/log/secure [复制链接]

论坛徽章:
0
发表于 2018-07-03 16:26 |显示全部楼层
本帖最后由 old_farmers 于 2018-07-03 16:36 编辑

回复 8# wh7211

好吧  我又来了,这样好像数字不会变,例如最近的三分钟没人登录错误,那就显示结果为0。  或许我应该说是统计当前时间的前三分钟,有登录错误(用户,IP是同一个)超过3次显示user=用户 rhost=ip 次数   如果没有登录错误信息则显示 0


[root@RHEL sh]# date
Tue Jul  3 16:12:43 CST 2018
[root@RHEL sh]# tail -1 /var/log/secure
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test
[root@RHEL sh]# awk -vcudate=$(date -d "$(awk 'END{print $1,$2,$3}' /var/log/secure)" +%s) '/authentication failure;/{$1=/^Jan/?1:/^Feb/?2:/^Mar/?3:/^Apr/?4:/^May/?5:/^Jun/?6:/^Jul/?7:/^Aug/?8:/^Sep/?9:/^Oct/?10:/^Nov/?11:/^Dec/?12:0;gsub(":"," ",$3);a=mktime("2018 "$1" "$2" "$3"");if(a>=cudate-180){b[$NF" "$(NF-1)]++}}END{for(i in b){if(b>=3){print i,b}}}' /var/log/secure
user=test rhost=172.24.80.61 6
user=root rhost=172.24.80.43 6
[root@RHEL sh]#

如果一直有数字的话zabbix会不停报警。我设置的就是检验次数,超过三次就报警。


1111.jpg

论坛徽章:
16
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:0915-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59CU十四周年纪念徽章
日期:2018-05-15 11:36:3815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:4215-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之北京
日期:2018-03-23 15:24:07
发表于 2018-07-03 16:53 |显示全部楼层
回复 11# old_farmers


  1. awk -vcudate=$(date +%s) '/authentication failure;/{$1=/^Jan/?1:/^Feb/?2:/^Mar/?3:/^Apr/?4:/^May/?5:/^Jun/?6:/^Jul/?7:/^Aug/?8:/^Sep/?9:/^Oct/?10:/^Nov/?11:/^Dec/?12:0;gsub(":"," ",$3);a=mktime("2018 "$1" "$2" "$3"");if(a>=cudate-180){b[$NF" "$(NF-1)]++}}END{if(length(b)){for(i in b){if(b[i]>=3){print i,b[i]}}}else{print "0"}}' /var/log/secure
复制代码

论坛徽章:
0
发表于 2018-07-03 17:15 |显示全部楼层
本帖最后由 old_farmers 于 2018-07-03 17:17 编辑

回复 12# wh7211

非常感谢,我用脚本都不知道怎么理清逻辑,大神一条语句就能搞定。目前能看懂的:
awk -vcudate=$(date +%s)   awk变量赋值
'/authentication failure;/   正则匹配
gsub(":"," ",$3)      替换,相当于tr 冒号替换为空格,今天刚从你回别人的帖子学会。
http://bbs.chinaunix.net/thread-4296507-1-1.html
[root@RHEL sh]# df -h | awk '/^[^File]/{gsub("%","",$5);print $0}' | awk '{if($5>40)print $0}' 我只能一条条处理,awk支持多个模式pattern,写在一起我就绕了。
其他的花括号中的月份是数组吗?








论坛徽章:
3
CU十四周年纪念徽章
日期:2017-08-28 17:16:1915-16赛季CBA联赛之北控
日期:2018-03-29 11:39:0615-16赛季CBA联赛之上海
日期:2018-05-21 10:46:10
发表于 2018-07-03 17:47 |显示全部楼层
  1. awk -vt="$(date +%m:%d:%H:%M:%S)" 'function test(a,b,c){return a*60*60+b*60+c}BEGIN{split(t,A,":");NT=test(A[3],A[4],A[5])}/sshd/&&/failure/{echo "date -d "$1 $2" +%m%d" | getline B ; if(A[1]A[2]==B) {split($3,C,":");OT=test(C[1],C[2],C[3]);if((NT-OT)<=180&&(NT-OT)>=0) D[$(NF-1)" "$NF]++}}END{for(i in D) if(D[i]>=3) print i,D[i]}' /var/log/secure
复制代码

论坛徽章:
16
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:0915-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59CU十四周年纪念徽章
日期:2018-05-15 11:36:3815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:4215-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之北京
日期:2018-03-23 15:24:07
发表于 2018-07-03 17:49 |显示全部楼层
回复 13# old_farmers


df -h | awk '/^[^File]/{gsub("%","",$5);print $0}' | awk '{if($5>40)print $0}'

可以写成:
  1. df -h|awk -F"[ %]+" 'NR>1&&int($5)>40'
复制代码
其他的花括号中的月份是数组吗?

b是数组

论坛徽章:
0
发表于 2018-07-03 18:00 |显示全部楼层
回复 14# 龙牙地主天

谢谢您的回复,执行有提示报错
[root@RHEL sh]# awk -vt="$(date +%m:%d:%H:%M:%S)" 'function test(a,b,c){return a*60*60+b*60+c}BEGIN{split(t,A,":");NT=test(A[3],A[4],A[5])}/sshd/&&/failure/{echo "date -d "$1 $2" +%m%d" | getline B ; if(A[1]A[2]==B) {split($3,C,":");OT=test(C[1],C[2],C[3]);if((NT-OT)<=180&&(NT-OT)>=0) D[$(NF-1)" "$NF]++}}END{for(i in D) if(D>=3) print i,D}' /var/log/secure
sh: +%m%d: command not found


论坛徽章:
0
发表于 2018-07-04 11:51 |显示全部楼层
11楼,楼主变更了需求,变得简单多了,不过我下面的解答,是对1楼的。

  1. function 导入日期([string]$特殊日期_字符串)
  2. {
  3.         $特殊日期_格式 = 'MMM dd HH:mm:ss'
  4.         $script:返回的日期 = New-Object DateTime
  5.         [System.DateTime]::TryParseExact(
  6.                 $特殊日期_字符串,
  7.                 $特殊日期_格式,
  8.                 [System.Globalization.CultureInfo]::InvariantCulture,
  9.                 [System.Globalization.DateTimeStyles]::none,
  10.                 [ref]$script:返回的日期)
  11. }

  12. $模板 =
  13. @'
  14. {日期时间*:Jun 29 14:08:23} szkrdb03 sshd[13689]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost={ip地址:172.1.1.1}  user={用户名:root}
  15. {日期时间*:Jun 29 14:08:27} szkrdb03 sshd[13690]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.1.1.1  user=root
  16. '@

  17. $ufile = Get-Content -raw -Path 'a:\pscode\0\convert_from_string\20180703\aaa.txt'
  18. $导入后的对象 = ConvertFrom-String  -TemplateContent $模板  -InputObject  $ufile


  19. $时间字符串_to_datetime类型对象_并排序 = $导入后的对象 |
  20.         Select-Object `
  21.                 @{N = '日期时间';E = { if (导入日期 $_.'日期时间') { return $script:返回的日期 } } },
  22.                 @{N = 'ip用户';E = { $_.'ip地址' + '-' + $_.'用户名' } } |
  23.         Sort-Object -Property '日期时间'


  24. $结果 = @()
  25. for ($i = 0; $i -lt $时间字符串_to_datetime类型对象_并排序.Count; $i++)
  26. {
  27.         $3分钟后 = $时间字符串_to_datetime类型对象_并排序[$i].'日期时间' + [timespan]::FromMinutes(3)
  28.         $3分钟内对象 = $时间字符串_to_datetime类型对象_并排序 | Where-Object { $_.'日期时间' -ge $时间字符串_to_datetime类型对象_并排序[$i].'日期时间' -and $_.'日期时间' -lt $3分钟后}
  29.         if ($3分钟内对象.Count -lt 3)
  30.         {
  31.                 continue
  32.         }
  33.        
  34.         $分组 = $3分钟内对象 |Group-Object -Property ip用户
  35.         #        $分组
  36.         foreach ($分组中的每个元素 in $分组)
  37.         {
  38.                 if ($分组中的每个元素.count -ge 3)
  39.                 {
  40.                         $tmp = [PSCustomObject]@{
  41.                                 开始时间 = $时间字符串_to_datetime类型对象_并排序[$i].'日期时间'
  42.                                 ip用户 = $分组中的每个元素.group[0].ip用户
  43.                                 重复次数 = $分组中的每个元素.count
  44.                         }
  45.                         $结果 += $tmp
  46.                 }
  47.         }
  48. }
  49. $结果
复制代码


=============================


点评:
1这个脚本题很好。
1.1根据题意,不能够把时间按三分钟,掐齐并错开。
如0----3分钟,4----6分钟。3:41:06----3:44:06。
而是要像九连环那样,把时间先排序,并按从小到大,一个三分钟,下一个三分钟。每个三分钟,是部分重叠的。

2powershell导入数据容易,计算日期容易,日期排序容易,分组容易。




脚本系统需求:
win + powershell 5 + convertfrom-string + 做模板
支持win7,但需要手动安装powershell 5。1


为了更更好地展示脚本,我修改了源数据。
Jun 29 14:12:45 szkrdb03 sshd[15285]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.33.30  user=zabbix
Jun 29 14:08:23 szkrdb03 sshd[13689]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.1.1.1  user=root
Jun 29 14:08:27 szkrdb03 sshd[13690]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.1.1.1  user=root
Jun 29 14:08:31 szkrdb03 sshd[13694]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=nagios
Jun 29 14:08:36 szkrdb03 sshd[13916]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=root
Jun 29 14:10:51 szkrdb03 sshd[14653]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=root
Jun 29 14:10:52 szkrdb03 sshd[14653]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=root
Jun 29 14:10:56 szkrdb03 sshd[14654]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=test
Jun 29 14:10:59 szkrdb03 sshd[14655]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.2.20.20  user=root
Jun 29 14:11:13 szkrdb03 sshd[14671]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.24.24  user=root
Jun 29 14:11:25 szkrdb03 sshd[14859]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.24.24  user=root
Jun 29 14:12:27 szkrdb03 sshd[15089]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.24.24  user=test
Jun 29 14:12:31 szkrdb03 sshd[15090]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.24.24  user=test
Jun 29 14:12:35 szkrdb03 sshd[15098]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.24.24  user=test
Jun 29 14:12:39 szkrdb03 sshd[15284]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.33.30  user=root
Jun 29 14:12:43 szkrdb03 sshd[15285]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.33.30  user=zabbix


脚本第21行执行完后,$导入后的对象 的输出

日期时间        ip地址       用户名
--------        ------       ------
Jun 29 14:12:45 172.24.33.30 zabbix
Jun 29 14:08:23 172.1.1.1    root
Jun 29 14:08:27 172.1.1.1    root
Jun 29 14:08:31 172.2.20.20  nagios
Jun 29 14:08:36 172.2.20.20  root
Jun 29 14:10:51 172.2.20.20  root
Jun 29 14:10:52 172.2.20.20  root
Jun 29 14:10:56 172.2.20.20  test
Jun 29 14:10:59 172.2.20.20  root
Jun 29 14:11:13 172.24.24.24 root
Jun 29 14:11:25 172.24.24.24 root
Jun 29 14:12:27 172.24.24.24 test
Jun 29 14:12:31 172.24.24.24 test
Jun 29 14:12:35 172.24.24.24 test
Jun 29 14:12:39 172.24.33.30 root
Jun 29 14:12:43 172.24.33.30 zabbix


结束时间=开始时间+3分钟。
最终 $结果 输出。

开始时间           ip用户            重复次数
--------           ------            --------
2018/6/29 14:08:23 172.2.20.20-root         4
2018/6/29 14:08:27 172.2.20.20-root         4
2018/6/29 14:08:31 172.2.20.20-root         4
2018/6/29 14:08:36 172.2.20.20-root         4
2018/6/29 14:10:51 172.2.20.20-root         3
2018/6/29 14:10:51 172.24.24.24-test        3
2018/6/29 14:10:52 172.24.24.24-test        3
2018/6/29 14:10:56 172.24.24.24-test        3
2018/6/29 14:10:59 172.24.24.24-test        3
2018/6/29 14:11:13 172.24.24.24-test        3
2018/6/29 14:11:25 172.24.24.24-test        3
2018/6/29 14:12:27 172.24.24.24-test        3



论坛徽章:
0
发表于 2018-07-04 16:43 |显示全部楼层
七月简写是Jul.八月简写是Aug. 时间的月份,如果按字母排序,恐怕不老行的。但是shell又不支持日期计算,这就尴尬了,需要自己编写日期算法。


11楼的需求简化了,但是我懒得重新简化脚本。只不过慢点。

17楼的代码简单修改,只输出 $结果  的最后一行,基本符合楼主需求。
代码如下:

  1. function 导入日期([string]$特殊日期_字符串)
  2. {
  3.         $特殊日期_格式 = 'MMM dd HH:mm:ss'
  4.         $script:返回的日期 = New-Object DateTime
  5.         [System.DateTime]::TryParseExact(
  6.                 $特殊日期_字符串,
  7.                 $特殊日期_格式,
  8.                 [System.Globalization.CultureInfo]::InvariantCulture,
  9.                 [System.Globalization.DateTimeStyles]::none,
  10.                 [ref]$script:返回的日期)
  11. }

  12. $模板 =
  13. @'
  14. {日期时间*:Jun 29 14:08:23} szkrdb03 sshd[13689]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost={ip地址:172.1.1.1}  user={用户名:root}
  15. {日期时间*:Jun 29 14:08:27} szkrdb03 sshd[13690]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.1.1.1  user=root
  16. '@

  17. $ufile = Get-Content -raw -Path 'a:\pscode\0\convert_from_string\20180703\aaa.txt'
  18. $导入后的对象 = ConvertFrom-String  -TemplateContent $模板  -InputObject  $ufile


  19. $时间字符串_to_datetime类型对象_并排序 = $导入后的对象 |
  20.         Select-Object `
  21.                 @{N = '日期时间';E = { if (导入日期 $_.'日期时间') { return $script:返回的日期 } } },
  22.                 @{N = 'ip用户';E = { 'user=' + $_.'用户名' + ' rhost=' + $_.'ip地址'   } } |
  23.         Sort-Object -Property '日期时间'


  24. $结果 = @()
  25. for ($i = 0; $i -lt $时间字符串_to_datetime类型对象_并排序.Count; $i++)
  26. {
  27.         $3分钟后 = $时间字符串_to_datetime类型对象_并排序[$i].'日期时间' + [timespan]::FromMinutes(3)
  28.         $3分钟内对象 = $时间字符串_to_datetime类型对象_并排序 | Where-Object { $_.'日期时间' -ge $时间字符串_to_datetime类型对象_并排序[$i].'日期时间' -and $_.'日期时间' -lt $3分钟后}
  29.         if ($3分钟内对象.Count -lt 3)
  30.         {
  31.                 continue
  32.         }
  33.        
  34.         $分组 = $3分钟内对象 |Group-Object -Property ip用户
  35.         #        $分组
  36.         foreach ($分组中的每个元素 in $分组)
  37.         {
  38.                 if ($分组中的每个元素.count -ge 3)
  39.                 {
  40.                         $tmp = [PSCustomObject]@{
  41.                                 开始时间 = $时间字符串_to_datetime类型对象_并排序[$i].'日期时间'
  42.                                 ip用户 = $分组中的每个元素.group[0].ip用户
  43.                                 重复次数 = $分组中的每个元素.count
  44.                         }
  45.                         $结果 += $tmp
  46.                 }
  47.         }
  48. }

  49. #$结果
  50. #if ($结果[-1].'开始时间' -lt ([datetime]'2018-06-29 14:15:26' - [timespan]::FromMinutes(3)) )

  51. if ($结果[-1].'开始时间' -lt ((get-date) - [timespan]::FromMinutes(3)) )
  52. {
  53.         Write-Host 0
  54. }
  55. else
  56. {
  57.         Write-Host $结果[-1].'ip用户'   $结果[-1].'重复次数'  
  58. }
复制代码


============
输出
0

user=test rhost=172.24.24.24 3

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-07-05 06:45 |显示全部楼层
# [ /home/soio/1bs/awks ] {2018-07-05 06:45:09}
: 1530744309:0;➜  awk -F' ' '{split($3,d,":");x1=d[2]*60+d[3];x1=a[NR];b[NR]=$NF" "$(NF-1)}END{for(i in a){if(a[i]>=x1-180){c[b[i]]++}};for(j in c){if(c[j]>=3)print }}' 10.t.kf  
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test

#-??-#
# [ /home/soio/1bs/awks ] {2018-07-05 06:45:16}
: 1530744316:0;➜  awk -F' ' '{split($3,d,":");x1=a[NR];b[NR]=$NF" "$(NF-1)}END{for(i in a){if(a[i]>=x1-180){c[b[i]]++}};for(j in c){if(c[j]>=3){print }}}' 10.t.kf
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-07-05 06:47 |显示全部楼层
# [ /home/soio/1bs/awks ] {2018-07-05 06:45:09}
: 1530744309:0;➜  awk -F' ' '{split($3,d,":");x1=d[2]*60+d[3];x1=a[NR];b[NR]=$NF" "$(NF-1)}END{for(i in a){if(a[i]>=x1-180){c[b[i]]++}};for(j in c){if(c[j]>=3)print }}' 10.t.kf  
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test

#-??-#
# [ /home/soio/1bs/awks ] {2018-07-05 06:45:16}
: 1530744316:0;➜  awk -F' ' '{split($3,d,":");x1=a[NR];b[NR]=$NF" "$(NF-1)}END{for(i in a){if(a[i]>=x1-180){c[b[i]]++}};for(j in c){if(c[j]>=3){print }}}' 10.t.kf
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test
Jul  3 15:49:35 localhost sshd[4032]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.24.80.61  user=test

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP