毕业设计 网站建设wordpress表单留言
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:07
当前位置: 首页 > news >正文
毕业设计 网站建设,wordpress表单留言,it运维管理,广州网站制作哪家强利用Fail2Ban增强Jupyter Notebook安全性以防范目录遍历攻击 书接上回[^参见]一、目录遍历攻击#xff08;Directory Traversal Attack#xff09;二、日志记录的网络攻击示例分析三、配置 Fail2ban四、fail2ban-regex测试和验证正则表达式五、重启 Fail2Ban六、验证配置生效… 利用Fail2Ban增强Jupyter Notebook安全性以防范目录遍历攻击 书接上回[^参见]一、目录遍历攻击Directory Traversal Attack二、日志记录的网络攻击示例分析三、配置 Fail2ban四、fail2ban-regex测试和验证正则表达式五、重启 Fail2Ban六、验证配置生效七、一些建议参见 作者高玉涵 时间2024.10.9 15:31 博客blog.csdn.net/cg_i 环境CentOS8、fail2ban 0.11.2
无论选择哪条路都请保持一颗热爱学习、永不停止的心。因为只有不断学习我们才能在这个日新月异的世界中立足。
书接上回1
Fail2ban的filter.d2里存放着大量针对市面上大多数服务程序的防护配置脚本。这些脚本通过正则表达式匹配系统日志中的特定模式从而识别出潜在的恶意行为如多次失败的登录尝试、异常访问模式等。当这些模式被触发时Fail2ban可以采取相应的行动如通过防火墙规则封禁IP地址、发送通知邮件等。
当然值得称道的是尽管Fail2ban已经为大多数主流服务提供了预配置的防护脚本但当你像我一样使用了一些较为小众却极为实用的服务例如便于随时进行代码调试与灵感记录的Jupyter Notebook时你可能会发现在filter.d目录中难以找到直接适用的专用防护配置。幸运的是Fail2ban的设计充分考虑到了用户的这种需求它提供了一套高度灵活的规则定制机制。这意味着你可以针对Jupyter Notebook或任何其他特定服务轻松创建个性化的防护策略从而实现系统的全面安全防护确保你的工作环境既便捷又安全。
本文旨在结合Fail2Ban的日志监控与封禁功能为Jupyter Notebook量身定制一套专属的防护策略让您的代码调试与灵感记录之旅更加无忧无虑。
一、目录遍历攻击Directory Traversal Attack
目录遍历攻击是指攻击者利用应用程序对文件路径处理的不当验证或过滤漏洞通过构造特定的文件路径字符串试图访问存储在Web服务器根目录之外的文件和目录。这种攻击通常发生在Web应用程序或其他需要文件系统访问的软件中攻击者通过修改URL或输入字段中的文件路径来实现对受限资源的访问。
一、攻击方式
直接路径遍历攻击者直接在URL或输入字段中构造包含“…/”等特殊字符的路径字符串试图向上导航到更高层次的目录从而访问到受限的文件或目录。编码绕过攻击者可能使用URL编码、Unicode编码等方式对特殊字符进行编码以绕过应用程序的安全检查。例如使用“%2e%2e%2f”代替“…/”来尝试访问上级目录。利用应用程序漏洞攻击者还可能利用应用程序的其他漏洞如文件包含漏洞、文件上传漏洞等来实现路径遍历攻击。
二、危害与影响
目录遍历攻击可能导致多种严重后果包括但不限于
数据泄露攻击者可以访问包含敏感信息的文件如配置文件、用户数据文件等。代码泄露攻击者可以访问应用程序的源代码从而发现更多的漏洞。系统破坏通过访问和修改系统文件攻击者可以对系统进行破坏性操作影响服务的正常运行。权限提升攻击者可能通过读取和利用系统文件来提升自己的权限执行更高级别的攻击。
二、日志记录的网络攻击示例分析
(省略…)
[W 01:24:43.095 NotebookApp] 403 POST /web/addons/ftp_download.php (107.172.20.215) 2.230000ms refererNone
[W 01:24:43.146 NotebookApp] 403 POST /tplus/ajaxpro/Ufida.T.SM.Login.UIP.LoginManager,Ufida.T.SM.Login.UIP.ashx?methodCheckPassword (107.172.20.215): _xsrf argument missing from POST
[W 01:24:43.147 NotebookApp] 403 POST OPTIONLOADFILEFILENAME../mysql_config.ini (107.172.20.215) 1.740000ms refererNone
[W 01:24:43.325 NotebookApp] 404 GET /Catalog/BlobHandler.ashx?UrlYQB3AGUAdgAyADoAawB2ADAAOgB4AGwAawBiAEoAbwB5AGMAVwB0AFEAMwB6ADMAbABLADoARQBKAGYAYgBHAE4ATgBDADUARQBBAG0AZQBZAE4AUwBiAFoAVgBZAHYAZwBEAHYAdQBKAFgATQArAFUATQBkAGcAZAByAGMAMgByAEUAQwByAGIAcgBmAFQAVgB3AD0A
[W 01:24:43.549 NotebookApp] 404 GET /AirWatch/BlobHandler.ashx?UrlYQB3AGUAdgAyADoAawB2ADAAOgB4AGwAawBiAEoAbwB5AGMAVwB0AFEAMwB6ADMAbABLADoARQBKAGYAYgBHAE4ATgBDADUARQBBAG0AZQBZAE4AUwBiAFoAVgBZAHYAZwBEAHYAdQBKAFgATQArAFUATQBkAGcAZAByAGMAMgByAEUAQwByAGIAcgBmAFQAVgB3AD0A (107.172.20.215) 1.450000ms refererNone
[W 01:24:43.594 NotebookApp] 404 GET /go/add-on/business-continuity/api/plugin?folderNamepluginName../../../../../../../../windows/win.ini (107.172.20.215) 1.450000ms refererNone
[W 01:24:43.640 NotebookApp] 403 POST /ispirit/interface/gateway.php (107.172.20.215): _xsrf argument missing from POST
[W 01:24:43.922 NotebookApp] 403 POST /tplus/SM/SetupAccount/Upload.aspx?preload1 (107.172.20.215): _xsrf argument missing from POST
(省略…)
[I 01:24:45.555 NotebookApp] 302 GET /?rest_route/wc/store/products/collection-datacalculate_attribute_counts[0][query_type]orcalculate_attribute_counts[0][taxonomy]%252522%252529%252520union%252520all%252520select%2525201%25252Cconcat%252528id%25252C0x3a%25252cmd5%252528142712%252529%252529from%252520wp_users%252520where%252520%252549%252544%252520%252549%25254E%252520%2525281%252529%25253B%252500 (107.172.20.215) 0.650000ms
(省略…)这些日志条目来自Jupyter Notebook记录了特定时间段内的HTTP请求。分析这些日志我们可以看出以下几点 访问尝试的IP地址 所有记录的请求都来自同一个IP地址107.172.20.215。这可能表明是一个单一的用户或系统在进行这些操作。 请求类型与结果 多数请求是POST和GET请求。许多请求返回了403禁止访问和404未找到状态码这表明请求的资源不存在或者请求被拒绝。 潜在的攻击尝试 请求中尝试访问一些常见的敏感文件或执行SQL注入例如 /web/addons/ftp_download.php尝试下载FTP文件。OPTIONLOADFILEFILENAME../mysql_config.ini尝试加载MySQL配置文件。/Catalog/BlobHandler.ashx 和 /AirWatch/BlobHandler.ashx带有可疑的URL编码参数可能是尝试访问或执行未授权的资源。/go/add-on/business-continuity/api/plugin?folderNamepluginName../../../../../../../../windows/win.ini尝试访问系统文件。/wc/store/products/collection-data 带有SQL注入特征的查询参数。 缺少安全令牌 一些POST请求因为缺少_xsrf参数而失败。这可能是因为这些请求没有包含必要的安全令牌该令牌通常用于防止跨站请求伪造CSRF攻击。 请求的时间戳 所有这些请求都发生在相同的时间段内01:24:43到01:24:45表明这是一系列连续的尝试。 可能的目标 目标系统可能运行着多种应用或服务如FTP服务、数据库服务、Web服务等攻击者尝试利用这些服务中的漏洞。
这些日志条目揭示了来自特定IP地址的一系列可疑且潜在恶意的请求包括尝试访问敏感文件、执行SQL注入以及绕过安全机制等。尽管攻击者并未获得实质性成果且系统防护措施已相当完善但此类攻击事件仍频繁发生对服务器造成了不小的压力和资源损耗。
三、配置 Fail2ban
编辑 /etc/fail2ban/jail.local或相应的配置文件添加以下内容
[jupyter]
enabled true
filter jupyter-notebook
logpath /path/to/your/jupyter.log # 你所在日志路径
maxretry 3
bantime 6000 # 禁止时间单位为秒然后创建一个新的过滤器文件 /etc/fail2ban/filter.d/jupyter-notebook.conf并添加以下内容
[Definition]
failregex ^.[(W|E|I|D) .] 4\d{2} (GET|POST) .* (HOST).$ # 日志匹配的正则表达式
ignoreregex 解释
^ 表示行的开始。. 表示任意数量的任意字符除了换行符。[(W|E|I|D) .] 匹配一个方括号内的内容其中以W、E、I或D开头后面跟着任意字符。这通常表示日志级别或某种标记。4\d{2} 其中 4 表示匹配数字4\d{2} 表示匹配两位数字。这样正则表达式就能匹配所有从400到499的HTTP状态码了。(GET|POST) 匹配请求方法GET或POST。. 再次匹配任意数量的任意字符。(HOST) 是一个特殊的Fail2Ban占位符用于匹配日志中的主机名或IP地址。在实际使用中这通常会被替换为具体的值。.*$ 表示行的结束前面再次匹配任意数量的任意字符。
四、fail2ban-regex测试和验证正则表达式
fail2ban-regex是fail2ban提供的一个小工具用于测试正则表达式是否能够匹配到日志文件中的要禁止的IP行。fail2ban-regex在默认情况下会自动匹配到日志文件中的日期和时间部分因此在编写正则表达式时通常无需显式包含日期和时间模式。
fail2ban-regex /path/to/your/jupyter.log /etc/fail2ban/filter.d/jupyter-notebook.confRunning testsUse filter file : jupyter-notebook, basedir: /etc/fail2ban
Use log file : /path/to/your/jupyter.log
Use encoding : UTF-8Results
Failregex: 71851 total
|- #) [# of hits] regular expression
| 1) [71851] ^.[(W|E|I|D) .] 4\d{2} (GET|POST) .* (HOST).$
-Ignoreregex: 0 totalDate template hits:Lines: 107606 lines, 0 ignored, 71851 matched, 35755 missed
[processed in 52.87 sec]Missed line(s): too many to print. Use –print-all-missed to print all 35755 lines从fail2ban-regex 测试结果来看
正则表达式匹配情况 正则表达式 ^.[(W|E|I|D) .] 4\d{2} (GET|POST) . (HOST).*$ 在日志文件中找到了 71851 次匹配。这意味着该正则表达式成功地匹配到了日志中很多行这些行可能表示了Jupyter Notebook的访问尝试可能是失败的登录尝试或其他相关事件。 忽略规则匹配情况 没有设置忽略规则Ignoreregex因此没有日志行被忽略。 日期模板匹配情况 测试结果没有直接提到日期模板的匹配情况但通常这不是主要关注点因为 fail2ban-regex 主要用于测试正则表达式是否能正确匹配到IP地址和其他关键信息。 未匹配的行 有 35755 行日志没有被正则表达式匹配到。这可能是因为这些行的格式与您的正则表达式不匹配或者它们不包含您想要捕获的信息如IP地址。如果您想要查看所有未匹配的行可以使用 –print-all-missed 选项来运行 fail2ban-regex 命令。 性能 处理 107606 行日志花费了 52.87 秒。这对于一次性测试来说可能是可以接受的但如果这是在生产环境中实时运行的您可能需要考虑优化正则表达式或日志处理流程。
总的来说我们的正则表达式已经成功匹配到了大量日志行达到了预期。
五、重启 Fail2Ban
最后重启 fail2ban 以应用新的配置
systemctl restart fail2ban六、验证配置生效
通过 fail2ban-client status命令检查
fail2ban-client status
Status |- Number of jail: 3
- Jail list: jupyter-notebook, mysqld-auth, sshd可以看到此时有三条 Jail 生效其中 jupyter-notebook是我们自定义的配置。要想进一步了解通过 fail2ban-client status jail命令获得详细信息。 fail2ban-client status jupyter-notebook Status for the jail: jupyter-notebook |- Filter | |- Currently failed: 1 | |- Total failed: 2 | - File list: /path/to/your/jupyter.log
- Actions|- Currently banned: 0|- Total banned: 0- Banned IP list: 通过命令输出结果来看 当前失败次数1。这意味着在最近的日志检查中有1次尝试可能是登录尝试被判定为失败并触发了fail2ban的机制。总失败次数2。自jupyter-notebook监狱启动以来总共有2次尝试被判定为失败。 因为失败次数maxretry尚未达到触发禁止条件3次所以暂时没有IP地址被禁止。可见我们的配置已然生效了。 七、一些建议 在互联网环境中每分钟都有成千上万的类似攻击在不断上演。这些攻击不仅威胁着系统的安全还可能导致服务中断、数据泄露等严重后果。因此必须采取有效措施来约束和防范此类攻击。为了应对这一挑战建议采取以下措施 加强日志监控与分析通过实时监控和分析服务器日志及时发现并响应可疑请求和攻击尝试。这有助于快速定位问题并采取相应的防御措施。更新与加固系统定期更新系统和应用程序以修复已知的安全漏洞。同时加固系统配置提高系统的安全性。部署安全工具利用fail2ban等安全工具根据日志中的攻击模式自动阻止恶意IP地址的访问。这有助于减少攻击对服务器的影响。限制访问权限严格控制对敏感文件和资源的访问权限确保只有授权用户才能访问。加强用户教育与培训提高用户对网络安全的认识和意识教育用户如何识别和防范网络攻击。 通过综合运用这些措施可以有效地约束和防范来自互联网的攻击保护服务器的安全和稳定运行。同时也有助于减轻服务器的压力和资源损耗提高系统的整体性能。 参见 利用 fail2ban 保护 SSH 服务器_fail2ban ssh-CSDN博客 ↩︎ /etc/fail2ban/filter.dCentos8位置 ↩︎
- 上一篇: 毕节网站网站建设网站死链接查询
- 下一篇: 毕业设计 网站开发网络推广服务协议
相关文章
-
毕节网站网站建设网站死链接查询
毕节网站网站建设网站死链接查询
- 技术栈
- 2026年03月21日
-
毕节市建设网站wordpress详情页选择模板
毕节市建设网站wordpress详情页选择模板
- 技术栈
- 2026年03月21日
-
必应搜索引擎网站南阳seo网站建设费用
必应搜索引擎网站南阳seo网站建设费用
- 技术栈
- 2026年03月21日
-
毕业设计 网站开发网络推广服务协议
毕业设计 网站开发网络推广服务协议
- 技术栈
- 2026年03月21日
-
毕业设计查资料的网站店铺推广是如何收费的
毕业设计查资料的网站店铺推广是如何收费的
- 技术栈
- 2026年03月21日
-
毕业设计代做网站价格如何经营自己的网站
毕业设计代做网站价格如何经营自己的网站
- 技术栈
- 2026年03月21日






