首页 文章 精选 留言 我的

精选列表

搜索[MIE防护],共4698篇文章
优秀的个人博客,低调大师

Linux服务器安全配置加固防护方法

本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全、mysql数据库安全、web服务器安全、木马查杀和防范等,很好很强大很安全。(如果需要深入的安全部署建议找专业做安全的国内公司如:Sinesafe,绿盟,启明星辰等等都是比较不错的专业做网站安全的公司) PHP安全配置 1. 确保运行php的用户为一般用户,如www 2. php.ini参数设置 disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,phpinfo #禁用的函数 expose_php = off #避免暴露PHP信息 display_errors = off #关闭错误信息提示 register_globals = off #关闭全局变量 enable_dl = off #不允许调用dl allow_url_include = off #避免远程调用文件 session.cookie_httponly = 1 #http only开启 upload_tmp_dir = /tmp#明确定义upload目录 open_basedir = ./:/tmp:/home/wwwroot/#限制用户访问的目录 open_basedir参数详解 open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号"."来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名。 举例来说: 若"open_basedir = /home/wwwroot", 那么目录"/home/wwwroot"和"/home/wwwroot1"都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。 注意: 从网上获取的资料来看,open_basedir会对php操作io的性能产生很大的影响。研究资料表明,配置了php_basedir的脚本io执行速度会比没有配置的慢10倍甚至更多,请大家自己衡量 open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。 MySQL安全设置 1. MySQL版本的选择 在正式生产环境中,禁止使用4.1系列的MySQL数据库。至少需要使用5.1.39或以上版本。 2. 网络和端口的配置 在数据库只需供本机使用的情况下,使用–skip-networking参数禁止监听网络 。 3. 确保运行MySQL的用户为一般用户,如mysql,注意存放数据目录权限为mysql vi/etc/my.cnf user = mysql 4. 开启mysql二进制日志,在误删除数据的情况下,可以通过二进制日志恢复到某个时间点 vi/etc/my.cnf log_bin = mysql-bin expire_logs_days = 7 5. 认证和授权 (1) 禁止root账号从网络访问数据库,root账号只允许来自本地主机的登陆。 mysql>grantallprivilegeson*.* toroot @localhost identified by'password'withgrantoption; mysql>flush priveleges; (2) 删除匿名账号和空口令账号 mysql>USE mysql; mysql>deletefromuserwhereUser=; mysql>deletefromuserwherePassword=; mysql>deletefromdb whereUser=; web服务器安全 确保运行Nginx或者Apache的用户为一般用户,如www,注意存放数据目录权限为www 防止sql注入 if( $query_string ~* ".*[\;'\<\>].*"){ return404; } 关闭存放数据上传等目录的PHP解析 location ~* ^/(attachments|data)/.*\.(php|php5)${ deny all; } 针对Apache:关闭图片目录/上传等目录的PHP解析 order allow,deny Deny from all 木马查杀和防范 php木马快速查找命令 grep-r --include=*.php '[^a-z]eval($_POST'/home/wwwroot/ grep-r --include=*.php 'file_put_contents(.*$_POST\[.*\]);'/home/wwwroot/ 利用find mtime查找最近两天或者发现木马的这几天,有哪些PHP文件被修改 find-mtime -2 -typef -name \*.php 防范: 1. 做好之前的安全措施,比如禁用相关PHP函数等 2. 改变目录和文件属性 find-typef -name \*.php -execchomd 644 {} \; find-typed -execchmod755 {} \; chown-R www.www /home/wwwroot/www.waitalone.cn 3. 为防止跨站感染,需要做虚拟主机目录隔离 (1) nginx的简单实现方法 利用nginx跑多个虚拟主机,习惯的php.ini的open_basedir配置: open_basedir = ./:tmp:/home/wwwroot/ 注:/home/wwwroot/是放置所有虚拟主机的web路径 黑客可以利用任何一个站点的webshell进入到/home/wwwroot/目录下的任何地方,这样对各个虚拟主机的危害就很大 例如: /data/www/wwwroot目录下有2个虚拟主机 修改php.ini open_basedir = ./:/tmp:/home/wwwroot/www.sinesafe.com:/home/wwwroot/back.sinesafe.com 这样用户上传webshell就无法跨目录访问了。 (2) Apache的实现方法,控制跨目录访问 在虚拟机主机配置文件中加入 php_admin_value open_basedir "/tmp:/home/wwwroot/www.sinesafe.com"

优秀的个人博客,低调大师

谷歌公布 Chrome 代理式功能安全防护方案

谷歌近日披露了在 Chrome 浏览器中部署“代理式”(Agentic)功能前,将如何通过多重技术手段为用户建立安全护栏,以应对自动代办购票、网购等新能力背后潜在的数据与资金风险。在 9 月预览过相关功能后,谷歌表示,这些基于 Gemini 模型的代理式浏览能力将在未来数月内向用户逐步开放。 据介绍,谷歌在 Chrome 中引入了多种“观察者模型”,对代理执行的操作进行实时审查与约束,其中一项核心机制是利用 Gemini 构建“用户对齐审查器”(User Alignment Critic),专门检查规划模型为某项任务生成的行动序列是否真正符合用户意图。如果审查器认为某些步骤偏离用户目标,它会要求规划模型重新调整策略,而这一过程仅依赖操作元数据而非完整网页内容,以降低隐私暴露面。 在访问来源控制方面,谷歌引入了“Agent Origin Sets”机制,对代理可读取与可读写的网站来源进行严格划分,避免模型在不可信站点或不相关页面元素上执行操作。例如,在电商网站上,商品列表被视为与任务相关的可读内容,而页面中的横幅广告等则会被排除在可读取范围之外,代理也只能在被允许的特定 iframe 区域内点击或输入,从而减少跨源数据泄露的风险。 谷歌同时使用另一套观察模型对代理的页面跳转行为进行监控,以拦截由模型生成但可能存在风险的 URL,防止自动化流程误入恶意网站。在处理涉及银行、医疗等敏感信息的网站时,Chrome 会在代理尝试访问前弹窗询问用户是否放行,并在需要使用密码管理器登录时征求用户授权,整个过程中代理模型本身不会直接接触密码数据。 在执行高敏感操作方面,谷歌强调最终决定权将交由用户,包括在线支付、提交信息或发送消息等关键步骤,代理都必须事先获得明确确认。谷歌还部署了提示注入(prompt injection)分类器,用于识别并阻断恶意指令,并通过研究人员设计的攻击样本对这些代理功能持续进行安全测试。 除谷歌之外,其他浏览器厂商同样在强化 AI 代理安全能力。近日,Perplexity 发布了一款新的开源内容检测模型,用于在浏览场景下识别并防御针对代理的提示注入攻击,显示出行业在自动化浏览时代对安全问题的高度敏感与投入。

优秀的个人博客,低调大师

基于JIT技术的动态协议识别和应用防护

NGINX 向云原生演进,All inOpenNJet 1. 背景需求 由于提供了动态TCP/UDP proxy和proxy_protocol2的设置能力,NJet在非HTTP的私有TCP协议方面得到了较多的应用。常用的场景是NJet作为标准的TCP4层proxy,把请求转发到后端的应用服务,类似如下架构: 当然市场上也有n多的4层代理,社区选择NJet,除了通过PROXY_PROTOCOL2可以灵活的设置属性外,还因为: NJet提供了灵活的主动健康检查,可以在后端应用服务故障时自动切换 NJet CoPilot自带HA能力,无需额外配置可以自动构建HA集群 在实际使用中,有客户报告其端口常常会受到扫描的攻击,比如该端口是一个提供dubbo应用的服务,但有太多的时间收到非正常dubbo client发过来的连接请求。因此客户报告常常是应用服务器收到太多的连接请求导致服务关闭。 在目前阶段,采用的一个临时性的方案是限流(NJet可以配置并发的连接数),限制最大连接数。但这种情况无法区分非法和合法的client,会造成误伤,影响到正常服务。 所以NJet开发了协议识别功能,该功能目的是在连接建立阶段,识别出非法的连接,并立即关闭,避免连接请求发送到后端,从而对后端服务进行了保护。 如同Nginx, NJet可以在client到NJet建立连接,并在预读一段数据、分析校验后,再同后端的服务器建立连接。因此可以通过分析发过来的数据是否符合特定的私有协议,决定是否关闭连接。 2. 实现设计 为了应对企业千差万别的私有协议,NJet必须能够对协议可配置,由现场运维人员编辑应用协议的分析报文。一种直观的思维就是利用脚本来编写协议解析,比如openresty提供的LUA,就提供了类似的能力。但出于性能考虑,NJet决定引入JIT技术,把脚本在NJet的启动阶段编译成标准的c函数,并动态加载进NJet中,从而即实现了灵活性,又保证了优越于LUA等脚本语言的高性能。 此外,为了保证垃圾连接对NJet所在机器系统资源的影响,NJet在管理连接时,引入了快速关闭,绕过了TCP连接关闭的4次挥手机制,直接释放了系统资源。 2.1 指令设计 NJet 为该功能增加了两个配置指令,sniffer控制是否进行协议分析,sniffer_filter_file指明使用的具体分析脚本。 Syntax: sniffer on/off; 开关ddos分析功能:on 打开;off 关闭 Default: off Context: stream server Syntax: sniffer_filter_file [ c 文件路径文件名]; 制定执行过滤文件的路径,以及文件名。 例如: sniffer_filter_file “conf/sniffer.c”; Default: — Context: stream server Syntax: sniffer on/off; 开关ddos分析功能:on 打开;off 关闭 Default: off Context: stream server Syntax: sniffer_filter_file [ c 文件路径文件名]; 制定执行过滤文件的路径,以及文件名。 例如: sniffer_filter_file “conf/sniffer.c”; Default: — Context: stream server 2.2 脚本格式 sniffer.c文件是遵循C99标准格式的c语言代码块,必须以return结束,可以返回3个值: NJT_ERROR:协议解析失败,是不合法的数据,NJet会关闭client连接 NJT_OK: NJet会转发该连接到后端 NJT_AGAIN: 数据长度不够,NJet会等待更多的数据 其骨架代码如下: //变量定义 //字节流比较,做协议分析 return NJT_OK ; //或NJT_AGAIN,NJT_ERROR 2.2.1 脚本中可使用的预定义变量 以下两个变量定义了目前client发送到的初始报文数据 bytes_len: 当前收到的数据长度。 bytes 当前收到的数据buffer 指针 2.2.2 脚本中可使用的函数 出于安全考虑,脚本中可以使用的函数是有限的,具体为 void sniffer_log(int level, const char *fmt, …) 写日志数据。 level 日志等级: NJT_LOG_DEBUG debug 日志。 NJT_LOG_INFO info 日志。 NJT_LOG_ERR 错误日志。 int sniffer_get_hex_cmp(int pos, char* src,int len) 比对数据是否一致。 pos: 起始位置。 src : 对比的源数据buffer。 len :对比的数据长度 。 返回值: 比对失败:NJT_ERROR 比对成功:NJT_OK 数据长度不够:NJT_AGAIN 继续等待数据。 GET_BIT(x, bit) 获取某字节对应 bit位的值,该实现是一个宏定义, x: 为char ,或int32, short, long, int64 bit: 可选值有x的类型决定 返回值: 0 或 1 int sniffer_get_data(int pos,char* buffer,int buffer_len); 从预读的bytes中copy最大buffer_len的内容到buffer中 pos :从bytes[pos]起copy buffer: 需预先分配内存 buffer_len: 接收的长度。 返回值:实际copy的长度 int sniffer_get_hex_data(int pos,char* buffer,int buffer_len) 从预读的bytes中copy最大buffer_len的内容到buffer中,并把一个字节copy成两个字节,参数同sniffer_get_data 2.2.3样例 下列代码是一个完整的验证client发送的请求是MQTT连接报文的例子。 char buffer3[100] = {0x10,0x1f,0x00,0x04,0x4d,0x51,0x54,0x54,0x05,0x00,0x00,0x3c,0x03,0x21,0x00,0x14,0x00,0x0f,0x6e,0x6f,0x64,0x65,0x2d,0x75,0x30,0x31,0x5f,0x77,0x5f,0x38,0x34,0x31,0x35}; //参考https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901006,可以定义出 //需校验的协议头,buffer3 char name[128] = {0}; int ret = NJT_DECLINED; char byte; if (bytes_len < 5) { sniffer_log(NJT_LOG_DEBUG,"sniffer protocol agin=%d",bytes_len); return NJT_AGAIN; //数据不够,等待数据。 } sniffer_get_data(0,(char *)&byte,1); int Packet_type = GET_BIT(byte,4); //取第1个字节从左数第5位 if (Packet_type != 1) { //判断是否为1,不是1则返回error return NJT_ERROR; } char length_byte = 0; sniffer_get_data(1,(char *)&byte,1); int Packet_bit = GET_BIT(byte,7); //取第2个字节从左数第8位 if (Packet_bit == 0) { //判断是否为0,为0根据mqtt协议,packet_length字段长度为1 length_byte = 1; } int len = byte; //mqtt协议中,如果packet_length为1,则第二个字节为mqtt包长度 short name_len = 0; char name_len_buffer[100] = {0}; sniffer_get_data(2,(char *)&name_len,2); //取第3,4个字节 name_len = ntohs(name_len); //获取协议名长度 sniffer_get_data(2+sizeof(name_len),(char *)&name,name_len); //获取协议名 sniffer_get_data(2+sizeof(name_len)+name_len,(char *)&byte,1); //获取版本号 int version=byte; sniffer_log(NJT_LOG_DEBUG,"sniffer protocol name=%s,version=%d,len=%d,name_len=%d",name,version,len,name_len); return NJT_OK; 3. 测试 下面是一个完整的验证client发送的请求是必须携带PROXY_PROTOCOL,否则被拒绝的例子。 3.1配置文件 如下例,njet作为4层proxy,监听2223,并转发到后端的2224应用服务,打开sniff开关及sniff文件 具体 sniffer.c 文件: char v_2[100] = {0x0D,0x0A,0x0D,0x0A,0x00,0x0D,0x0A,0x51,0x55,0x49,0x54,0x0A}; char v_1[100] = {0x50,0x52,0x4f,0x58,0x59}; int ret = NJT_DECLINED; if (bytes_len < 5) { sniffer_log(NJT_LOG_DEBUG,"sniffer protocol agin=%d",bytes_len); return NJT_AGAIN; //数据不够,等待数据。 } ret = sniffer_get_hex_cmp(0,v_1,5); if (ret == NJT_OK) { sniffer_log(NJT_LOG_DEBUG,"sniffer protocol v1"); return ret; // 识别成功 protocol v1 } ret = sniffer_get_hex_cmp(0,v_2,12); if (ret == NJT_OK) { sniffer_log(NJT_LOG_DEBUG,"sniffer protocol v2"); return ret; // 识别成功 protocol v2 } else if (ret == NJT_AGAIN) { sniffer_log(NJT_LOG_DEBUG,"sniffer protocol agin=%d",bytes_len); return NJT_AGAIN; //数据不够,等待数据。 } return NJT_ERROR; //默认拦截。 3.1.1 用例一:protocol v1 版本 请求2221 端口的 protocol v1 版本。 [root@k8s-139 proxy2]# curl 127.0.0.1:2221/test 成功输出: [root@k8s-139 proxy2]# curl 127.0.0.1:2221/test src:127.0.0.1:56254,dst:127.0.0.1:2221,tlv01:,tlv02: 日志输出: 2024/05/09 18:40:33 [debug] 32699#0: sniffer protocol v1 3.1.2 用例二:protocol v2 版本 请求2222 端口的 protocol v2 版本。 [root@k8s-139 proxy2]# curl 127.0.0.1:2222/test 成功输出: [root@k8s-139 tcc-0.9.26]# curl 127.0.0.1:2222/test src:127.0.0.1:39046,dst:127.0.0.1:2222,tlv01:,tlv02: 日志输出: 2024/05/09 18:42:02 [debug] 32699#0: sniffer protocol v2 3.1.3 用例三:测试快速关闭 需要在另外一台机器上,telnet该端口,模拟非法访问 telnet 192.168.40.139 2223 端口。 [root@CDN156 ~]# telnet 192.168.40.139 2223 Trying 192.168.40.139... Connected to 192.168.40.139. Escape character is '^]'. [root@CDN156 ~]# netstat -an |grep 2223 tcp 0 0 192.168.40.156:58192 192.168.40.139:2223 ESTABLISHED 当在telnet中输入随机字符时,会被NJet拦截 日志输出: 2024/05/09 18:58:39 [debug] 4688#0: sniffer protocol fail=54 查看网络连接:没有ESTABLISHED状态。表明快速关闭,成功。 [root@k8s-139 tcc-0.9.26]# netstat -an |grep 2223 tcp 0 0 0.0.0.0:2223 0.0.0.0:* LISTEN 4. 其它说明 只支持tcp的协议。 快速端口关闭及资源释放请参考https://oroboro.com/dealing-with-network-port-abuse-in-sockets-in-c/ 感谢TCC提供的JIT实现及C语言脚本支持 Just In Time(JIT):是一种把脚本由解释执行预先编译成机器码,从而加速执行的技术。NJet使用的是Pre-JIT,即把所有的脚本代码都预先编译成类似so,从而被业务当作普通的库函数执行 NJ动态协议识别需要NJet3.0及以上 NJet应用引擎通过内核重构实现了独特的运行时动态配置加载能力,是新一代高性能 Web 应用引擎。NJet 拥有高性能数据面处理能力,将集群、高可用、主动健康检查、声明式 API 等多种辅助功能,通过 NJet 独特的副驾驶 CoPilot 服务框架调度,从而方便功能扩展,隔离管理 / 控制功能对数据面的影响,NJet 应用引擎性能超过 CNCF 推荐 Envoy 应用引擎的三倍。邮件组官网

优秀的个人博客,低调大师

数据安全当如何防护?

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 企业上云已经不是什么新鲜事,而随着业务需求的增加,越来越多的企业选择将业务在多个云平台进行部署使用。根据《 Flexera 2020云状况报告》显示,多云环境正在成为企业的标准,93%的企业正在使用这种方式。在多云战略中使用的公共云服务越来越受欢迎,Gartner预测2020年的收入将超过2660亿美元。 Gartner 研究部副总裁Sid Nag去年在一份正式声明中表示:“采用的下一代解决方案几乎都是强化云的解决方案,这意味着它们在基于云平台的优势来提供数字业务功能。” 每个下一代解决方案都会随之带来下一代的安全挑战。但是,大家对于云的采用并不都是以安全为中心。多云环境需要多个公共云服务,因此对于安全的需求也就更为必要。 80%的公司使用公共云存储敏感数据,但是这些企业中有52%曾遭遇过数据泄露。而多云的方式的确有很多优势,譬如在效率和成本节约层面,但安全挑战依旧存在。因此,用户需要了解风险,才能从多云战略中获得最大收益。 接下来给大家介绍下用户在多云环境中可能面临的6大安全挑战,以及改善安全优秀实践的相关技巧。 1. 依赖供应商来处理安全性 云供应商的确有相关安全措施来保护基础架构的安全。很多组织普遍认为供应商提供的安全会覆盖到用户的数据和应用程序。安全性是供应商和客户端共同的责任,而PaaS或者IaaS的客户端承担的责任更大。用户应准确了解供应商的安全都保护了哪些内容,并与他们进行合作,寻求正确的安全工具来保护数据和应用程序。 2. 遵守合规规定 大多数企业都需要遵守有关数据的合规要求、行业标准等。而只要敏感数据存储在公共云中,就有可能无法完成合规要求。用户可以将敏感数据放在最靠近内部控制的服务器上,以满足合规性。在多云环境中,合规性工作应保持一致。 3. 访问控制 有太多的员工可以访问与自身工作无关的云数据和应用程序。这为云的滥用和网络威胁提供了便利条件。信息技术(IT)团队应该实施更严格的管控,并使用身份和访问管理(IAM)工具来监控权限。 4. 可见性 云服务几乎具有无限的可扩展性,多云环境可以包括几十个平台。但是,你能看到整个环境吗?如果你的网络监视程序没有高水平的可视化,那就相当于为那些威胁者打开了大门。用户应该考虑部署工具,例如安全编排、自动化和响应(SOAR),来改进事件响应或安全信息和事件管理(SIEM)。这将有助于在整个环境中收集实时信息,包括日志管理和安全事件通知。 5. 漏洞管理 应用程序和软件存在漏洞,想要发现这些漏洞就需要进行频繁测试。通过威胁情报软件,能够定期的进行渗透测试和软件扫描,从而改进了漏洞管理。用户应当将漏洞管理看作是锁定门户,用以防止不良参与者轻松访问您的环境。 6. 历史数据保护 目前许多云安全工具关注的是实时数据的使用,而不包括深度存储在档案中的历史数据。历史数据可能不符合新的合规性规则或标签不正确,从而使其更容易受到攻击。历史数据的最佳安全实践包括改进的数据分类,以检测不同级别的敏感性,并创建数据丢失预防(DLP)策略,以便在出现数据泄露时制定行动计划。确保DLP工具是可定制的,因为标准模板可能不适合您的需要。 多云环境为安全决策者带来了独特的挑战。因此,用户必须利用优秀的安全措施来保护数据免受网络罪犯的攻击! 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/live 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-07-16本文作者:高博本文来自:“51CTO”,了解相关信息可以关注“51CTO”

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册