OpenSSH 服务器的 20 个最佳实践–手工升级、打补丁

前几天安全团队发邮件说其中一台服务器的OpenSSH6.2的版本有bug,需要升级到6.7才行。

于是我赶紧登录到服务器看,在openSuSE里的yast里提供的最新版本就是6.2,如果要强升级到6.7,只有在 -openssh 的站点下载最新的源码,然后编译、安装。

问题是,通过源码编译安装的openssh与openSuSE自带的安装可能存在路径上的差异。

openSuSE随机安装的openssh的配置文件默认在 /etc/ssh/sshd_config下,而通过源码编译、安装的配置文件默认在 /usr/local/etc/sshd_config 下,如果要在编译时指定 –prefix ,比如:
shell> ./configure –prefix=/usr

则相应的配置文件会生成在 /usr/etc/sshd_config 下面。这是会发现,不但配置文件会新生成,在启动脚本里,也会将使用的配置文件指向新生成的配置文件,而不是使用原来的/etc下面的sshd_config .

如果在安装升级后不进行测试,可能会导致 /etc/ssh/sshd_config 文件失效,而使用中的配置文件变成了 openSSH自带的默认配置的文件,这是很危险的,默认的openSSH的配置文件,可能只有基于password的验证。普遍情况下,这是不能被允许的。

正确的在yast之外,不使用repository的情况下,手工下载源码包进行升级的步骤:

1. 到 -openssh 站下载源码包;

2. 解压,修改 versions.h 中的版本信息,进一步增强安全,隐去具体的版本号;

3. 带 –prefix=/usr  –with-pam 进行配置 ;

4. 进行编译, make

5. 停掉 sshd服务和进程,使用 ps确认停掉了相应的进程;

6. make install

7. 替换 /usr/etc/sshd_config 或者 /usr/local/etc/sshd_config, 通常的做法是,移去这样的文件,然后在相应的目录下生成指向 /etc/ssh/sshd_config的软连接:
shell> cd /usr/etc/;
shell> mv sshd_config sshd_config.orig
shell> ln -s /etc/ssh/sshd_config sshd_config

8. 重新启动 ssh 服务, /etc/init.d/sshd start

9. ps 确认相关进行正常运行中

10. 找另外一台计算机以通常的方式尝试进行连接,确认新的 ssh服务正常提供服务

 

发表在 服务器运维, 计算机技术 | 留下评论

迪士尼母婴显白黑茶色蓝黑色板栗色三元牛奶李宁体育用品

OpenSSH 服务器的 20 个最佳实践(转)

原文:-R/32Tg

OpenSSH 是 SSH 协议的开源实现。 OpenSSH 可进行远程登录、备份、通过 scp 或 sftp 进行远程文件传输等等。 SSH 最完美的确保两个网络和系统之间交换数据的机密性和完整性。其主要的优点是通过使用公共密钥加密进行服务器身份验证。然而,不时有传闻关于 OpenSSH 零日漏洞。这里我们列出一些重要的事情,你需要作出调整来提高 OpenSSH 服务器的安全性。

默认配置文件和端口

  • /etc/ssh/sshd_config – OpenSSH 服务器配置文件
  • /etc/ssh/ssh_config – OpenSSH 客户端配置文件
  • ~/.ssh/ – 用户独立的 ssh 配置目录
  • ~/.ssh/authorized_keys or ~/.ssh/authorized_keys – 公钥 (RSA or DSA)
  • /etc/nologin – 如果该文件存在,则只允许 root 帐号登录
  • /etc/hosts.allow and /etc/hosts.deny : 访问控制定义
  • SSH 默认端口 : TCP 22
SSH Session in Action连接中的 SSH 会话

#1: 禁用 OpenSSH 服务

一些工作站或者是笔记本是无需 OpenSSH 服务的,你不需要提供远程登录和文件传输,那么就禁用 SSHD 服务吧。CentOS/RHEL/Fedora Linux 用户可通过 yum 命令来禁用并删除 openssh-server 服务:

1
2
# chkconfig sshd off
# yum erase openssh-server

Debian / Ubuntu Linux 用户可通过 apt-get 命令来处理:

1
# apt-get remove openssh-server

你还需要更新 iptables 脚本来移除 ssh 例外规则,在 CentOS / RHEL / Fedora 下可编辑 /etc/sysconfig/iptables 和 /etc/sysconfig/ip6tables. 搞定后重启 iptables 服务即可:

1
2
# service iptables restart
# service ip6tables restart<code></code>

#2: 只使用 SSH Protocol 2

SSH 协议版本 1 有很多漏洞和安全问题,应该避免使用 SSH-1,可通过在 sshd_config 文件中配置如下信息来启用 SSH-2:

1
Protocol 2

#3: 限制用户访问 SSH

默认所有系统用户都可以通过 SSH 登录,只需要用密码或者公钥即可。有时候你创建某个用户只是为了使用邮件或者是 FTP,但是这些用户也可以通过 ssh 登录,登录后就可以访问很多的系统工具,包括编译器和脚本语言,可打开网络端口以及做很多其他的事情。我们可以通过 sshd_config 文件中的 AllowUsers 和 DenyUsers 来设置可访问 SSH 服务的用户名单。

下面配置只允许 root, vivek 和 jerry 三个帐号使用 SSH 服务

1
AllowUsers root vivek jerry

你也可以设置哪些用户不能访问 SSH:

1
DenyUsers saroj anjali foo

你也可以 配置 Linux PAM 来允许或者拒绝通过 sshd 服务器登录,你也可以对一个分组进行设置是否可以访问 ssh (详情)

#4: 配置空闲登出的超时间隔

用户通过 ssh 登录到服务器后,如果长时间没有任何动作的话,可通过设置空闲超时时间来让登录的用户自动登出,以避免一些不必要的 ssh 会话连接。打开 sshd_config 文件查看并编辑如下配置:

1
2
ClientAliveInterval 300
ClientAliveCountMax 0

这里我们设置了 300 秒(5分钟),一旦用户在 5 分钟内没有动作则会自动被踢出。请看 如何自动登出 BASH / TCSH / SSH  以了解更多无活动状态自动登出的详情。

#5: 禁用 .rhosts 文件

不读取用户命令下的 ~/.rhosts 和 ~/.shosts 文件,只需在 sshd_config  中使用如下设置:

1
IgnoreRhosts yes

SSH 可模拟过时的 rsh 命令的行为,需要禁用通过 RSH 的非安全登录。

#6: 禁用基于主机的认证

在 sshd_config 中使用如下配置:

1
HostbasedAuthentication no

#7: 禁止 root 帐号通过 SSH 登录

没必要让 root 帐号可通过 ssh 登录,可通过正常用户登录后然后执行 su 或者 sudo 来执行 root 权限的操作,可在 sshd_config 中使用如下配置来禁用 root 帐号登录:

1
PermitRootLogin no

关于这个问题,Bob 给出了很棒的说明:

Saying “don’t login as root” is h******t. It stems from the days when people sniffed the first packets of sessions so logging in as yourself and su-ing decreased the chance an attacker would see the root pw, and decreast the chance you got spoofed as to your telnet host target, You’d get your password spoofed but not root’s pw. Gimme a break. this is 2005 – We have ssh, used properly it’s secure. used improperly none of this 1989 will make a damn bit of difference. -Bob

#8: 启用警告的 Banner

可以在 sshd_config 中通过如下配置来启用通过 ssh 登录后的警告信息:

1
Banner /etc/issue

下面是 /etc/issue 文件的示例内容:

----------------------------------------------------------------------------------------------
欢迎访问 oschina 服务器,请不要乱来!!!
----------------------------------------------------------------------------------------------

#8: 防火墙处理 SSH 端口 # 22

你需要在防火墙规则中打开 22 端口,除非你的服务器只允许通过局域网访问:

Netfilter (Iptables) 配置

编辑 /etc/sysconfig/iptables (红帽系列 Linux) 以允许来自 192.168.1.0/24 和 202.54.1.5/29 两个网段的连接:

1
2
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -j ACCEPT

如果你的系统启用了 IPv6 ,编辑 /etc/sysconfig/ip6tables (Redhat and friends specific file):

1
-A RH-Firewall-1-INPUT -s ipv6network::/ipv6mask -m tcp -p tcp --dport 22 -j ACCEPT

用实际的 IPv6 范围替换其中的 ipv6network::/ipv6mask

*BSD PF 防火墙配置

如果你使用了 PF 防火墙,可更新 /etc/pf.conf 配置如下:

1
pass in on $ext_if inet proto tcp from {192.168.1.0/24, 202.54.1.5/29} to $ssh_server_ip port ssh flags S/SA synproxy state

#9: 修改 SSH 端口和限制 IP 绑定

默认 SSH 绑定到所有网卡的所有 IP,端口号是 22,建议只绑定到需要的网卡 IP ,并修改默认的端口。可通过 ssh_config 配置文件中使用如下配置信息将端口修改为 300:

1
2
3
Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5

还有一个更好的方法是使用积极主动的脚本,诸如 fail2ban 或者是 denyhosts

#10: 使用强的 SSH 密码

使用强而复杂的密码是多么重要的一件事。蛮力攻击之所以有效,是因为你使用基于字典的密码。你可以强制要求用户不能使用基于字典的密码,并通过使用 john the ripper tool 来找出已有的弱密码,下面是一个随机密码生成器的示例:(放在你的 ~/.bashrc):

1
2
3
4
5
genpasswd() {
    local l=$1
        [ "$l" == "" ] && l=20
        tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}

运行: genpasswd 16
输出:uw8CnDVMwC6vOKgW

#11: 使用基于公钥的认证

使用公/私钥配对,并对私钥提供密码保护,详情请看使用基于 RSA 和 DSA key 的认证。绝对不要使用密码短语免费密钥(密码键更少)登录。

#12: 使用 Keychain 认证

keychain 是一个特别的 bash 脚本,用于方便灵活的生成基于密钥认证,提供多种安全措施,详情请看keychain software.

#13: Chroot SSHD (将用户锁定在他的主目录下)

默认用户允许浏览服务器上的目录,如 /etc、/bin 等,我们可使用 chroot 或者是 special tools such as rssh来保护 ssh。而 OpenSSH 4.8p1 和 4.9p1 让你不再依赖第三方的工具(如rssh和组合 chroot)来将用户锁定在他的主目录下,详情请看 blog post 关于如何使用 ChrootDirectory 指令。

#14: 使用 TCP Wrappers

TCP Wrapper 是一个基于主机地址的网络 ACL 系统,用来过滤网络地址访问互联网。OpenSSH 支持 TCP Wrappers。只需要更新你的 /etc/hosts.allow 文件只允许通过 192.168.1.2 172.16.23.12 访问 sshd:

1
sshd : 192.168.1.2 172.16.23.12

详情请看 FAQ about setting and using TCP wrappers

#15: 禁用空密码

你应该禁止帐号使用空密码进行远程登录,在 sshd_config 使用如下配置即可:

1
PermitEmptyPasswords no

#16: 阻止 SSH 破解 (蛮力破解攻击)

蛮力破解是一种试图通过大量使用单一或分布式计算机网络来战胜一个加密方案。为了阻止这种方法,可结合使用如下软件:

  • DenyHosts 是Python语言写的一个程序,它会分析SSHD的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文 件,从而达到自动屏蔽IP的功能。
  • 解释如何在 RHEL、Fedora 和 CentOS 系统下安装 DenyHosts
  • Fail2ban 是一个 IP 自动屏蔽工具
  • security/sshguard-pf 在 pf 中防止暴力破解
  • security/sshguard-ipfw 在 ipfw 中防止暴力破解
  • security/sshguard-ipfilter 在 ipfilter 中防止暴力破解
  • security/sshblock block abusive SSH login attempts.
  • security/sshit checks for SSH/FTP bruteforce and blocks given IPs.
  • BlockHosts Automatic blocking of abusive IP hosts.
  • Blacklist Get rid of those bruteforce attempts.
  • Brute Force Detection A modular shell script for parsing application logs and checking for authentication failures. It does this using a rules system where application specific options are stored including regular expressions for each unique auth format.
  • IPQ BDB filter May be considered as a fail2ban lite.

#17: 限制 22 端口连接的速率

netfilter 和 pf 都提供了连接速率限制选项

Iptables 示例

下面配置禁止在一分钟内 22 端口超过 5 个连接:

1
2
3
4
5
#!/bin/bash
inet_if=eth1
ssh_port=22
$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --set
$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --update --seconds 60 --hitcount 5 -j DROP

另外的配置选项:

1
2
3
4
5
$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o ${inet_if} -p tcp --sport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT
# another one line example
# $IPT -A INPUT -i ${inet_if} -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -m limit --limit 5/minute --limit-burst 5-j ACCEPT

更多的配置详情请看 iptables 的 man 页。

*BSD PF 示例

以下将限制的最大连接数到20,每个源速率限制连接数,在一个5秒的跨度15。如果有人打破我们的规则将它们添加到我们的阻止的ip表和阻止他们做任何进一步的连接。

1
2
3
4
sshd_server_ip="202.54.1.5"
table <abusive_ips> persist
block in quick from <abusive_ips>
pass in on $ext_if proto tcp to $sshd_server_ip port ssh flags S/SA keep state (max-src-conn 20, max-src-conn-rate 15/5, overload <abusive_ips> flush)

#18: 使用端口碰撞技术(Port Knocking)

端口碰撞技术 是一个方法的外部开放端口防火墙通过生成一个连接请求在一组预先指定关闭端口。一旦一个正确的顺序连接尝试接收,防火墙规则是动态修改为允许主机将连接尝试连接在特定端口(s)。

使用 iptables 配置端口碰撞的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$IPT -N stage1
$IPT -A stage1 -m recent --remove --name knock
$IPT -A stage1 -p tcp --dport 3456 -m recent --set --name knock2
 
$IPT -N stage2
$IPT -A stage2 -m recent --remove --name knock2
$IPT -A stage2 -p tcp --dport 2345 -m recent --set --name heaven
 
$IPT -N door
$IPT -A door -m recent --rcheck --seconds 5 --name knock2 -j stage2
$IPT -A door -m recent --rcheck --seconds 5 --name knock -j stage1
$IPT -A door -p tcp --dport 1234 -m recent --set --name knock
 
$IPT -A INPUT -m --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 5 --name heaven -j ACCEPT
$IPT -A INPUT -p tcp --syn -j doo

两个软件:

  • fwknop 是一个结合端口碰撞和被动操作系统识别技术的实现
  • Multiple-port knocking 仅限于 Netfilter/IPtables 的实现

#19: 使用日志分析器

可通过 logwatch or logcheck 来阅读日志,这些工具可以让你轻松的浏览日志。通过指定时间来给出日志的报告。首先要确保在 sshd_config 中将日志级别 LogLevel 设置为 INFO 或者 DEBUG:

1
LogLevel INFO

#20: 对 OpenSSH 和操作系统打补丁

推荐你使用诸如 yum, apt-get, freebsd-update 工具来保持系统的即时获取最新的安全补丁。

其他选项

为了隐藏 openssh 版本,你可更新源码然后再次编译 openssh ,并确保在 sshd_config 中使用如下配置:

1
2
3
4
5
6
7
8
9
10
11
#  Turn on privilege separation
UsePrivilegeSeparation yes
# Prevent the use of insecure home directory and key file permissions
StrictModes yes
# Turn on  reverse name checking
VerifyReverseMapping yes
# Do you need port forwarding?
AllowTcpForwarding no
X11Forwarding no
#  Specifies whether password authentication is allowed.  The default is yes.
PasswordAuthentication no

在重启 openssh-server 之前先用如下命令验证配置是否正确:

1
# /usr/sbin/sshd -t

使用 two-factor 或者 three-factor (or more) 认证来加强 OpenSSH 的安全。

发表在 服务器运维, 计算机技术 | 标签为 | 留下评论

插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板書中自有顔如玉冰糖雪梨膏儿童宝宝砀山慈梨膏汽車老司機車載

-gwa2安全更新

 

if(preg_match(“/[a-zA-Z0-9_\-]*/”,$mod)){

include(“./ctrl/”.$mod.”.php”);
}
else{
print “ERROR.”;
error_log(__FILE__.”: found error mod:[$mod]”);
}
#include(“./ctrl/”.$mod.”.php”);

发表在 -GWA2, 计算机技术 | 留下评论

显白黑茶色蓝黑色板栗色三元牛奶李宁体育用品汽車老司機

-gMIS更新:增加默认主页和多层全路径

-gMIS 通用信息管理系统 主要更新:

1. 增加默认主页,在该页面增加一些快捷链接实用信息。

gmis-201410-homepage

主要包括常用的模块列表,根据调用频度排序,调用频次越高的排列往前。另外提供桌面列表,手工调整,增加一些快捷方式在桌面上。

2. 在导航栏提供全路径

gmis-201410-fullpath全路径可以更明确的告诉用户,当前所处的位置。

 

发表在 -gMIS, 计算机技术 | 标签为 | 留下评论

插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板書中自有顔如玉冰糖雪梨膏儿童宝宝砀山慈梨膏汽車老司機車載

民主是保护私权,不是按大多数人的意办

(鞠强教授口述 学术秘书整理)

因为鞠教授也讲政治心理学,所以今天也来谈谈什么是民主这个话题。

中国人普遍认为:民主就是按大多数人的意办。这和西方的主流观点相差甚远,是典型的中国人民主观。

我们且看下民主的产生简史,让我们眼光回到美国早期:早期欧洲移民跑到蛮荒之地美国大陆殖民,大家各开垦各的荒地,彼此之间都是平等的,后来聚集成了村庄,就产生了公共事务。

比如每家都要挖一条污水沟排污水,工程量浩大,不如挖条总的污水沟,各家再挖条小沟到总污水沟,就可以节约很多劳力,于是个人就把自己的挖沟权让渡出去,由一个总机构来提供挖大污水沟的公共服务。又比如,本来每家每户晚上派人拿枪值班严防野兽和土匪的袭击,这个太麻烦了,于是各家各人都把治安权让渡出去,交给一个总机构,组织夜晚的巡逻队,提供治安公共服务,效率就高多了。

以此类推,个人把许多权利让渡出去,比如挖沟权、治安权、教育权、修路权、挖井权…交给一个总机构,统一提供公共服务,这个总机构就叫村政府。后来村与村之间又有了公共事务,比如修马路,于是各个村政府把自己部分权力让渡出去,形成县、市政府。县、市政府又把自己权利让渡出去一部分形成州政府(省政府)。州政府再把邮政权、铸币权、宣战权、建军权、外交权让渡[出去就形成了中央政府。所以西方世界的中央政府的权利大小取决于各省政府让渡多少。比如,澳大利亚中央政府建立时,使用列表式,只有八项权利,其他事情不能管。

各位同学,你们听明白了吗?西方的观念是政权来自于民权,或公共权力来自私权,也叫主权来自于人权,又称为主权在民,即政府有多大权力,取决于个人权力中让渡出多少!

既然公共权力是从个人私权中让渡出来的,自然在公共权力的行使中要实行民主的制度。所以准确地说,民主是按大多数人的意见进行决策是以偏概全的。

准确地说:民主是个人权力中让渡出去成为公共事务权力的那一部分实行按大多数人的意见进行决策;没有让渡出来的权力,是不可以按照少数服从多数的原则进行决策的。 之所以要搞民主,目的就是为了保护自由(也就是私权),当民主和自由相矛盾时,舍民主而保自由!

比如说,婚姻权就是私权,不可以民主决定你可不可以结婚。几十年前中国有一个著名的女性想结婚。我党不同意,于是开了个民主投票会,民主决定她不能结婚,于是她就无法结婚了,这就是中国人的民主观。比如财产权是属于私权,是绝对不可以按大多数人意愿把别人财产分掉,西方人根本无法理解中国的土地革命。

比如日本东京有个飞机场,中间有块水稻田,田主死活不肯卖,于是只好在飞机场中保留一块水稻田,若按中国人的观念,那肯定要按大多数人的意见办毁了这块田。又比如台湾的土改,是采用忽悠的办法购买地主的土地,蒋介石身边有一个十分西化的老婆,受此影响是断断不敢直接把别人的地分掉的,他先打压地价,让地价降下来,再大量发行烟糖酒等国营企业的股票,用这些股票去换地主的土地,再以很低的价格卖给老百姓。这样懒汉思想不易产生。再比如,西方人认为生命权是属于个人的,所以他们废除了死刑,也有很多人反对堕胎,就是从这个理念出发的。再比如:一般人是不肯把思考权和言论权让渡给国家的,所以西方特别强调学术自由。

民主从公权侵入私权,还可以被政治人物利用,获取广大底层人民的非理性需求,比方假定有个政治人物宣布:广大农村户口的人实际上是受城里户口人的压迫,因此城里人应该把他们的房产交一半出来,无偿分给广大农村户口的人。假定中国有10亿农村户口(包括大量在城里工作但户口是农村的人),5亿城市户口,如果搞民主选举,相信这个政治人物是一定会得到大多数人民群众拥护的,但理智分析,这一定会天下大乱并且培养出浓厚的懒汉文化。

上述这种为满足底层人民非理性懒汉需求的思潮在政治学上不叫民主,他的标准称呼叫:民粹主义!民粹主义最典型的特征是民主扩散到私权。并且诉诸情绪化或者低级需求或者懒汉需求满足。

文化大革命的大民主就是典型的民粹主义!红卫兵可以根据广大人民多数人的意见在群众大会上当众打死地富反坏右的!理由是这是民主的呼声!当时死了许多人!西方这些民主发源地的人是无论如何也理解不了这种中国式民主的.

方政治心理学还有个说法:民主侵入私权,一定会导致独裁。因为假定可以以民主名义宣布你死刑,特别是因为说话而获得死刑,自然谁也不敢说话了!

各位同学,大家是否发现中国人理解的民主跟西方人理解的民主差异很大。

在中国,民主简直成了神器,人人都喊民主,好像是一切价值的源泉,是最高价值准则,是道德标准!甚至反对民主的人都叫嚷着民主。实际上民主这玩意儿作用不是想象中那么大,如果按中国人的民主观搞下去,可以在私权的领域也搞民主,势必又闹出一场文化大革命,中国又得倒退几十年! ?

写在后面的话:民主其实就是保护私权。列宁临死前也承认:资本主义就是保护私有制。孔子也认为:天下大同,和而不同,应当求同存异。我不同意你的观点,但我尊重你说话的权利,这也是保护私权。人类有天生的自由保护个人权利的权利,自由与民主息息相关,因此也成为美国宪法修正案保护的首选。“民主”这个陌生的西方词汇自“五四”运动以后曾一度变得家喻户晓,更被某一团体发扬光大运用到极致,但在得到了想要得到的一切后却突然“变脸”,又把它变成了一种禁忌。

在某一种强大的舆论引导下,人们一直把“少数服从多数”误读为“民主”。有多少罪恶都是假以“民主”的名义进行?又有多少谬论冠以“民主”的冠冕进行伪装?朝鲜人民民主共和国更是将“民主”一词侮辱的面目全非,不忍卒读。

-R/l2Sp

发表在 社会生活 | 留下评论

显白黑茶色蓝黑色板栗色三元牛奶李宁体育用品汽車老司機

日本两篇

不做夜郎自大,吾日三省其身。长文请先mark再细读。

日本1: 信力健:这么看来,日本真的可怕。

日本1-201410

日本2: 姜建强:你以为日本是什么样

日本2-201410

发表在 社会生活 | 留下评论

汽車老司機愛自己悅己容2nd插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板書中自有顔如玉