这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。本文主要分享作阿里云搭建LNMP环境及实现PHP自定义网站IP访问,同时详细介绍走过的坑,还发了朋友圈求助大家,再次感谢。本来想重新设置一个专栏分享基于阿里云的PHP网站搭建,但考虑到搞安全的也会面临各种靶场及个人网站搭建的情况,所以将这篇文章放置在“网络安全自学篇”中,后续还会分享PHP如何记录后台IP及Python定位经纬度等知识,希望对您有所帮助~
背景知识:作者买了一个阿里云的云虚拟机用来搭建网站,起初不了解云虚拟主机和云服务器的区别,以为都是有SSH功能的,后来发现不是这样的,云虚拟机就是FTP上传网页+MySQL存储数据,对于只做网站来说还行,但是想做一些扩展或高级功能就不行了,强烈建议还是买云服务器ECS。主要区别如下:
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~
作者的github资源:
软件安全:https://github.com/eastmountyxz/Software-Security-Course
其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
[网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
[网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
[网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
[网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
[网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
[网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
[网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
[网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
[网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
[网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
[网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
[网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
[网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
[网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
[网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
[网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
[网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
[网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
[网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
[网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
[网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
[网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
[网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
[网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析
[网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析
[网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向
[网络安全自学篇] 七十一.深信服分享之外部威胁防护和勒索病毒对抗
[网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析
[网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读
[网络安全自学篇] 七十四.APT攻击检测溯源与常见APT组织的攻击案例
[网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)
[网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点
[网络安全自学篇] 七十七.恶意代码与APT攻击中的武器(强推Seak老师)
[网络安全自学篇] 七十八.XSS跨站脚本攻击案例分享及总结(二)
[网络安全自学篇] 七十九.Windows PE病毒原理、分类及感染方式详解
[网络安全自学篇] 八十.WHUCTF之WEB类解题思路WP(代码审计、文件包含、过滤绕过、SQL注入)
[网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
[网络安全自学篇] 八十二.WHUCTF之隐写和逆向类解题思路WP(文字解密、图片解密、佛语解码、冰蝎流量分析、逆向分析)
[网络安全自学篇] 八十三.WHUCTF之CSS注入、越权、csrf-token窃取及XSS总结
[网络安全自学篇] 八十四.《Windows黑客编程技术详解》之VS环境配置、基础知识及DLL延迟加载详解
[网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
[网络安全自学篇] 八十六.威胁情报分析之Python抓取FreeBuf网站APT文章(上)
[网络安全自学篇] 八十七.恶意代码检测技术详解及总结
[网络安全自学篇] 八十八.基于机器学习的恶意代码检测技术详解
[网络安全自学篇] 八十九.PE文件解析之通过Python获取时间戳判断软件来源地区
[网络安全自学篇] 九十.远控木马详解及APT攻击中的远控
前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差异备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包
阿里云的配置文章,作者之前也分享过,但这次重点介绍建站相关知识。前文推荐:
第一步,在阿里云中选择自己喜欢的“云服务器ECS”产品。
云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。
第二步,进入选择配置页面进行购买,作者准备购买一个最简单的服务器。
这里作者选择了云服务器ECS、镜像CentOs6.8,支持Python运行环境、djangoV1.1、nginxV1.1、mysqlV5.7。
第三步,进入购买页面首先需要进行基础设置,因为CentOS比较熟悉,所以选择该操作系统。
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
第四步,进行网络和安全组设置。
请确保所选安全组开放包含 22(Linux)或者 3389(Windows)端口,否则无法远程登录ECS,您可以进入ECS控制台设置。同时,安全组建议先把HTTP 80端口和HTTPS 443端口勾选上,否则后续要进行安全组规则设置。
第五步,进行系统配置和分组设置,默认内容即可。
第六步,完成最终云服务器的购买。
接下来我们进行详细的配置过程,首先会分享阿里云的远程管理功能。
第一步,正式进入ECS云服务器管理控制台界面,点击“远程连接”按钮。
再次强调,如果您购买的是云虚拟主机,它是没有这个“远程连接”按钮的,并且不支持IP直接访问和SSH功能。而这里使用的是云服务器,如下图所示,可以通过IP直接访问。
第二步,点击“远程连接”按钮,然后选择“Workbench远程连接”。
第三步,在弹出的远程登录界面中需要输入连接密码,这个密码将一直用于远程登录服务器。
那么,如何获取这个密码呢?我们在“更多”下拉菜单中选择“密码/密钥”,然后设置远程登录密码。
第四步,登录远程控制台,进行相应的CentOS操作。
作者首先给出Linux系统下常见的命令:
cd 文件夹名:查看路径
dir:查看当前路径下的所有文件
ls:列出当前文件夹下所有内容
pwd:显示当前路径
clear: 清空终端屏幕命令,Ctrl+L清除屏幕
mkdir [dir]: 新建文件夹
mv *** ****:移动或者重命名
rm *** ***:删除一次可以删除多个
cp:拷贝
touch 文件名: 新建文件
vi 文件名: 编辑文件命令
cat 文件名: 查看文件内容
wget (路径):下载
unzip ***.zip:压缩文件到当前目录
ls -ltr | cat -vte: 显示文件夹下所有内容详细信息
比如查看CentOS的版本信息。
第五步,通过mkdir命令创建文件夹。
第六步,通过touch命令创建first.py文件。
第七步,编写一个简单的Python代码。
首先我们查看Python的版本信息,可以看到是Python2.7.5,如下所示:
接着编辑Python程序。
输出指令:vi first.py
点击键盘:i键 - 编辑代码(Insert)
输出代码:
#!/usr/bin/python
print("this is my first python code.")
print("hello,Eastmount!!!")
print("Bye, Nana.")
点击键盘:Esc键
输出命令::wq
注意,阿里云自带的远程控制台可以使用复制、粘贴功能,如下图所示:
编辑代码并保存。
输入“python first.py”运行代码,最终输出结果如下所示:
同时,我们可以在该CentOS系统中安装相关的扩展包,比如输入“pip install bs4”安装BeautifulSoup扩展包 。
LNMP是指通常一起使用来运行动态网站或服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL或MariaDB,P一般指PHP,也可以指Perl或Python。LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat/Fedora、Debian/Ubuntu/Raspbian VPS(VDS)或独立主机安装LNMP(Nginx/MySQL/PHP)生产环境的Shell程序。
第一步,使用yum命令安装wget。
安装前确认已经安装wget命令,如提示wget: command not found ,使用 yum install wget 或 apt-get install wget 命令安装。
第二步,安装LNMP。
输入上述命令后,显示如下图所示。同时, 为防止掉线等情况,建议先执行screen再执行LNMP安装命令。
第三步,设置MYSQL版本和密码。
选择MySQL数据库版本信息,建议安装时按默认选择进行,使用的版本不要太低,版本太低会影响后续步骤的进行。接着需要设置MySQL的root密码(不输入直接回车将会设置为root),输入后回车进入下一步,如下图所示:
第四步,选择是否开启MySQL InnoDB引擎和PHP版本信息。
这里需要确认是否启用MySQL InnoDB,如设置MYSQL版本果不确定是否启用可以输入 y ,输入 y 表示启用,输入 n 表示不启用。默认为y 启用,输入后回车进入下一步,输入PHP版本的序号,回车进入下一步。
第五步,选择是否安装内存优化。
可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车。
提示”Press any key to install…or Press Ctrl c to cancel”后,按回车键确认开始安装。LNMP就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。安装时间可能会几十分钟到一个小时不等,主要是机器的配置网速等原因会造成影响。
第六步,LNMP安装完毕以及常用命令。
至此,LNMP成功安装完毕,如下图显示开放的端口信息(80、3306、22),提示“Install lnmp V1.7 completed! enjoy it.”。
核心信息如下:
============================== Check install ==============================
Checking ...
Nginx: OK
MySQL: OK
PHP: OK
PHP-FPM: OK
Clean Web Server src directory...
+------------------------------------------------------------------------+
| LNMP V1.7 for CentOS Linux Server, Written by Licess |
+------------------------------------------------------------------------+
| For more information please visit https://lnmp.org |
+------------------------------------------------------------------------+
| lnmp status manage: lnmp {start|stop|reload|restart|kill|status} |
+------------------------------------------------------------------------+
| phpMyAdmin: http://IP/phpmyadmin/ |
| phpinfo: http://IP/phpinfo.php |
| Prober: http://IP/p.php |
+------------------------------------------------------------------------+
| Add VirtualHost: lnmp vhost add |
+------------------------------------------------------------------------+
| Default directory: /home/wwwroot/default |
+------------------------------------------------------------------------+
| MySQL/MariaDB root password: *************** |
+------------------------------------------------------------------------+
+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
nginx (pid 16612) is running...
php-fpm is runing!
SUCCESS! MySQL running (17153)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
Install lnmp takes 19 minutes.
Install lnmp V1.7 completed! enjoy it.
我们在浏览器中输入网址即可访问。
数据库基本操作如下图所示:
首先我们简单进行数据库操作,接着分享PHP网站的基础知识。
第一步,检查MySQL服务是否开启。
第二步,使用root用户登录mysql数据。
接着输入密码登录,其中“show databases;”可以看到当前的数据库。
第三步,如果想修改数据库密码,可以使用下面的SQL语句实现。
mysql -u root -p
use mysql;
#mysql 5.7以上
update user SET authentication_string = PASSWORD('newpassword') WHERE user = 'root';
#mysql 5.7一下旧版本
update user SET password = PASSWORD('newpassword') WHERE user = 'root';
flush privileges;
exit;
具体过程如下图所示:
接着可以重启下mysql服务,发现修改成功。
第四步,下面简单介绍数据库的语句。
create table student(
id int not null primary key,
name varchar(16) not null,
pwd varchar(20) not null
);
同时,数据库更推荐大家结合可视化工具Navicat for MySQL进行数据库操作。
下面进行简单的PHP操作,我们可以输入“netstat -aptn”查看开放的端口号,就是之前我们配置时候开启的80端口、3306端口和22端口。
输入“phpinfo.php”可以查看PHP的配置信息,如下图所示。
接下来我们去到default这个文件夹,Linux默认的域名是建立在/home/wwwroot/文件夹下的。连接之后建议先进入/home/wwwroot/default删除其中部分敏感的文件,同时修改phpmyadmin的目录名,改为不容易猜到的。
接着我们通过命令创建“test.php”文件。
echo "I Love you, Nana O(∩_∩)O
"
;
echo "This is the first PHP
";
echo "By:Eastmount CSDN.";
?>
对其进行编辑,输入如下所示的代码。
最后输入“:wq!”保存并提出。
最后通过IP地址进行网站访问,显示如下图所示,哈哈!
PS:但这里存在一个问题,我们不可能每个PHP文件都进行创建,然后再CMD命令中编写代码。所以需要和FTP结合起来,当我们的PHP网站搭建好之后,上传即可访问。
同时,我简单补充下LNMP安装绑定域名建站的常用命令,后面的文章可能会用到。
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,网站常用FTP进行传输。在配置FTP服务时,我们会遇到各种问题,希望您好运。下面分享详细的过程~
第一步,安装vsftpd。
vsftpd全称是“very secure FTP daemon”,是非常安全的ftp后台程序及ftp服务端。出现如下图所示界面时,表示安装成功。
第二步,启动FTP。
运行以下命令设置FTP服务开机自启动。
运行以下命令启动FTP服务,如果想关闭FTP服务则使用stop,想重启FTP服务使用restart。
第三步,查看FTP服务监听的端口。
出现如下图所示界面,表示FTP服务已启动,监听的端口号为21。此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。
第四步,配置vsftpd。
FTP通常提供两种方式配置vsftpd——匿名用户模式或本地用户模式,我们首先创建相关信息,该用户名为ftptest。
其中,-d为新用户每次登陆时所使用的家目录,-g指定用户对应的用户组 ftp分组是内置的,本来就存在,不需要自己创建。注意,下面代码我是在另一个文件夹创建用户“ftp”,这里则是创建“ftptest”用户(上面黄色部分)。
接着运行以下命令修改ftptest用户的密码。
第五步,设置目录权限。
运行以下命令更改/home/wwwroot/ftptest目录的拥有者为ftptest。
ftptest用户拥有这个目录的读写执行权限。
同样的方法可以设置wwwroot、www等目录的权限,如下图所示。
第六步,修改vsftpd.conf配置文件。
运行vi /etc/vsftpd/vsftpd.conf命令打开配置文件,按i进入编辑模式,根据如下内容,修改或添加相关配置参数;最后按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。
#除下面提及的参数外,其他参数保持默认值即可。
#修改下列参数的值
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#监听IPv4 sockets
listen=YES
#在行首添加#注释掉以下参数,关闭监听IPv6 sockets
#listen_ipv6=YES
#添加下列参数
#设置本地用户登录后所在目录
local_root=/var/ftp/test
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例公网IP
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=<port number>
注意:修改和添加配置文件内的信息时,请注意格式问题。例如,添加多余的空格会造成无法重启服务的结果。
编辑vsftpd配置文件禁止匿名登陆,故anonymous_enable设置为NO。
下图表示对用户访问进行限制,以及对chroot_list里面指定的用户进行限制。
vsftpd服务器是这样的,一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件,这时就需要打开此用户的写权限。
第七步,编辑用户清单。
创建chroot_list文件,并在文件中写入例外用户名单,按i进入编辑模式,输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
第八步,解决用户鉴权问题。
因为用户ftptest是nologin的,所以存在鉴权的问题,接着编辑pam.d/vsftpd文件和shells文件。
第九步,重启vsftpd服务器。
查看状态
第十步,设置安全组。
搭建好FTP站点后,在实例安全组的入方向添加规则并放行下列FTP端口。FTP被动模式需要开放端口21,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。配置详情如下表所示:
阿里云的规则设置操作如下图所示:
第十一步,通过ftp://
在浏览器中通过IP地址则可以进行访问我们搭建的网站,如下图所示:
至此我们的网站就成功搭建!
配置过程中会遇到各种问题,比如报错:
我们需要注意几点:
第一是编辑防火墙配置文件iptables,在该文件中增加相关代码,并重启服务。
# Generated by iptables-save v1.4.21 on Wed Jul 22 11:42:33 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [122:81541]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:30010 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibite
COMMIT
# Completed on Wed Jul 22 11:42:33 2020
第二是需要在阿里云中设置规则,新增21和30000/30010端口。
第三是需要认真配置vsftpd.conf文件,最终配置如下,包括增加pasv_promiscuous=YES和anon_root值、IP地址、最小最大端口等,作者最终就是这样解决的。
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
# listen_ipv6=YES
local_root=/home/wwwroot/default
anon_root=/homw/wwwroot/default
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010
allow_writeable_chroot=YES
pasv_address=121.xxx.xxx.115
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_promiscuous=YES
第四是部分错误需要配置config文件,解决“SELinux is disabled”错误,作者配置如下。
第五是部分用户需要设置防火墙信息,但作者的防火墙是关闭状态。
下图是作者网站成功运行时的防火墙状态,所以该解决方法也是根据不同用户环境而定。
作者也简单给出防火墙的端口配置的一些操作和方法,注意您占时不需要进行如下操作。
第六个解决方法是修改Iptables表内容,主要是由于Iptables防火墙不支持,需要修改/etc/sysconfig/iptables-config文件,增加ip_nat_ftp。
在linux的ftp服务器上执行下列命令也可以临时解决,但重启服务器需要每次执行
完成上述操作,我觉得您的FTP错误也应该解决了,再次祝好运~
写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后推荐作者个人网站搭建的系列文章。
学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。想念远方的家人了o(╥﹏╥)o
(By:Eastmount 2020-07-25 星期日 晚上11点写于武汉 http://blog.csdn.net/eastmount/ )