首页 文章 精选 留言 我的

精选列表

搜索[玩转OpenClaw云端创意实践],共10003篇文章
优秀的个人博客,低调大师

玩转云端丨今天,你的服务器被“挖矿”了吗?

本文作者:晨光 运维工程师 web服务应用是最为常见的应用之一,主要是通过对公网放行服务器的端口供客户访问来提供服务。这类服务对数据安全、访问控制的要求会比较高。但最为核心的还是后端服务器主机层,当后端主机不能正常工作时,前端展示的web服务一定是收到牵连的,如何维护后端服务器正常运行就显得尤为重要了。 这里提到后端主机的正常运行,就不得不提“黑客”这个词了,让互联网小白一筹莫展的无形杀手。他们通过各种软件的漏洞,网络等方面无孔不入地入侵安全度较低的服务器,常见的手段有sql注入,挖矿,xss等。 挖矿丨小科普 挖矿:即比特币挖矿,是一种利用电脑硬件计算出比特币的位置并获取的过程。 被挖矿的现象:cpu资源被疯狂利用。 被挖矿的方式:利用软件漏洞,如Redis未授权访问缺陷,voip环境等漏洞登录服务器,定时下载脚本文件并运行,消耗系统资源。 这里分享一个被“挖矿”事件处理的案例。 背景 有同一批服务的主机接连的cpu不断跑高至打满,并持续。导致对外的应用服务无法正常被访问。通过对服务器的资源使用情况查看发现,有一个陌生的进程在疯狂占用cpu资源。 处理过程 首先,我们发现登录服务器非常卡,网站加载速度特别慢,作为优秀的运维工程师需要解决一下这个网站速度问题。这时最直观的查看方式就是top一下系统资源。(如下图) 4核的CPU被ksoftirqds进程占用了389%,这个进程看着也非常的不寻常,一个优秀的运维工程师断定,肯定是“被挖矿”了。 查看该进程的运行状态,可以看得出每隔10min定时执行shell,大量产生软中断进程,此进程与网络大量通信,进行上下文切换,导致占满CPU: 尝试使用kill命令无法正常的结束这个进程,再回到top的显示,发现jenkins还运行这个一进程watchdog。根据我多年的经验,看着也不像是一个正常的进程。使用lsof查看下这个进程打开的文件: 原来kill不掉,是因为有植入进程watchdog所致,而watchdog进程与外界存在大量通信。 同时一般都会被设定一个定时任务,再查看jenkins这个用户下的crontab: 果然存在这样一个定时任务的去下载脚本并执行了。 这时,先删除这个定时任务: 然后清除watchdog和ksoftirqds的进程文件: 最后kill掉watchdog和ksoftirqds的进程,并修改/var/spool/cron/的权限为000,这时再使用top查看服务器的资源情况。已经恢复到了正常的状态: 到这里,我们已经完成了“被挖矿”后的处理,希望各位优秀的运维工程师可以处变不惊运筹帷幄保障自己的服务器不被挖矿!(为自己的优秀的洞察力点个赞) 总结|处理挖矿的流程 1、使用top命令查看异常占用cpu资源的进程; 2、使用ps -ef|grep pid或lsof -p pid或cd /proc/pid查看进程打开的文件; 3、使用for u in cat /etc/passwd | cut -d":" -f1;do crontab -l-u $u;done 查看所有的定时任务,定位异常crontab的用户; 4、进入异常crontab的用户删除定时任务; 5、删除第2步中查到的异常文件; 6、Kill 第1步中异常的进程; 7、修改/var/spool/cron的权限为000,进入再次写入定时任务。 隐患分析 导致服务器主机资源被攻击的原因应从架构层,主机层,应用层分析,整个网站的架构非常的重要,做到高可用、安全、恶意攻击拦截才会相对良好的保障应用的安全。主机的安全策略,软件的部署方式,目录的权限等方面是保障主机与外界通信的安全墙。应用程序的结构,语句的合理性以及安全性是直接对外的窗口。开发良好的代码才不容易被sql注入,收到攻击。 主机层 1、防火墙安全措施实施不到位; 2、端口采用默认; 3、公网提供服务,未做访问、流量限制 应用层 1、应用环境单点,安全系数低 2、应用版本信息未隐藏,容易被找到漏洞 3、域名解析A记录到主机公网,直接暴露后端服务器主机信息 后期预防 挖矿程序一般都是通过软件的漏洞进入到服务器,执行一些脚本文件占用服务器资源。规范使用软件。做好网络安全隔离,可以大大减少这类事件的发生。 1、redis,数据库等软件不对外网暴露端口访问 2、对外端口修改为非常规端口 3、网络访问做安全产品过滤或限制 4、及时更新软件,保持最新稳定的漏洞修复 看到这里你学会了吗?

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

Android开发实践玩转EditText控件

Android的EditText控件是一个非常常用的控件,用得最多的地方就是做登录、注册页面了,它能为用户提供一个直观便捷的输入框。本文简单总结下EditText控件中比较常用的一些设置,并为每一种设置提供两种方式的实现,一种是在布局文件中实现,另一种是在程序中通过代码动态的设置。 1. 如何添加一个方框 在Android的Hololight主题下,EditText控件默认是只有一条底部的蓝色横线的,怎么给你的EditText添加一个方框呢? 【布局】: 设置 android:background 属性,给它一个长方形的白***片,或者自定义一个长方形的drawable文件即可。 例如: 1 android:background= "@drawable/shape_bg" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setBackgroundResource(R.drawable.shape_bg); 2. 如何设置字体大小、颜色、加粗 【布局】: 布局中的属性依次为 android:textSize,android:textColor,android:textStyle属性 例如: 1 2 3 android:padding="15sp" android:textSize="15sp" android:textStyle="bold" 【代码】: 1 2 3 4 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setTextSize( 15 ); mEditText.setTextColor(Color.BLACK); mEditText.setTypeface(Typeface.DEFAULT_BOLD); 3. 如何设置以密码的形式显示 【布局】: 设置 android:password 属性为 true 例如: 1 android:password="true" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 4. 如何禁止用户输入回车换行 【布局】: 设置 android:singleLine 属性为 true 例如: 1 android:singleLine="true" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setSingleLine(); 5. 如何设置没有输入时的提示信息 【布局】: 设置 android:hint 属性的值 例如: 1 android:hint="inputyourname" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setHint( "Inputyourname" ); 6. 如何在输入框的行首空几个字符 【布局】: 设置 android:paddingLeft 属性即可 例如: 1 android:paddingLeft="15sp" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setPadding( 15 , 0 , 0 , 0 ); 7. 如何限制输入的长度 【布局】: 设置 android:maxLength 属性的值即可 例如: 1 android:maxLength="10" 【代码】: 1 2 3 4 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); InputFilter[]filters= new InputFilter[ 1 ]; filters[ 0 ]= new InputFilter.LengthFilter( 10 ); mEditText.setFilters(filters); 8. 如何限制输入类型为:数字,电话号码,日期,时间 【布局】: 设置 android:inputType 属性可以指定 textPassword, phone, number, date,time 等类型 例如: 1 android:inputType="text" 【代码】: 1 2 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setInputType(InputType.TYPE_CLASS_TEXT); //InputType有很多种类型可以选择 9. 如何限制只能输入指定的字符 【布局】: 设置 android:digits 属性即可 例如: 1 android:digits="abcdef" 【代码】: 有两种方法可以实现: 方法一: 1 2 3 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); Stringdigits= "abcdef" ; mEditText.setKeyListener(DigitsKeyListener.getInstance(digits)); 方法二: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); InputFilter[]filters= new InputFilter[ 1 ]; filters[ 0 ]= new MyInputFilter( "abcdef" ); mEditText.setFilters(filters); public class MyInputFilter extends LoginFilter.UsernameFilterGeneric{ private StringmAllowedDigits; public PopInputFilter(Stringdigits){ mAllowedDigits=digits; } @Override public boolean isAllowed( char c){ if (mAllowedDigits.indexOf(c)!=- 1 ){ return true ; } return false ; } } 10. 让密码的输入字体大小与明文的字体一致 当你设置了android:password = "true" 属性后,你会发现,它的字体大小会跟没有设置password属性的EditText的大小不一致,因此,如果期望他们表现一致的话,可以通过代码如下设置: 1 2 3 EditTextmEditText=(EditText)findViewById(R.id.MyEditText); mEditText.setTypeface(Typeface.DEFAULT); mEditText.setTransformationMethod( new PasswordTransformationMethod()); 本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1333414,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Spring

Spring

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册