搭建LAMP服务器的一些安全配置
本文最后更新于89 天前,其中的信息可能已经过时,如有问题可在评论区留言
本文会持续更新
以下均为LAMP环境,使用其他环境搭建的自行搜索相应配置

一、禁用Index of

apache2默认开启目录浏览功能,如果网站目录下没有默认的index文件,则所有人都能直接看到目录下的所有文件。

更改apache配置文件/etc/apache2/apache2.conf,找到<Directory /var/www/>将其中的Indexes去掉,改完后如下图所示:

<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

二、申请免费ssl证书

sudo apt-get install cerbot
sudo certbot --apache -d example.com

安装cerbot,将example.com替换为你的域名,根据提示配置即可

注意,443端口需要单独配置禁用Index of

如果配置了ssl,则需要到/etc/apache2/sites-available目录下将ssl配置文件一起禁用Index of

三、开启session的httponly功能

如果网站存在XSS漏洞,攻击者可以通过在网站嵌入JS代码获取其他访问者登陆账号的cookie信息,开启httponly后js代码便无法获取cookie字段。

找到你的php.ini文件,找到配置修改为on即可。

然后运行systemctl restart apache2重启你的apache2或者重启你的php模块

四、禁用敏感php函数

禁用前请确保你的php代码没有使用到这些函数!

  1. exec():执行外部程序,可能导致命令注入。
  2. shell_exec():与 exec() 类似,执行命令行程序。
  3. system():执行外部程序并返回输出,存在命令注入风险。
  4. passthru():执行外部程序并直接输出结果,可能被滥用。
  5. proc_open():打开进程并与其进行交互,风险较高。
  6. popen():打开进程并读取其输出,存在安全隐患。
  7. curl_exec():如果不加限制,可能会被用来发起恶意请求。
  8. eval():执行字符串中的 PHP 代码,极易导致代码注入。
  9. assert():与 eval() 类似,可能被用来执行恶意代码。
  10. include() / require():如果没有正确的路径验证,可能导致文件包含漏洞。

其他危险函数可见:利用文件包含漏洞植入木马以及绕过和防御

五、指定php可访问文件路径

如果不指定open_basedir,意味着PHP脚本可以访问服务器上的任何文件和目录,攻击者可以利用这点使用恶意脚本访问服务器上的敏感数据。

这样,你的PHP脚本就只能访问/your/webfile/path目录及其子目录。

六、使用CSP内容安全策略

CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成。CSP 大大增强了网页的安全性,攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。

添加CSP响应头

Content-Security-Policy: script-src 'self' https://www.dead-sec.com; object-src 'none'; style-src cdn.example.com; child-src https:
  • defau1t-src:定义针对所有类型(js/image/css/font/ajax/iframe/多媒体等)资源的默认加载策略,当某类资源单独定义时,优先使用单独定义的策略
  • script-src'self' https://www.dead-sec.com:对于脚本只信任当前域名和https://www.dead-sec.com,当使用self时注意要加单引号,否则会识别为域名
  • object-src'none':对于<object>标签不信任任何URL,即不加载任何资源
  • style-src:对于样式表只信任cdn.example.com
  • chi1d-src https: :对于框架(frame):必须使用HTTPS协议加载,注意冒号是https协议的一部分。

作者:Chr1s
本文版权归作者所有,未经允许,禁止转载、复制或以其他方式使用。若需引用或转载,请与作者联系。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇