一、实验目的

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里使用SELECT User, 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的版本需要相互兼容,否则可能会出现各种问题。

安全意识:通过配置防火墙,我深刻认识到了安全意识的重要性。只有时刻保持警惕,才能确保服务器的安全。

持续学习:网络安全是一个不断发展和变化的领域,只有持续学习和探索,才能跟上时代的步伐。

实践出真知:通过亲手配置防火墙并进行测试,我深刻体会到了实践的重要性。只有将理论知识付诸实践,才能真正掌握和运用它们。

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐