川大实训-安全加固实验
什么是安全加固?
安全加固和优化是实现信息系统安全的关键环节。通过安全加固,将在信息系统的网络层、主机层、软件层等层次建立符合安全需求的安全状态,并以此作为保证用户信息系统安全的起点
安全加固是配置软件系统的过程中,针对服务器操作系统、数据库及应用中间件等软件系统,通过打补丁、强化账号安全、加固服务、修改安全配置、优化访问控制策略、增加安全机制等方法,堵塞漏洞和“后门”,合理进行安全性加强,提高其健壮性和安全性,增加攻击者入侵的难度,提升系统安全防范水平
Windows安全加固
这里以win7虚拟机为例子,在进行实验之前,一定要记得提前拍好快照,以方便在实验结束后恢复实验前的状态
点击这个键拍摄虚拟机快照,方便我们及时恢复原来的状态
Windows配置的途径
组策略(gpedit.msc) |
账户管理和认证授权
账户
默认账户安全
- 禁用 Guest 账户。
- 禁用或删除其他无用账户(建议先禁用账户三个月,待确认没有问题后删除。)
操作步骤
打开 控制面板 > 管理工具 > 计算机管理,在 系统工具 > 本地用户和组 > 用户 中,双击 Guest 帐户,在属性中选中 帐户已禁用,单击 确定。
按照用户分配账户
按照用户分配帐户。根据业务要求,设定不同的用户和用户组。例如,管理员用户,数据库用户,审计用户,来宾用户等。
操作步骤
打开 控制面板 > 管理工具 > 计算机管理,在 系统工具 > 本地用户和组 中,根据您的业务要求设定不同的用户和用户组,包括管理员用户、数据库用户、审计用户、来宾用户等。
我们这里新建一个数据库用户,如下所示
同理,可以在组内也创建新的组
定期检查并删除与无关帐户
定期删除或锁定与设备运行、维护等与工作无关的帐户。
操作步骤
打开 控制面板 > 管理工具 > 计算机管理,在 系统工具 > 本地用户和组 中,删除或锁定与设备运行、维护等与工作无关的帐户。
这里我们可以将刚刚创建的SQL用户删除
不显示最后的用户名
配置登录登出后,不显示用户名称。
操作步骤:
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 安全选项 中,双击 交互式登录:不显示最后的用户名,选择 已启用 并单击 确定。
检查影子账户
如何找到影子账户
“Win+R”键调出“运行”->regedit
打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\SAM\SAM],右击该项选择“权限”,选中“组或用户名称”列表中的“Administrators”,勾选“完全控制”后点击“确定”。
按F5刷新一下注册表就会发现可以打开该项的下级分支了,找到[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names],其下的子项就是系统中的账户名。
继续展开[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Administrator],查看并记录下该项的默认值。
查看Administrator帐号所对应的键值和”users”子项里的相对应,”users”里包含的就是该帐户的权限的键值(比如:Administrator的键值是1f4为结尾的,就从上面users里面找1f4为结尾的键)。打开Administrator所对应的”F”键值并复制里面的16进制。
依次检查[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names]下的所有子项,如果某个子项的默认值与刚才记录下的Administrator的默认值相同,那么这个就是影子账户了,当然不能给黑客留一把后门“钥匙”,毫不犹豫地删除之。我的虚拟机中不存在这个问题,没有影子账户
除Administrator外,黑客还可能复制出其他账户的用户数据“保管箱”的“钥匙”,所以保险起见还需检查[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names]下所有子项的默认值是否有相同。
口令
密码复杂度
密码复杂度要求必须满足以下策略:
- 最短密码长度要求八个字符。
- 启用本机组策略中密码必须符合复杂性要求的策略。
即密码至少包含以下四种类别的字符中的两种:
- 英语大写字母 A, B, C, … Z
- 英语小写字母 a, b, c, … z
- 西方阿拉伯数字 0, 1, 2, … 9
- 非字母数字字符,如标点符号,@, #, $, %, &, * 等
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 帐户策略 > 密码策略 中,确认 密码必须符合复杂性要求 策略已启用。
我们将这个被禁用的开关打开即可
密码最长留存期
对于采用静态口令认证技术的设备,帐户口令的留存期不应长于 90 天。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 帐户策略 > 密码策略 中,配置 密码最长使用期限 不大于 90 天。
账户锁定策略
对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过 10 次后,锁定该用户使用的帐户。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 帐户策略 > 帐户锁定策略 中,配置 帐户锁定阈值 不大于 10 次。
授权
远程关机
在本地安全设置中,从远端系统强制关机权限只分配给 Administrators 组。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 从远端系统强制关机 权限只分配给 Administrators 组。
本地关机
在本地安全设置中关闭系统权限只分配给 Administrators 组。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 关闭系统 权限只分配给 Administrators 组。
用户权限指派
在本地安全设置中,取得文件或其它对象的所有权权限只分配给 Administrators 组。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 取得文件或其它对象的所有权 权限只分配给 Administrators 组。
授权账户登录
在本地安全设置中,配置指定授权用户允许本地登录此计算机。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 允许本地登录 权限给指定授权用户。
授权账户从网络访问
在本地安全设置中,只允许授权帐号从网络访问(包括网络共享等,但不包括终端服务)此计算机。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 从网络访问此计算机 权限给指定授权用户。
日志配置操作
日志配置
审核登录
设备应配置日志功能,对用户登录进行记录。记录内容包括用户登录使用的帐户、登录是否成功、登录时间、以及远程登录时、及用户使用的 IP 地址。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核登录事件。
审核策略
启用本地安全策略中对 Windows 系统的审核策略更改,成功和失败操作都需要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核策略更改。
审核对象访问
启用本地安全策略中对 Windows 系统的审核对象访问,成功和失败操作都需要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核对象访问。
审核事件目录服务访问
启用本地安全策略中对 Windows 系统的审核目录服务访问,仅需要审核失败操作。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核目录服务器访问。
审核特权使用
启用本地安全策略中对 Windows 系统的审核特权使用,成功和失败操作都需要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核特权使用。
审核系统事件
启用本地安全策略中对 Windows 系统的审核系统事件,成功和失败操作都需要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核系统事件。
审核账户管理
启用本地安全策略中对 Windows 系统的审核帐户管理,成功和失败操作都要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核帐户管理。
审核进程追踪
启用本地安全策略中对 Windows 系统的审核进程追踪,仅失败操作需要审核。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审核进程追踪。
日志文件大小
设置应用日志文件大小至少为 8192 KB,可根据磁盘空间配置日志文件大小,记录的日志越多越好。并设置当达到最大的日志尺寸时,按需要轮询记录日志。
操作步骤
打开 控制面板 > 管理工具 > 事件查看器,配置应用日志、系统日志、安全日志属性中的日志大小,以及设置当达到最大的日志尺寸时的相应策略。
针对特定目录添加审核
针对特定目录添加审核
有时我们需要针对特定目录,特定账户进行的操作进行审核。
具体步骤: 打开文件夹属性,选择高级,点击审核,添加审核主体,审核主体即为用户或用户组。然后设置成功或者失败 亦或者两者都审核。设置权限,设置是否应用于子目录或者文件。
Linux安全加固
这里以我的Kali为例子,同样,在进行实验前需要对其拍摄快照
账号和口令
禁用或删除无用账号
减少系统无用账号,降低安全风险。
操作步骤
- 使用命令 sudo userdel <用户名> 删除不必要的账号。
- 使用命令 sudo passwd -l <用户名> 锁定不必要的账号。
- 使用命令 sudo passwd -u <用户名> 解锁必要的账号。
检查特殊账号
操作步骤
查看空口令和 root 权限账号,确认是否存在异常账号:
- 使用命令 awk -F: ‘($2==””)’ /etc/shadow 查看空口令账号。
- 使用命令 awk -F: ‘($3==0)’ /etc/passwd 查看 UID 为零的账号。
加固空口令账号:
- 使用命令 passwd <用户名> 为空口令账号设定密码。
- 确认 UID 为零的账号只有 root 账号。
我这里的账号已经被加固成功
添加口令策略
使用命令 vi /etc/login.defs 修改配置文件。
- PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
- PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
- PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
使用 chage 命令修改用户设置。
例如,chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>表示将此用户的密码最长使用天数设为 30,最短使用天数设为 0,密码 2000 年 1 月 1 日过期,过期前七天警告用户。
设置连续输错三次密码,账号锁定五分钟。使用命令 vi /etc/pam.d/common-auth修改配置文件,在配置文件中添加 auth required pam_tally.so onerr=fail deny=3 unlock_time=300。
限制用户su
限制能 su 到 root 的用户。
操作步骤
使用命令 vi /etc/pam.d/su修改配置文件,在配置文件中添加行。例如,只允许 test 组用户 su 到 root,则添加 auth required pam_wheel.so group=test。
禁止root用户通过ssh直接登录
限制 root 用户直接登录。
操作步骤
- 创建普通权限账号并配置密码, 防止无法远程登录;
- 使用命令 vi /etc/ssh/sshd_config修改配置文件将 PermitRootLogin 的值改成 no,并保存,然后使用service sshd restart重启服务。
服务
关闭不必要的服务
关闭不必要的服务(如普通服务和 xinetd 服务),降低风险。
操作步骤
使用命令systemctl disable <服务名>设置服务在开机时不自动启动。
说明: 对于部分老版本的 Linux 操作系统(如 CentOS 6),可以使用命令chkconfig —level <服务名> off设置服务在指定 init 级别下开机时不自动启动。
SSH服务安全
对 SSH 服务进行安全加固,防止暴力破解成功。
操作步骤
使用命令 vim /etc/ssh/sshd_config 编辑配置文件。
- 不允许 root 账号直接登录系统。
设置 PermitRootLogin 的值为 no。
- 修改 SSH 使用的协议版本。
设置 Protocol 的版本为 2。
- 修改允许密码错误次数(默认 6 次)。
设置 MaxAuthTries 的值为 3。
配置文件修改完成后,重启 sshd 服务生效。
文件系统
设置umask值
设置默认的 umask 值,增强安全性。
操作步骤
使用命令 vi /etc/profile 修改配置文件,添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。
设置登录超时
设置系统登录后,连接超时时间,增强安全性。
操作步骤
使用命令 vi /etc/profile 修改配置文件,将以 TMOUT= 开头的行注释,设置为TMOUT=180,即超时时间为三分钟。
日志
syslogd日志
启用日志功能,并配置日志记录。
操作步骤
Linux 系统默认启用以下类型日志:
- 系统日志(默认)/var/log/messages
- cron 日志(默认)/var/log/cron
- 安全日志(默认)/var/log/secure
注意:部分系统可能使用 syslog-ng 日志,配置文件为:/etc/syslog-ng/syslog-ng.conf。
记录所有用户的登录和操作日志
通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。
操作步骤
- 运行 [root@xxx /]# vim /etc/profile打开配置文件。
- 在配置文件中输入以下内容:
history |
- 运行 [root@xxx /]# source /etc/profile 加载配置生效。
注意: /var/log/history 是记录日志的存放位置,可以自定义。
通过上述步骤,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录 IP、时间的日志文件,包含此用户本次的所有操作(root 用户除外)。
文件权限
共享文件夹及访问权限
关闭默认共享
非域环境中,关闭 Windows 硬盘默认共享,例如 C$,D$。
操作步骤
打开 注册表编辑器,根据推荐值修改注册表键值。
注意: Win2008没有该键值,但没有关闭默认gs’xtWindows Server 2012 版本已默认关闭 Windows 硬盘默认共享,且没有该注册表键值。
- HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\AutoShareServer
共享文件夹授权访问
每个共享文件夹的共享权限,只允许授权的帐户拥有共享此文件夹的权限。
操作步骤
每个共享文件夹的共享权限仅限于业务需要,不要设置成为 Everyone。打开 控制面板 > 管理工具 > 计算机管理,在 共享文件夹 中,查看每个共享文件夹的共享权限。
服务安全
禁用TCP/IP上的NetBIOS
禁用 TCP/IP 上的 NetBIOS 协议,可以关闭监听的 UDP 137(netbios-ns)、UDP 138(netbios-dgm)以及 TCP 139(netbios-ssn)端口。
操作步骤
- 在 计算机管理 > 服务和应用程序 > 服务 中禁用 TCP/IP NetBIOS Helper 服务。
- 在网络连接属性中,双击 Internet 协议版本 4(TCP/IPv4),单击 高级。在 WINS 页签中,进行如下设置:
禁用不必要的服务
服务名 | 建议 |
---|---|
DHCP Client | 如果不使用动态 IP, 则建议关闭 |
Background Intelligent Transfer Service | 如果不启用自动更新,建议关闭 |
ComputerBrowser | 建议关闭 |
Diagnostic Policy Service | 建议手动 |
IP Helper | 如果不用双栈建议关闭 |
PrintSpooler | 如果不使用打印服务,建议关闭 |
Remote Registry | 建议关闭 |
TCP/IP NetBIOS Helper | 建议关闭 |
Windows Remote ManageMent | 建议关闭 |
Windows Font Cache Service | 建议关闭 |
WinHTTP Web Proxy Auto-Discovery Service | 建议关闭 |
安全选项
启动安全选项
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 安全选项 中,进行如下设置:
安全选项 | 配置内容 |
---|---|
交互式登录:试图登录的用户的消息标题 | 警告标题 |
交互式登录:试图登录的用户的消息文本 | 警告内容 |
Microsoft 网络服务器:对通信进行数字签名(如果客户端允许) | 启用 |
Microsoft 网络服务器:对通信进行数字签名(始终) | 启用 |
Microsoft 网络客户端:对通信进行数字签名(如果服务器允许) | 启用 |
Microsoft 网络客户端:对通信进行数字签名(始终) | 启用 |
网络安全:基于 NTLM SSP 的(包括安全 RPC)服务器的最小会话安全 | 要求 NTLMv2 会话安全要求 128 位加密 |
网络安全:基于 NTLM SSP 的(包括安全 RPC)客户端的最小会话安全 | 要求 NTLMv2 会话安全要求 128 位加密 |
网络安全:LAN 管理器身份验证级别 | 仅发送 NTLMv2 响应拒绝 LM&NTLM |
网络访问:不允许 SAM 帐户的匿名枚举 | 启用 |
网络访问:不允许 SAM 帐户和共享的匿名枚举 | 启用 |
网络访问:可匿名访问的共享 | 空 |
网络访问:可匿名访问的命名管道 | 空 |
网络访问:可远程访问的注册表路径 | 空,不允许远程访问注册表 |
网络访问:可远程访问的注册表路径和子路径 | 空,不允许远程访问注册表 |
禁用未登录前关机
服务器默认是禁止在未登录系统前关机的。如果启用此设置,服务器安全性将会大大降低,给远程连接的黑客造成可乘之机,强烈建议禁用未登录前关机功能。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 安全选项 中,禁用 关机:允许系统在未登录前关机 策略。
其他安全配置
防病毒管理
Windows 系统需要安装防病毒软件。
操作步骤
安装企业级防病毒软件,并开启病毒库更新及实时防御功能。
设置屏幕保护密码和开启时间
设置从屏幕保护恢复时需要输入密码,并将屏幕保护自动开启时间设定为五分钟。
操作步骤
启用屏幕保护程序,设置等待时间为 5 分钟,并启用 在恢复时使用密码保护。
限制远程登录空闲断开时间
对于远程登录的帐户,设置不活动超过时间 15 分钟自动断开连接。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 安全选项 中,设置 Microsoft 网络服务器:暂停会话前所需的空闲时间数量 属性为 15 分钟。
操作系统补丁管理
安装最新的操作系统 Hotfix 补丁。安装补丁时,应先对服务器系统进行兼容性测试。
操作步骤
安装最新的操作系统 Hotfix 补丁。安装补丁时,应先对服务器系统进行兼容性测试。
注意:对于实际业务环境服务器,建议使用通知并自动下载更新,但由管理员选择是否安装更新,而不是使用自动安装更新,防止自动更新补丁对实际业务环境产生影响。
开启本地防火墙
执行firewall.cpl,开启防火墙
Nginx安全加固
适用情况
适用于使用Nginx进行部署的Web网站。
技能要求
熟悉Nginx配置,能够Nginx进行部署,并能针对站点使用Nginx进行安全加固。
前置条件
1、 根据站点开放端口,进程ID,确认站点采用Nginx进行部署;
2、 找到Nginx安装目录,针对具体站点对配置文件进行修改;
3、 在执行过程中若有任何疑问或建议,应及时反馈。
详细操作
日志配置
1、备份nginx.conf 配置文件。
修改配置,按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式(http标签内,在所有的server标签内可以调用):
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
2、在server标签内,定义日志路径
access_log logs/host.access.log main; |
3、保存,然后后重启nginx服务。
禁止目录浏览
备份nginx.conf配置文件。
编辑配置文件,HTTP模块添加如下一行内容:
autoindex off; |
保存,然后后重启nginx服务。
限制目录执行权限
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
#示例:去掉单个目录的PHP执行权限 |
保存,然后后重启nginx服务。
需要注意两点:
- 以上的配置文件代码需要放到 location ~ .php{…}上面,如果放到下面是无效的;
- attachments需要写相对路径,不能写绝对路径。
最佳经验实践
隐藏版本信息
备份nginx.conf配置文件。
编辑配置文件,添加http模块中如下一行内容:
server_tokens off; |
限制HTTP请求方法
备份nginx.conf配置文件。
编辑配置文件,添加如下内容:
if ($request_method !~ ^(GET|HEAD|POST)$ ) { |
这样只允许常用的GET和POST方法,以及HEAD方法,其他的方法都被禁用了
限制IP访问
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
location / { |
限制并发和速度
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
limit_zone one $binary_remote_addr 10m; |
控制超时时间
备份nginx.conf配置文件。
编辑配置文件,具体设置如下:
client_body_timeout 10; #设置客户端请求主体读取超时时间 |
对php 5.4配置进行加固
PHP基线检查及加固概述
PHP的安检和加固项通常在php.ini的配置文件中进行配置
启用PHP的安全模式
注意: PHP <=5.2 环境适用的安全模式是一个非常重要的内嵌安全机制,PHP 安全模式能有效控制一些 PHP 环境中的函数(例如system()函数),对大部分的文件操作函数进行权限控制,同时不允许对某些关键文件进行修改(例如 /etc/passwd)。但是,默认的 php.ini 配置文件并没有启用安全模式。
您可以通过修改 php.ini 配置文件启用 PHP 安全模式:safe_mode = on
控制 PHP 脚本能访问的目录
使用open_basedir选项能够控制 PHP 脚本只能访问指定的目录,这样能够避免 PHP 脚本访问不应该访问的文件,一定程度下降低了 phpshell 的危害。一般情况下,可以设置为只能访问网站目录:open_basedir = "/var/www/html:/tmp"
关闭危险函数
如果您启用了安全模式,那么可以不需要设置函数禁止,但为了安全考虑,还是建议您进行相关设置。例如,您不希望执行包括system()等在内的执行命令的 PHP 函数,以及能够查看 PHP 信息的phpinfo()等函数,那么您可以通过以下设置禁止这些函数:disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open
如果您想要禁止对于任何文件和目录的操作,那么您可以关闭以下文件相关操作。disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite,
chgrp,chmod, chown
注意: 以上设置中只列举了部分比较常用的文件处理函数,您也可以将上面的执行命令函数和这些文件处理函数相结合,就能给抵制大部分的 phpshell 威胁。
关闭PHP版本信息在HTTP头中的泄露
为了防止黑客获取服务器中 PHP 版本的信息,您可以禁止该信息在 HTTP 头部内容中泄露:expose_php = off
这样设置之后,黑客在执行telnet
关闭注册全局变量
注意: PHP < = 5.2适用
在 PHP 环境中提交的变量,包括使用 POST 或者 GET 命令提交的变量,都将自动注册为全局变量,能够被直接访问。这对您的服务器是非常不安全的,因此建议您将注册全局变量的选项关闭,禁止将所提交的变量注册为全局变量。register_globals = off
当然,如果这样设置之后,获取对应变量的时候就需要采取合理方式。例如,获取 GET 命令提交的变量 var,就需要使用$_GET[‘var’]命令来进行获取,在进行 PHP 程序设计时需要注意。
SQL注入防护
注意: PHP <= 5.3.0
SQL 注入是一个非常危险的问题,小则造成网站后台被入侵,重则导致整个服务器沦陷。magic_quotes_gpc
选项默认是关闭的。如果打开该选项,PHP 将自动把用户提交对SQL 查询的请求进行转换(例如,把 ’ 转换为 \’ 等),这对于防止 SQL 注入攻击有很大作用,因此建议您将该选项设置为:magic_quotes_gpc = on
但是防止不了宽字节注入
错误信息控制
一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含PHP脚本当前的路径信息或者查询的SQL语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:display_errors = Off
如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:error_reporting = E_WARNING & E_ERROR
注意: 强烈建议您关闭错误提示信息。
错误日志
建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:log_errors = On
同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:error_log = /usr/local/apache2/logs/php_error.log
注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。
扩展:对mysql服务进行配置,实现用户的权限限制
root用户登录到mysql
mysql -u root -p |
创建数据库和用户
-- 创建数据库 |
我们先试着从本地登录
mysql -u user_web1 -p |
这里显示我们的user_web1的权限能访问当前数据库
我们输入如下命令
nano /etc/mysql/conf.d/mysql.cnf |
输入bind-address=0.0.0.0
后保存,如下图所示
执行 sudo systemctl restart mysql 重启服务 |
用本机的navicat连接虚拟机的sql账户,在这之前先开启虚拟机的3306端口
sudo ufw allow 3306 |
我们可以看到已经成功