一、实验目的
1.提升系统安全性:通过实施安全配置方案,确保LAMP(Linux、Apache、MySQL、PHP)服务器环境的安全,降低潜在的安全风险,如SQL注入、跨站脚本攻击(XSS)等。
2.学习与实践安全配置技术:通过实验操作,学习和掌握Linux系统、Apache服务器、MySQL数据库和PHP编程的安全配置技术和方法,提高自身的安全防范能力。
3.增强服务器的维护能力:通过对LAMP环境的安全配置,了解服务器的运行机制和原理,增强对服务器维护和管理的能力,确保服务器的稳定运行。
4.优化服务器性能:在安全配置的过程中,对服务器进行优化,提升服务器的处理能力和响应速度,为用户提供更好的服务体验。
二、实验内容
1.准备三台Linux系统的机子,RedHat Enterprise,Red Hat 001和Red Hat 002
2,RedHat Enterprise的ip为10.0.0.88,作为测试机;RedHat001的ip为10.0.0.77,在上面安装apache,php和phpmyadmin;RedHat002的ip为10.0.0.99,在上面安装mysql
3.通过配置端口实现:测试机访问001,001允许访问002且,测试机服务不了002
三、实验过程
Redhat001:
1.环境配置
使用远程连接工具,进行远程连接
三台Linux配通网络,yum源成功配置,且关闭防火墙
Yum源配置:删除/etc/yum.repo.d/下的.repo文件,然后新建个.repo文件写入以下内容:
关闭防火墙使用命令:systemctl stop firewalld
查看防火墙状态:systemctl status firewalld
避免防火墙开机自启,使用命令:systemctl disable firewalld关闭防火墙的自启
进行SELinux配置,用vim编辑文件/etc/selinux/config
将SELINUX= enforcing这项改成SELINUX=disabled,然后使用reboot重启虚拟机
2.进行软件下载与配置
首先更新yum源,执行:yum update
2.1安装apache(httpd)
使用命令:yum -y insatll httpd
完成安装之后启动apache
使用命令:systemctl start httpd
查看apache的状态,使用命令:systemctl status httpd
可以看到apache的状态是启动的且不是开机自启的,我们将它设置成开机自启
使用命令:systemctl enable httpd
为apache添加8080端口,使用vim打开httpd的配置文件/etc.http/conf/httpd.conf
找到Listen这行进行如下编辑:
重启apache服务:systemctl restart httpd
使用测试机上的火狐浏览器进行测试,浏览器中输入10.0.0.77:80,出现下图所示则测试成功:
2.2安装php并下载php-mysql扩展
执行yum -y install php安装最新的php
查看php版本 php -v
扩展安装:执行sudo yum install -y php-fpm php-mysqli php-gd php-mbstring
安装 PHP 解释器的同时,系统在/etc/htpd/modules目录中添加libphp5.o,并在etc/httpd/conf.modules.d目录中添加 10-php.conf文件,用于加载 PHP5 模块 libphp5.so.
<IfModule prefork.c> LoadModule php5_module modules/libphp5.so
</ifModule>
安装PHP解释器时,系统还会自动在目录/etc/httpd/confd中建立一个名为php.conf的配文件。配置Apache 使其运行PHP程序的关键是编辑php.conf文件,说明如下
将.php 结尾的文件识别为PHP脚本,并由PHP模块解释,默认设置为
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
指定 PHP 文件的 MIME 类型,默认设置为:
DirectoryIndex index.php
修改apache配置文件以支持PHP
运行以下命令,打开apache配置文件:sudo vim /etc/httpd/conf/httpd.conf
按i进入编辑模式
添加下列配置信息:
保存并提出,运行以下命令,重启PHP-FPM
sudo systemctl restart php-fpm
测试php
在apache网站根目录/var/www/html/下创建测试文件test.php
写入以下内容:
重启apache服务:sudo systemctl restart httpd
在测试机的火狐浏览器中输入10.0.0.77/test.php,出现以下内容则为成功:
2.3安装phpmyadmin
官网链接:phpMyAdmin
在官网下载phpmyadmin,点击Download
下载zip文件之后,将其传到RedHat001机子里,使用ls进行查看
把phpmyadmin的zip文件解压,使用命令 unzip *zip
解压完成之后,将phpmyadmin-5.2.1文件夹移到apache的根目录/var/www/html/下,并将其改名为phpmyadmin
mv phpMyAdmin-5.2.1-all-languages /var/www/html/
mv phpMyAdmin-5.2.1-all-languages phpmyadmin
进入phpmyadmin查看
将config.sample.inc.php复制一份,命名为config.inc.php
使用命令cp config.sample.inc.php config.inc.php
重启apache
systemctl restart httpd
测试:
在测试机的火狐浏览器中输入10.0.0.77/phpMyadmin,可以看到网页出现了以下错误
是因为phpMyadmin是大小写敏感的,是一个目录,在之前我们是将名字改成了phpmyadmin,那么网页输入的时候也要用10.0.0.77/phpmyadmin
修改之后:
测试成功
Redhat002
安装mysql
使用命令:sudo yum install mysql-server mysql
启动MySQL服务,使用命令:systemctl start mysql.service
查看mysql的版本号
运行命令:mysql -v
运行以下命令,启动mysql:
systemctl start mysql.service
设置开机自启:
sudo systemctl enable mysqld
sudo systemctl daemon-reload
查看状态:systemctl status mysqld.service
进行mysql基本配置:
运行命令mysql -u root进入mysql修改密码策略
#改密码验证级别
set global validate_password_policy=LOW;
#改密码验证的数位
set global validate_password_length=4;
#查看密码验证策略
show variables like 'validate_password%';
我重设了密码为root
sudo mysqladmin -u root password 'new_password_here'
quit退出mysql
使用mysql -u root -p
使用刚刚设置的密码登录mysql
运行以下命令,配置mysql的安全性:
sudo mysql_secure_installation
输入y,然后设置密码的复杂程度,这里选择0
选择y,设置新的root密码
是否要删除匿名用户,选择y
是否允许远程登录,选择y
后面的选项都是y
进入mysql创建一个普通用户,允许远程登陆
如下图所示:
Mysql里使用SELECTUser, Host FROM mysql.user;可以查看用户
在mysql里使用SHOW VARIABLES LIKE'port';可以查看mysql的端口,如下图所示:
Mysql的配置文件在/etc/my.cnf.d/目录下
进行配置文件修改,将mysql的端口改为30447
使用vim编辑文件/etc/my.cnf.d/mysql-service.cnf
修改为以下内容:
修改完成之后,重启mysql服务
进入mysql查看端口
修改RedHat001的phpmysql配置文件,用于连接mysql数据库
使用vim /var/www/html/phpmyadmin/conf.inc.php
将以下内容改成如下图所示:
修改完成之后,进行登录测试:在测试机的火狐浏览器的phpmyadmin输入redHat002d mysql创建的用户test1
成功登录:
修改防火墙配置,更改端口:
启动防火墙,并开启防火墙的开机自启
使用命令:systemctl start firewalld
开机自启:systemctl enable firewalld
执行完后,查看防火墙的状态:
将apache的默认端口更改为10080
编辑/etc/httpd/conf/httpd.conf,注释掉其他端口
保存之后重启apache服务:systemctl restart httpd.service
将RedHat002和RedHat001的ssh端口改为10022,编辑ssh的配置文件,使用vim打开/etc/ssh/sshd_config,取消prot的注释并将其改为10022
重启ssh服务systemctl restart sshd
查看ssd服务状态
测试,在测试机中输入10.0.0.77:80,如下图所示:
进行防火墙配置,使其不能互相远程连接,RedHat001
使用命令:sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.88" port protocol="tcp" port="10022" reject' --permanent
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.99" port protocol="tcp" port="10022" reject' --permanent
在RedHat002
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.88" port protocol="tcp" port="10022" reject' --permanent
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.77" port protocol="tcp" port="10022" reject' --permanent
火狐浏览器输入10.0.0.77:10080出现如下图所示:
使RedHat001允许10080这个端口开放
执行命令sudo firewall-cmd --zone=public --add-port=10080/tcp --permanent
加载firewalld配置
使用命令:sudo firewall-cmd --reload
火狐浏览器不允许10080这个端口的原因主要是出于安全考虑。具体来说,由于10080端口在NAT Slipstreaming 2.0攻击中曾被滥用,Firefox自2020年11月以来已经禁止了该端口的访问。
对于需要在火狐浏览器中访问10080端口的用户,可以尝试以下解决方案:
1.修改Firefox的内部配置:通过修改Firefox的内部设置,可以允许对特定端口的访问。具体步骤如下:
打开Firefox浏览器,在地址栏输入about:config并回车。
在搜索项中输入network.security.ports.banned.override。
选择“字符串”,在框中输入你想要访问的端口(例如“10080”),然后关闭浏览器并重新启动。
请注意,这种方法可能存在一定的安全风险,因为它允许浏览器访问被视为不安全的端口。
2.使用其他浏览器:如果Firefox无法满足你的需求,你可以考虑使用其他浏览器,如Chrome或Edge。但请注意,Chrome在91版本后也禁用了对10080端口的访问,因此在使用这些浏览器时,你可能需要查找特定的解决方案或插件来绕过这一限制。
搜索network.security.ports.banned.override,然后点击string
点击右边的那个加号,输入10080,
再次输入时遇到以下问题,建立安全连接失败的现象,发现问题属于浏览器不支持TLS1.2以下的版本。为了能正常工作在网上搜索各种方法解决此问题。
解决方法:先地址栏输入about:config 进入高级首选项,然后搜索security.tls.version.enable-deprecated ,将默认的 false改为 true,即可解决问题。
问题的根源是:浏览器制造商,包括谷歌、微软和苹果在 2018 年的计划,在 2020 年将废除 TLS 1.0 和 1.1,以提高互联网连接的安全性和性能。
测试机浏览器再次输入10.0.0.77:10080,成功进入
输入10.0.0.77:10080/phpmyadmin,可以成功进入
登录测试用户名test1,密码12345678
发现无法连接数据库,经过测试发现是RedHat002开启了防火墙之后拒绝了,通
过30447这个端口的服务,我们要在RedHat002上使用命令开发30447这个端口
执行:sudo firewall-cmd --zone=public --add-port=30447/tcp --permanent
重新加载防火墙配置:sudo firewall-cmd --reload
总结:
在进行LAMP(Linux + Apache + MySQL/MariaDB + PHP)部署的过程中,我深刻体会到了其复杂性和细致性,同时也认识到了它所带来的强大功能和灵活性。
耐心与细致:LAMP部署过程中,每一步都需要仔细操作,任何一个小错误都可能导致整个环境的崩溃。因此,我深刻体会到了耐心和细致的重要性。
学习能力:在配置过程中,我遇到了许多问题和挑战,但正是这些问题促使我不断学习和探索。我通过查阅官方文档、社区论坛和在线教程,逐步解决了问题,并积累了宝贵的经验。
组件兼容性:在配置过程中,我深刻认识到了组件之间兼容性的重要性。例如,PHP版本与Apache和MySQL/MariaDB的版本需要相互兼容,否则可能会出现各种问题。
安全意识:通过配置防火墙,我深刻认识到了安全意识的重要性。只有时刻保持警惕,才能确保服务器的安全。
持续学习:网络安全是一个不断发展和变化的领域,只有持续学习和探索,才能跟上时代的步伐。
实践出真知:通过亲手配置防火墙并进行测试,我深刻体会到了实践的重要性。只有将理论知识付诸实践,才能真正掌握和运用它们。
版权归原作者 THD2312 所有, 如有侵权,请联系我们删除。