• LAMP分布式安全方案搭建网页 (LinuxCentOS7+Apache+Mariadb+PHP)包括服务端口及防火墙规则配置


    目录

    一、实验目的

    二、设计方案及规划

    三、实验内容及步骤

    (1)实验前基础配置

    (2)Test配置,安装Firefox浏览器和图形界面

    (3)Web安装Apache

    (4)Database安装Mariadb

    (5)Web安装php-fpm

    (6)Web安装phpmyadmin

    (7)给phpMyAdmin设置登录密码

    (8)配置服务端口

    Web中的服务端口配置:

    Database中的服务端口配置:

    (9)配置防火墙进出规则

    Test的防火墙进出规则配置:

    Web的防火墙进出规则配置:

    Database的防火墙进出规则配置:

    四、总结


    一、实验目的

    1. 了解LAMP架构的概念和特点,包括Linux操作系统、Apache服务器、MySQL数据库和PHP编程语言的组成和功能;

    2. 学习如何在分布式环境下搭建和部署LAMP架构,提高系统的性能和可靠性;

    3. 掌握LAMP架构的搭建过程,学习如何配置和管理各个组件,以及如何实现负载均衡和高可用性;

    4. 熟悉分布式架构下的数据存储和管理方式,了解如何对数据进行备份和恢复,提高系统的安全性和稳定性;

    5. 实践LAMP架构下的开发和部署流程,掌握如何设计和开发基于LAMP的Web应用程序。

    二、设计方案及规划

    网络拓扑结构图(箭头所指处为可访问的主机)

    IP地址、端口分配等

    系统

    IP

    安装的软件

    作用

    Test

    CentOS7

    10.0.0.8(:10022)

    Firefox

    测试

    Web

    CentOS7

    10.0.0.9(:10022)

    Apache(:80\:88\:10080)、php-fpm、

    phpmyadmin

    提供网页

    Database

    CentOS7

    10.0.0.10(:10022)

    MySQL(mariadb:30213)

    存储数据

    Windows

    Windows11

    /

    /

    远程连接控制

    三、实验内容及步骤

    (1)实验前基础配置

            安装并配置虚拟机Test、Web、Database的主机名、IP、网络、yum源及远程连接(以上步骤略),关闭防火墙SElinux服务,并修改远程连接端口为10022

    1、永久关闭防火墙(防止开机自启)

    systemctl disable firewalld

    2、临时关闭SElinux服务

    1. setenforce 0 #关闭SELinux
    2. getenforce #查看状态

    3、修改ssh端口,进入ssh配置文件

    vi /etc/ssh/sshd_config

    2、找到端口那一行,将#去掉,并将22改为10022

    3、开放ssh使用的端口10022

    semanage port -l | grep ssh

    4、使用Windows远程连接(注意连接时端口号填写为10022)

    至此三台虚拟机的基本配置已完成

    (2)Test配置,安装Firefox浏览器和图形界面

    1、查看Test主机版本

    uname -a

    2.1、使用Windows进入Firefox官网选择对应的版本并下载(如果配置好了yum源请直接看2.2)

    https://www.firefox.com.cn/download/

     将下载好的压缩包上传到虚拟机中

    将其解压缩

    tar -xjvf Firefox-latest-x86_64.tar.bz2

    移入系统目录,并为其创建软链接

    1. mv firefox /usr/lib64
    2. ln -s /usr/lib64/firefox/firefox /usr/bin/firefox

    2.2、或者直接使用命令下载(需配置好yum源)

    yum -y install firefox

    4、由于firefox未安装图形界面无法启动,我们为其安装图形界面

    1. yum -y groupinstall "x Window system"
    2. yum -y groupinstall “Gnome"

    5、启用图形界面

    startx

    6、进入虚拟机内查看图形界面是否启动成功

    (3)Web安装Apache

    1、下载httpd

    yum -y install httpd

    2、查看版本号

    http -v

    3、将http服务添加到开机自启动并开启http服务

    systemctl enable httpd && systemctl start httpd

    4、进入浏览器输入Web的IP地址可以看到如下界面,即Apache安装成功

    (4)Database安装Mariadb

    1、进入mariadb.repo文件中配置yum源文件

    vi /etc/yum.repos.d/mariadb.repo

    配置文件如下: 

    1. [mariadb]
    2. name = MariaDB
    3. baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64
    4. gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    5. gpgcheck = 1

    2、列出系统上所有可用的Yum软件源,可以看到我们刚才添加的Mariadb源

    yum repolist

    3、安装Mariadb

    yum install -y mariadb-server

    4、测试启用Mariadb

    1. systemctl start mariadb
    2. systemctl stop mariadb
    3. systemctl start mysqld
    4. \q
    5. systemctl stop mysqld

    5、输入mysql_secure_installation,初始化数据库

    Enter current password for root (enter for none):          初次运行直接回车

    设置密码

    Switch to unix_socket authentication [Y/n]                     输入y并回车

    Change the root password? [Y/n]                                   输入y并回车

    New password:                                                              设置root用户密码

    Re-enter new password:                                               再次输入密码

    Remove anonymous users? [Y/n]                               是否删除匿名用户,输入y回车

    Disallow root login remotely? [Y/n]                             是否禁止root远程登录,这里我们输入n

    Remove test database and access to it? [Y/n]                是否删除test数据库,输入y回车

    Reload privilege tables now? [Y/n]                                 是否重新加载表权限,输入y回

    mysql_secure_installation

    6、重新启动Mariadb,root设置成功

    systemctl restart mariadb.service

    (5)Web安装php-fpm

    1、用命令php -v查看是否存在php,如果有则使用命令yum remove -y php*卸载(为防止版本过低)

    php -v

    2、更换yum源

    1. sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    2. sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

    3、为PHP 8启用流模块

    1. sudo yum-config-manager --disable 'remi-php*'
    2. sudo yum-config-manager --enable remi-php80

    4、安装PHP 8及扩展相关软件

    sudo yum install -y php php-{extension_name}

    5、查看是否安装成功

    php -v

    6、进入编辑文件index.php

    vi /var/www/html/index.php

    1. phpinfo();
    2. ?>

    7、进入浏览器输入WebIP/index.php

    8、安装php-fpm服务

    yum install -y php-mysqli

    9、启用服务并加入开机自启动

    (6)Web安装phpmyadmin

    1、从网络上下载phpMyAdmin的压缩包

    wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz		

    2、解压缩

    tar -xvzf phpMyAdmin-latest-all-languages.tar.gz

    3、将文件移入存储网页的文件夹中

    1. ls
    2. mv phpMyAdmin-5.2.1-all-languages phpMyAdmin #重命名
    3. mv phpMyAdmin /var/www/html/

    4、重启服务

    1. systemctl restart httpd
    2. systemctl restart php-fpm

    5、输入webIP+/phpMyAdmin/index.php进入网页,查看是否出现此界面

    (7)给phpMyAdmin设置登录密码

    Web中的操作:

    1、进入phpMyAdmin文档中找到inc.php结尾的文件,将其改名为config.inc.php

    1. cd /var/www/html/phpMyAdmin/
    2. ls #如果不是config.inc.php,而是config.sample.inc.php,就将文件改成config.inc.php

    2、进入config.inc.php文档中,对框选中的位置进行更改,添加Database的IP,登录用户名,密码,进入端口等信息

    vi config.inc.php

    1. $cfg['Servers'][$i]['host'] = '10.0.0.10'; # 如果你的数据库服务器在另一台机器上,这里改为该机器的 IP 或域名
    2. $cfg['Servers'][$i]['compress'] = false;
    3. $cfg['Servers'][$i]['AllowNoPassword'] = false;
    4. $cfg['Servers'][$i]['user'] = 'pl'; # 这里填入你的 MySQL/MariaDB 用户名
    5. $cfg['Servers'][$i]['password'] = '123456'; # 这里填入你的 MySQL/MariaDB 密码
    6. $cfg['Servers'][$i]['port'] = '3306'; # 默认 MariaDB/MySQL 端口是 3306
    7. $cfg['Servers'][$i]['socket'] = ''; # 如果你的服务器使用 socket 连接,这里指定 socket 路径

    3、重启服务

    1. systemctl restart httpd
    2. systemctl restart php-fpm

    Database中的操作:

    1、使用先前初始化数据库设置的root密码登录进去,添加允许登录的主机IP,用户名和密码等信息

    1. mysql -u root -p # 进入数据库
    2. Enter password: # 输入root用户密码
    3. SELECT User, Host FROM mysql.user; # 查看MariaDB中的所有用户
    4. CREATE USER 'pl'@'10.0.0.9' IDENTIFIED BY '123456'; # 创建一个新用户并为其设置密码
    5. GRANT ALL PRIVILEGES ON mysql.* TO 'pl'@'10.0.0.9'; # 为用户授予权限
    6. FLUSH PRIVILEGES; # 刷新权限
    7. \q # 退出

    2、查看用户列表是否添加成功

    1. mysql -u root -p # 进入数据库
    2. Enter password: # 输入root用户密码
    3. SELECT User, Host FROM mysql.user; # 查看MariaDB中的所有用户
    4. \q # 退出

    Test中的操作:

    1、输入webIP+/phpMyAdmin/index.php进入网页中

    2、输入刚才录入的用户名和密码,登录

    3、出现以下界面即phpMyAdmin登录密码设置成功

    (8)配置服务端口

            因为Test、Web、Database三台主机是仅通过IP和服务端口单向访问的,所以接下来将配置

    Web和Database的服务端口,以及三台主机的防火墙策略。

    首先给三台虚拟机分别安装网络工具(由于实验所用的CentOS均为最小安装,所以缺省了网络命令工具)

    yum install -y net-tools

    Web中的服务端口配置:

    1、查看http服务端口

    netstat -antlupe | grep httpd

    2、进入配置文件

    vi /etc/httpd//conf/httpd.conf

    3、新增88和10080两个端口,然后保存文件并退出

    4、重启http服务

    systemctl restart httpd

    5、查看端口是否添加成功

    netstat -tunlp | grep http

    6、进入浏览器访问88和10080这两个端口,查看是否存在对应服务,出现以下界面即成功

    Database中的服务端口配置:

    1、进入配置文件

    vi /var/www/html/phpMyAdmin/config.inc.php

    2、将默认端口3306更改

    3、重启mariadb服务

    systemctl restart mariadb

    4、查看mariadb服务端口

    netstat -tunlp | grep mariadb

    (9)配置防火墙进出规则

    Test的防火墙进出规则配置:

            由于三台虚拟机处于同一网段中,他们ssh可以互相登录。所以Test中只需要禁止其他两台ssh登录Test

    1、开启防火墙并加入开机自启

    1. systemctl start firewalld
    2. systemctl enable firewalld

    2、新增防火墙规则

    1. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="10022" reject' # 拒绝web机通过10022端口访问test机的ssh
    2. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="10022" reject' # 拒绝Data机通过10022端口访问test机的ssh

    3、重新加载防火墙规则并查看防火墙规则

    1. firewall-cmd --reload # 重新加载firewalld
    2. firewall-cmd --list-all # 查看防火墙规则

    4、ssh登录,查看是否配置成功

    Web的防火墙进出规则配置:

            由于三台虚拟机处于同一网段中,他们ssh可以互相登录。http服务也只能Test访问。所以需要禁止其他两台ssh登录,并配置http访问规则

    1、开启防火墙并加入开机自启

    1. systemctl start firewalld
    2. systemctl enable firewalld

    2、查看防火墙规则

    firewall-cmd --list-all    # 查看防火墙规则

    3、新增防火墙规则

    配置http规则:

    1. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10080" accept' # 允许测试机IP通过10080端口访问httpd
    2. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="88" accept' # 允许测试机通过80端口访问httpd
    3. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="80" accept' # 允许测试机通过8080端口访问httpd

    配置ssh规则:

    1. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10022" reject' # 拒绝test机通过10022端口访问web机的ssh
    2. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="10022" reject' # 拒绝Data机通过10022端口访问web机的ssh

    4、重新加载防火墙规则

    1. firewall-cmd --reload # 重新加载firewalld
    2. firewall-cmd --list-all # 查看防火墙规则

    5、测试shh登录

    Database的防火墙进出规则配置:

            由于三台虚拟机处于同一网段中,他们ssh可以互相登录。http服务也只能Web访问。所以需要禁止其他两台ssh登录,并配置数据库访问规则

    1、开启防火墙并加入开机自启

    1. systemctl start firewalld
    2. systemctl enable firewalld

    2、查看防火墙规则

    firewall-cmd --list-all    # 查看防火墙规则

    4、新增防火墙规则并重新加载防火墙规则

    配置数据库规则:

    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="30212" accept'   # 允许webIP通过30212端口访问数据库

    配置ssh规则:

    1. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="10022" reject' # 拒绝web机通过10022端口访问Data机的ssh
    2. firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10022" reject' # 拒绝Test机通过10022端口访问DAta机的ssh

    5、再次查看防火墙规则是否配置成功

    1. firewall-cmd --reload # 重新加载firewalld
    2. firewall-cmd --list-all # 查看防火墙规则

    6、测试shh

    四、总结

            至此LAMP的分布式配置已全部完成,希望本文能对大家有帮助!如果有帮到大家,希望大家能留个赞再离开,谢谢啦!

  • 相关阅读:
    腾讯X5浏览器内核静态集成方案
    HTML5七夕情人节表白网页制作【HTML5庆祝生日蛋糕烟花特效】HTML+CSS+JavaScript
    无感刷新token
    Windows平台Qt6中UTF8与GBK文本编码互相转换、理解文本编码本质
    疫情失业之下,测试的未来在哪里
    shell之免交互
    react实现时钟翻牌效果
    Android 四种启动方式
    时间复杂度、空间复杂度 O(1)和 O(logN)
    【蜂鸟E203的FPGA验证】Chap.5 基于E203内核的处理器验证+ 基于FPGA的处理器设计与验证流程
  • 原文地址:https://blog.csdn.net/weixin_74907236/article/details/139291629