给大家几个日常工具,一行命令搞定基础环境建设

2018-12-05 09:23:57 +08:00
 ywgx

1.安装 MySQL

# curl -s xabc.io/mysql | bash

2.安装 Redis

# curl -s xabc.io/r | bash

3.安装 OpenResty 也就是 Nginx

# curl -s xabc.io/o | bash

4.安装 Java 环境,即 JDK8 和 Tomcat8

# curl -s xabc.io/j | bash

5.安装 PHP7 环境

# curl -s xabc.io/php | bash

6.安装 Influxdb 时序数据库

# curl -s xabc.io/influxdb | bash

7.安装编译环境

# curl -s xabc.io/base | bash

8.生成 Nginx server {} 段配置

# curl -s xabc.io/w-bbs.xabcloud.com-127.0.0.1:7001

自己搭建适合自己的

6660 次点击
所在节点    分享创造
56 条回复
msg7086
2018-12-06 09:32:14 +08:00
@ywgx 请问这位兄弟,你从上到下哪里看到我不信任你了?请问我恶意揣测你什么了?请问你大脑中凭空想象出了哪些内容?
ywgx
2018-12-06 09:46:45 +08:00
@msg7086 我们这边生产环境在使用,你说说看,生产环境使用了,咋啦?
ywgx
2018-12-06 11:35:13 +08:00
很多人说担心不安全,可以建设自己的 https://bbs.xabcloud.com/topic/19/view

xabc.io 里面的资源包,文件更新,我这边在维护

比如 redis 目前就是最新的 5.0.2 ;我分别在 CentOS 和 Ubuntu 下编译,打包

数据存储在腾讯云 CDN,所以下载还是比较快的
msg7086
2018-12-06 11:40:13 +08:00
@ywgx 既然你诚心诚意地问了,那我就随便说两点。

1. 你的 PHP 脚本
Debian Buster 的软件源里同时内置了 PHP7.2 和 PHP7.3。
请问用了你的 PHP 安装脚本以后,会安装几套 PHP ?

2. 你的 Redis 脚本
wget 直接下载了一个不知道什么版本的 Redis 直接解压到系统里运行。
请问你的 Redis 是在 root 权限下运行的还是在无权限用户下运行的?
你的 Redis 如果是在 root 权限下运行,被入侵了以后是不是能通过复写 /root/.ssh/authorized_keys 导致整台服务器被人黑掉?
通过 wget 下载的 Redis 程序如果以后发现了 CVE 漏洞,你通过什么方式来追踪哪些 CVE 是不会影响到的,哪些 CVE 是会影响到而且需要立刻升级版本才能修复的? CVE 追踪和版本升级你负责吗?如果不是你负责,谁负责?

你自己喜欢用这种非标准的手段来配服务器那是你的自由,我一句都不会多嘴。现在你放出来给大家用,不能有点责任心吗。要是有人用了你的 Redis 然后被人拿了 root 全公司数据丢光了你真的不会内疚吗?你怎么想的我是不知道,但是我自己是 Debian 上数个第三方软件包的维护者,我们公司自己的产品也好,公开给别人免费使用的开源软件源也好,负责任,保证自己做出来的软件包和磁盘镜像安全可靠,这是最基本的要求。别人的服务器,别人公司的命脉,就掌握在这些开发和运维的手里。我们的客户当中还有银行,服务器上所有的软件版本要审计,有哪些漏洞打了,哪些漏洞没打,全部要记录在案。要是我告诉他们我随便找了个 tgz 打包的软件往里解压一下就跑,你猜猜接下来我们会收到多少张法院的传票?
ywgx
2018-12-06 11:48:42 +08:00
php 安装几套的问题,我不多说了,你有运行过没? 安装了几套?

redis.conf 你看过没 bind 127.0.0.1

我当然知道 安全的部署 尽量避免在 root 下运行; 我如果告诉你 我打的 salt 安装模版 s.xabcloud.com/src/redis.tgz ;我担心大家不会使用

另外说到安全问题,chattr +ai /root/.ssh/authorized_keys 这是我们这边机器默认就执行的初始化操作

再说,如果真心有人觉得不安全,我相信他自然会把文件放到普通用户下执行

我只是提供一种分享,一种方案,多多益善
ywgx
2018-12-06 11:49:48 +08:00
msg7086
2018-12-06 12:17:35 +08:00
一个一个来,先说 Redis 的问题。

你的 bind 127.0.0.1 大作我当然是看过了。bind 127.0.0.1 不正是给人提权用的吗?
任何一个无权的本地用户都可以连接到 127.0.0.1 然后给 redis 发指令复写任意文件。
所以比如你给一个做外包的开发开了一个没有权限的 SSH 账号。然后人家直接连接你无保护的 Redis,然后注入,马上就能拿到 root。这简直就是教科书式的提权漏洞。

安全措施做好的情况,应该是 bind 到 unix_socket,并且修改 sock 文件的 owner group 和 mode,保证只有对应用户组的进程才能够连接,然后程序不在 root 下运行才行。

当然你也说了,chattr 或者放到普通用户下执行。

那么问题来了,一个懂得 chattr 和懂得如何创建普通系统用户然后再手写 systemd 服务特别去指定运行用户就为了跑起你这个 Redis 程序的运维,他为什么要下载你这个一键包而不是直接 apt 无脑一分钟装完不仅有打包者帮你配置好权限和安全措施还能享受到以后官方运维负责的补丁更新服务?你的受众到底是谁?是管着几十台服务器的资深用户,还是刚开始玩 VPS 的新手?我反正是有点看不懂。
msg7086
2018-12-06 12:20:48 +08:00
然后是 PHP 的问题。
首先这玩意儿在 CentOS 6 上是跑不起来的,看我给你表演一个:

root@verification ~ # yum -y localinstall https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining /var/tmp/yum-root-u6aqjZ/webtatic-release.rpm: webtatic-release-7-3.noarch
Marking /var/tmp/yum-root-u6aqjZ/webtatic-release.rpm to be installed
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package webtatic-release.noarch 0:7-3 will be installed
--> Processing Dependency: epel-release >= 7 for package: webtatic-release-7-3.noarch
--> Finished Dependency Resolution
Error: Package: webtatic-release-7-3.noarch (/webtatic-release)
Requires: epel-release >= 7
Installed: epel-release-6-8.noarch (@extras)
epel-release = 6-8
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest



然后你问我装几套,跑过没跑过。



那,你跑过吗?

没跑过吧。来,给你看看什么效果。

root@verification ~ # apt-get -y install php7.[0-9]
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'php7.0' for glob 'php7.[0-9]'
Note, selecting 'php7.2' for glob 'php7.[0-9]'
Note, selecting 'php7.3' for glob 'php7.[0-9]'
The following packages were automatically installed and are no longer required:
gnupg-agent libasprintf0c2 libbind9-90 libcurl3-gnutls libdns100 libisc95 libisccc90 libisccfg90 libjasper1 liblwres90 libpng12-0 libpth20
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
apache2 apache2-bin apache2-data apache2-utils curl libapache2-mod-php7.0 libapache2-mod-php7.2 libapache2-mod-php7.3 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap libbrotli1 libcurl4 libgdbm-compat4 liblua5.2-0 libmagic-mgc libmagic1 libpcre2-8-0 libperl5.28 libsodium23 perl perl-modules-5.28 php-common php7.0-cli
php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.3-cli php7.3-common php7.3-json
php7.3-opcache php7.3-readline ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear file perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libb-debug-perl
liblocale-codes-perl openssl-blacklist
The following packages will be REMOVED:
libcurl3
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapache2-mod-php7.2 libapache2-mod-php7.3 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
libbrotli1 libcurl4 libgdbm-compat4 liblua5.2-0 libmagic-mgc libmagic1 libpcre2-8-0 libperl5.28 libsodium23 perl perl-modules-5.28 php-common php7.0 php7.0-cli php7.0-common
php7.0-json php7.0-opcache php7.0-readline php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.3 php7.3-cli php7.3-common php7.3-json
php7.3-opcache php7.3-readline ssl-cert
The following packages will be upgraded:
curl
1 upgraded, 42 newly installed, 1 to remove and 0 not upgraded.
Need to get 22.3 MB of archives.
After this operation, 111 MB of additional disk space will be used.


还行,也就装了 7.0 7.2 7.3 三套…… ermmm
yuanfnadi
2018-12-06 12:50:15 +08:00
docker run mysql
docker run redis
docker run nginx
ywgx
2018-12-06 12:52:14 +08:00
@msg7086 你连自己的开发同事都不信任 ; 用淘汰了的 CentOS6 安装多套,你何必呢?

你说对了部分事情,谁运行这些命令呢? 他可以是测试,可以是开发,可是是本地 linux 快速使用,线上的也行,问题不大,如果觉得需要就自己改改路径

我再重申一遍,这里是一种分享

请继续你的表演,你还知道什么,请继续说 😄

如你所言,你要求自己就行了,不要圣母心
ywgx
2018-12-06 12:54:21 +08:00
@msg7086 如果觉得 几十台几百台机器 管理不安全,没问题,老夫给你准备了 xabcstack.com 欢迎使用 😄
msg7086
2018-12-06 13:04:33 +08:00
@ywgx
CentOS 6 Maintenance Updates November 30th, 2020
ermmm 行吧,你说淘汰就淘汰吧。

信任同事?哦 500 强大公司域控 Admin 权限在企业内部随便发咯,反正「信任自己的同事」对吧。
ermmm 行吧,你要信任就信任吧。

我一开始就说了,这玩意儿不是给生产环境用的,你要和我杠,说了半天还是主要给测试和开发用的,那你叫唤啥呀。这帖子简直是教科书级的中国 GOV 传统文化。遇到问题,不解决问题,先解决提出问题的人。把我杠走了,脚本里的错误就都不是错误了。不支持的操作系统和瞎瘠薄装上 3 个版本的 PHP 也都不是事了。
ermmm 行吧,要 Block 那就 Block 吧。

对了,什么叫「迫害妄想狂患者」?

19 楼那个回复「迫害妄想狂患者?」的人,别人回一句他就觉得别人要喷他祖宗十八代的人,他就是典型的「迫害妄想狂患者」。这种人真的可怕,我还是躲远点好。
ywgx
2018-12-06 13:15:22 +08:00
@msg7086 我分享错了吗? 如果你切实按照你的要求做,github 上还能发布作品吗 ?

仁者见仁,智者见智吧

PS: 请不要诋毁国家,不要以偏概全
edsheeran
2018-12-06 13:21:16 +08:00
@ywgx 詆毀的是 gov 不是國家,請注意審題
MeteorCat
2018-12-06 13:25:12 +08:00
生产环境确实需要审慎下,最简单往往是代价最高的
houzhimeng
2018-12-06 13:26:12 +08:00
我怎么记得这是第二次看到了。
PureWhiteWu
2018-12-06 13:36:52 +08:00
@msg7086 老哥,其实你要想,如果有生产环境都不看源码直接用这些脚本安装的人。。。多半让他自己配置也是各种漏洞各种问题各种不安全。。。
一个合格一点的运维都不会直接用各种一键安装脚本的。。。就算要用之前也得看看源码。。。。
305835227fadf
2018-12-06 16:26:58 +08:00
docker 不是更好
lemonda
2018-12-06 16:29:15 +08:00
@msg7086
看到这儿问一下,我平时就是
apt-get install redis-server
然后
service redis-server start
都是 root 直接运行的
这时如果给了外包 www-data 用户的 SSH 权限,他可以提权吗?
msg7086
2018-12-06 16:46:59 +08:00
@lemonda apt 安装的 redis 默认是运行在降权用户上的,不会有提权问题。
你可以开 htop 看一下子进程的运行用户,一般是 nobody 或者是 redis-server 吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514417

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX