阿里云云服务器ECS购买与使用(笔记)
购买
进入阿里云下拉菜单选择 ecs :
我购买的配置如下:
购买后实例就运行了,远程连接后安装一系列包和软件:
如何安装
阿里云服务器 ECS LAMP 环境安装(Ubuntu)
阿里云 ECS 云服务器外网 IP 无法访问
域名解析
Github Page 自定义域名
Ubuntu 安装 nodejs
ubuntu 图形界面下无法用 root 登录解决办法
先按照 这个教程 走,但最后不重启。然后转到 这个教程,执行第三步,也就是下面这段:
进入/etc/pam.d 文件夹下,修改 gdm-autologin 和 gdm-passwd 文件内容(首先修改文件权限,参考步骤 2 的操作)
gdm-autologin 文件注释掉 auth required pam_success_if.so user!=root quiet_success 这一行
gdm-passwd 文件注释掉 auth required pam_success_if.so user!=root quiet_success 这一行
做完后重启然后点击登录其他用户,输入 root 和密码 root(这个密码在上面第一个教程中已经自己设置了)就好。
安装 LAMP 环境
编辑文件
- 退出 mysql 命令行:
exit
- vi 编辑文件 按下 i 表示编辑 按下 esc 退出编辑模式 按下
:wq
保存退出
mysql 操作
登录 mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是 mysql 数据库是没有密码的,Enter password:处直接回车,就能够进入 mysql 数据库。
导入导出
安装 图形化 mysql-workbench
打开 mysql 图形化后无法连接数据库
Unbuntu 下 Mysql 连接 MysqlWorkBench 出现错误
在 ubuntu 下搭建 ftp 服务器
- 如何在 Ubuntu 18.04 上为用户目录设置 vsftpd
执行完上面操作后,会发现下面两个问题,按方法调整就好: - 使用 FileZilla FTP 下载时提示“不安全的服务器,不支持 FTPover TLS”,和“服务器不支持非 ASCII 字符”
- ftp 连接错误——服务器发回了不可路由的地址。使用服务器地址代替。
介绍
FTP 是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。 它已被更快,更安全,更方便的文件传输方式所取代。 许多休闲互联网用户希望通过https
直接从他们的网络浏览器下载,命令行用户更有可能使用安全协议,如scp
或SFTP 。
FTP 仍然用于支持具有特定需求的遗留应用程序和工作流。 如果您可以选择使用哪种协议,请考虑探索更现代的选项。 但是,当您确实需要 FTP 时,vsftpd 是一个很好的选择。 vsftpd 针对安全性,性能和稳定性进行了优化,可以很好地防范其他 FTP 服务器中存在的许多安全问题,并且是许多 Linux 发行版的默认设置。
在本教程中,您将配置 vsftpd 以允许用户使用具有 SSL / TLS 保护的登录凭据的 FTP 将文件上载到其主目录。
先决条件
要学习本教程,您需要:
- Ubuntu 18.04 服务器和具有 sudo 权限的非 root 用户 :您可以在使用 Ubuntu 18.04指南的初始服务器设置中了解有关如何使用这些权限设置用户的更多信息。
第 1 步 - 安装 vsftpd
让我们首先更新我们的包列表并安装vsftpd
守护进程:
1 | sudo apt update |
安装完成后,让我们复制配置文件,这样我们就可以从空白配置开始,将原件保存为备份:
1 | sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig |
通过备份配置,我们已准备好配置防火墙。
第 2 步 - 打开防火墙
注意: 最后我们还得打开 80 和 8080 端口!!!
让我们检查防火墙状态以查看它是否已启用。 如果是,我们将确保允许 FTP 流量,因此防火墙规则不会阻止我们的测试。
检查防火墙状态:
1 | sudo ufw status |
在这种情况下,只允许 SSH 通过:
1 | OutputStatus: active |
您可能有其他规则或根本没有防火墙规则。 由于在这种情况下只允许 SSH 流量,因此我们需要为 FTP 流量添加规则。
让我们打开端口20
和21
用于 FTP,端口990
用于启用 TLS,端口40000-50000
用于我们计划在配置文件中设置的被动端口范围:
1 | sudo ufw allow 20/tcp |
我们的防火墙规则现在应如下所示:
1 | OutputStatus: active |
p.s. 如何删除一个 rule:sudo ufw delete allow 80/tcp
安装了vsftpd
并打开了必要的端口后,我们继续创建一个专用的 FTP 用户。
第 3 步 - 准备用户目录
我们将创建一个专用的 FTP 用户,但您可能已经有一个需要 FTP 访问的用户。 我们将注意保留现有用户对以下说明中的数据的访问权限。 即便如此,我们建议您在配置和测试设置之前先与新用户联系。
首先,添加一个测试用户:
1 | sudo adduser sammy |
出现提示时分配密码。 随意通过其他提示按ENTER
。
当用户被限制在特定目录时,FTP 通常更安全。 vsftpd
用chroot
jails 完成了这个。 为本地用户启用chroot
,默认情况下它们仅限于其主目录。 但是,由于vsftpd
保护目录的方式,用户不能写入。 这对于只应通过 FTP 连接的新用户来说很好,但如果现有用户也具有 shell 访问权限,则可能需要写入其主文件夹。
在这个例子中,不是从主目录中删除写权限,而是创建一个ftp
目录作为chroot
和一个可写files
目录来保存实际文件。
创建ftp
文件夹:
1 | sudo mkdir /home/sammy/ftp |
设置所有权:
1 | sudo chown nobody:nogroup /home/sammy/ftp |
删除写权限:
1 | sudo chmod a-w /home/sammy/ftp |
验证权限:
1 | sudo ls -la /home/sammy/ftp |
接下来,让我们创建文件上传目录并为用户分配所有权:
1 | sudo mkdir /home/sammy/ftp/files |
对ftp
目录的权限检查应返回以下内容:
1 | sudo ls -la /home/sammy/ftp |
最后,让我们添加一个test.txt
文件,以便在测试时使用:
1 | echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt |
现在我们已经保护了ftp
目录并允许用户访问files
目录,让我们修改我们的配置。
第 4 步 - 配置 FTP 访问
我们计划允许具有本地 shell 帐户的单个用户与 FTP 连接。 这两个关键设置已在vsftpd.conf
设置。 首先打开配置文件,验证配置中的设置是否与以下设置相匹配:
1 | sudo nano /etc/vsftpd.conf |
/etc/vsftpd.conf 文件
1 | . . . |
接下来,让我们通过取消注释write_enable
设置来允许用户上传文件:
/etc/vsftpd.conf 文件
1 | . . . |
我们还将取消注释chroot
以防止 FTP 连接的用户访问目录树之外的任何文件或命令:
/etc/vsftpd.conf 文件
1 | . . . |
我们还添加一个user_sub_token
以在local_root directory
路径中插入用户名,这样我们的配置将适用于此用户和任何其他未来用户。 在文件中的任何位置添加这些设置:
/etc/vsftpd.conf 文件
1 | . . . |
我们还限制了可用于被动 FTP 的端口范围,以确保有足够的连接可用:
/etc/vsftpd.conf 文件
1 | . . . |
注意:在第 2 步中,我们打开了我们在此处为被动端口范围设置的端口。 如果更改值,请务必更新防火墙设置。
要根据具体情况允许 FTP 访问,让我们设置配置,以便用户只有在明确添加到列表时才能访问,而不是默认情况下:
/etc/vsftpd.conf 文件
1 | . . . |
userlist_deny
切换逻辑:当它设置为YES
,列表中的用户被拒绝 FTP 访问。 当它设置为NO
,只允许列表中的用户访问。
完成更改后,保存文件并退出编辑器。
最后,让我们将用户添加到/etc/vsftpd.userlist
。 使用-a
标志追加到文件:
1 | echo "sammy" | sudo tee -a /etc/vsftpd.userlist |
检查它是否按预期添加:
1 | cat /etc/vsftpd.userlist |
重新启动守护程序以加载配置更改:
1 | sudo systemctl restart vsftpd |
配置到位后,我们继续测试 FTP 访问。
第 5 步 - 测试 FTP 访问
我们已将服务器配置为仅允许用户sammy
通过 FTP 连接。 让我们确保它按预期工作。
匿名用户应该无法连接 :我们已禁用匿名访问。 让我们通过尝试匿名连接来测试它。 如果我们的配置设置正确,则应拒绝匿名用户的权限。 请务必将203.0.113.0
替换为服务器的公共 IP 地址:
1 | ftp -p 203.0.113.0 |
关闭连接:
1 | bye |
除了 sammy 之外的用户应该无法连接 :接下来,让我们尝试连接我们的 sudo 用户。 他们也应该被拒绝访问,并且应该在他们被允许输入密码之前发生:
1 | ftp -p 203.0.113.0 |
关闭连接:
1 | bye |
用户 sammy 应该能够连接,读取和写入文件 :让我们确保我们的指定用户可以连接:
1 | ftp -p 203.0.113.0 |
让我们切换到files
目录并使用get
命令将我们之前创建的测试文件传输到本地机器:
1 | cd files |
接下来,让我们使用新名称上传文件以测试写入权限:
1 | put test.txt upload.txt |
关闭连接:
1 | bye |
现在我们已经测试了我们的配置,让我们采取措施进一步保护我们的服务器。
第 6 步 - 保护交易
由于 FTP 不会加密传输中的任何数据,包括用户凭据,因此我们将启用 TLS / SSL 来提供加密。 第一步是创建用于vsftpd
的 SSL 证书。
让我们使用openssl
创建一个新证书,并使用-days
标志使其有效一年。 在同一个命令中,我们将添加一个私有的 2048 位 RSA 密钥。 通过将-keyout
和-out
标志都设置为相同的值,私钥和证书将位于同一文件中:
1 | sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem |
系统将提示您提供证书的地址信息。 将您自己的信息替换为以下突出显示的值:
1 | OutputGenerating a 2048 bit RSA private key |
有关证书标志的更多详细信息,请参阅OpenSSL Essentials:使用 SSL 证书,私钥和 CSR
创建证书后,再次打开vsftpd
配置文件:
1 | sudo nano /etc/vsftpd.conf |
在文件的底部,您将看到以rsa_
开头的两行。 评论它们,看起来像这样:
/etc/vsftpd.conf 文件
1 | . . . |
在它们下面,添加以下指向我们刚刚创建的证书和私钥的行:
/etc/vsftpd.conf 文件
1 | . . . |
之后,我们将强制使用 SSL,这将阻止无法处理 TLS 的客户端连接。 这对于确保所有流量都已加密是必要的,但它可能会强制您的 FTP 用户更改客户端。 将ssl_enable
更改为YES
:
/etc/vsftpd.conf 文件
1 | . . . |
之后,添加以下行以显式拒绝 SSL 上的匿名连接,并要求 SSL 进行数据传输和登录:
/etc/vsftpd.conf 文件
1 | . . . |
在此之后,通过添加以下行将服务器配置为使用 TLS(SSL 的首选后继者):
/etc/vsftpd.conf 文件
1 | . . . |
最后,我们将添加两个选项。 首先,我们不会要求重用 SSL,因为它可能会破坏许多 FTP 客户端。 我们将需要“高”加密密码套件,目前这意味着密钥长度等于或大于 128 位:
/etc/vsftpd.conf 文件
1 | . . . |
完成的文件部分应如下所示:
/etc/vsftpd.conf 文件
1 | This option specifies the location of the RSA certificate to use for SSL |
完成后,保存并关闭文件。
重新启动服务器以使更改生效:
1 | sudo systemctl restart vsftpd |
此时,我们将无法再使用不安全的命令行客户端进行连接。 如果我们尝试过,我们会看到类似的东西:
1 | ftp -p 203.0.113.0 |
接下来,让我们验证我们是否可以使用支持 TLS 的客户端进行连接。
第 7 步 - 使用 FileZilla 测试 TLS
大多数现代 FTP 客户端都可以配置为使用 TLS 加密。 我们将演示如何与FileZilla连接,因为它支持跨平台。 请参阅其他客户的文档。
首次打开 FileZilla 时,在主页上方找到站点管理器图标,这是最上一行最左侧的图标。 点击它:
将打开一个新窗口。 单击右下角的“ 新建站点”按钮:
在“ 我的网站”下,将出现一个带有“ 新网站 ”字样的新图标。 您可以立即命名或稍后返回并使用“ 重命名”按钮。
使用名称或 IP 地址填写主机字段。 在“ 加密”下拉菜单下,选择“ 要求显式 FTP over TLS” 。
对于登录类型 ,选择询问密码 。 在“ 用户”字段中填写您的 FTP 用户:
单击界面底部的“连接”。 系统将要求您输入用户密码:
单击确定以进行连接。 您现在应该使用 TLS / SSL 加密与您的服务器连接。
成功后,您将看到一个如下所示的服务器证书:
当您接受证书后,双击files
夹并将upload.txt
拖到左侧以确认您能够下载文件:
完成后,右键单击本地副本,将其重命名为upload-tls.txt
并将其拖回服务器以确认您可以上传文件:
您现在已确认可以安全地成功传输启用了 SSL / TLS 的文件。
第 8 步 - 禁用 Shell 访问(可选)
如果由于客户端要求而无法使用 TLS,则可以通过禁用 FTP 用户以任何其他方式登录的方式来获得一些安全性。 防止它的一种相对简单的方法是创建一个自定义 shell。 这不会提供任何加密,但会限制受感染帐户对 FTP 可访问的文件的访问。
首先,在bin
目录中打开一个名为ftponly
的文件:
1 | sudo nano /bin/ftponly |
添加一条消息,告诉用户他们无法登录的原因:
/斌/ ftponly
1 | !/bin/sh |
保存文件并退出编辑器。
更改权限以使文件可执行:
1 | sudo chmod a+x /bin/ftponly |
打开有效 shell 列表:
1 | sudo nano /etc/shells |
在底部添加:
/ etc / shells 中
1 | . . . |
使用以下命令更新用户的 shell:
1 | sudo usermod sammy -s /bin/ftponly |
现在尝试以sammy
身份登录您的服务器:
1 | ssh sammy@your_server_ip |
你应该看到类似的东西:
1 | OutputThis account is limited to FTP access only. |
这确认用户不能再ssh
到服务器并且仅限于 FTP 访问。
结论
在本教程中,我们介绍了为具有本地帐户的用户设置 FTP。 如果您需要使用外部身份验证源,您可能需要了解vsftpd
对虚拟用户的支持。 这通过使用 PAM(可插入身份验证模块)提供了丰富的选项,如果您管理其他系统(如 LDAP 或 Kerberos)中的用户,这是一个不错的选择。
执行完上面操作后的问题解决
使用 FileZilla FTP 下载时提示“不安全的服务器,不支持 FTPover TLS”,和“服务器不支持非 ASCII 字符”
1、提示“不安全的服务器,不支持 FTPover TLS
解决方法:在站点管理器中,加密方式选择:
2、提示“服务器不支持非 ASCII 字符”
解决方法:在站点管理器中字符集选择:自定义字符集:GBK
OK,正常了
ftp 连接错误——服务器发回了不可路由的地址。使用服务器地址代替。
设置 filezilla 客户端的连接参数
- 选中某一连接项
- 高级——加密——只使用普通 ftp
- 传输设置——传输模式——主动
- 重新连接
ubuntu 下 Apache 虚拟站点配置
https://www.linuxidc.com/Linux/2017-05/143590.htm
apache 配置二级域名
[apache2 服务器 mod_rewrite 模块 开启方法linux, ubuntu]
开启重写,p.s. 上面教程中说要把 /etc/apache2/sites-enabled/000-default
中的 AllowOverride None 修改为: AllowOverride All
,然而我的 Apache2 是新版(2.4),所以得转到 /etc/apache2/
。将名为 apache2.conf
的文件中的 下面代码从 NONE 改为 ALL :
1 | <Directory /var/www/> |
目标二级域名:mall.evelance.cn
阿里云控制台配置:在阿里云的控制台中找到域名管理,然后选择顶级域名 evelance.cn 后面的“解析”字样。在新打开的页面中我们可以看到一个提供域名解析的界面,选择解析类型为 A 类解析,然后输入 mall(我们想要的二级域名的头),然后在地址里面输入我们刚才查看到的 ECS 的公网 ip,然后点击确认,之后我们的解析就会生效了。
ubuntu 服务器配置:
进入 /etc/apache2/site-available/ ,复制默认的虚拟主机配置文件:
1 | sudo cp 000-default.conf mall.evelance.cn.conf |
修改配置:
1 | <VirtualHost *:80> |
在 sites-enabled 目录下建立符号链接:
1 | cd /etc/apache2/sites-enabled |
在对应目录放入项目代码:
把项目文件放进 /home/www/mall 中,并赋予文件夹权限:
1 | sudo chmod -R 777 /home/www/mall |
激活配置,重启 apache:
返回上级目录 cd ../site-enable/
,输入 cd sites-available/
输入 a2ensite mall.evelance.cn.conf
,如果提示已经激活过了,输入下面代码:
1 | a2dissite mall.evelance.cn.conf |
参考:
域名解析
登录阿里云,进入控制台,选择云解析 DNS。选择右侧的解析管理,进行二级域名的添加:
- 记录类型:A
- 主机记录:[mall].evelance.cn
- 解析线路:默认
- 记录值:你的公共 IP
- TTL:10 分钟
参考:阿里云添加二级域名的操作
支持 https
- 在阿里云里申请免费 Https 证书 SSL
- ubuntu apache2 配置安装 ssl 证书
- 阿里云 Ubuntu16.04 apache2 ssl 证书下载与安装(必须有域名)
- 完成上述配置后,别忘了让防火墙允许 443 端口。
sudo ufw allow 443/tcp