一点一滴,编程人生

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  69 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks

2015年12月15日 #

今天为了这个问题了忙乎了一整天,特此记录下,希望对有遇到同样问题的同学有帮助。事情的经过是这样的,原先使用atomikos一直把数据源用jndi配置到tomcat的context.xml下,一直这么用没有出现问题,配置如下
    <Resource name="jdbc/cms" auth="Container"
        type
="com.atomikos.jdbc.AtomikosDataSourceBean" factory="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory"
        uniqueResourceName
="jdbc/cms" xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"
        xaProperties.URL
="xxxx"
        xaProperties.user
="xxxx" xaProperties.password="xxxx"
        xaProperties.pinGlobalTxToPhysicalConnection
="true" maxLifetime="60" poolSize="4" />

最近项目要迁移到maven下,所以把context.xml的数据源配置挪到了spring.xml下,配置如下
    <bean id="myDataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
       
<property name="uniqueResourceName" value="masterDB" />
       
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>  <!-- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]  -->  
       
<property name="poolSize" value="0" /> 
       
<property name="minPoolSize" value="0"/>    
       
<property name="maxPoolSize" value="9"/>    
       
<property name="borrowConnectionTimeout" value="60"/>    
       
<property name="reapTimeout" value="20"/>    
       
<property name="maxIdleTime" value="60"/>    
       
<property name="maintenanceInterval" value="60"/>    
       
<property name="loginTimeout" value="60"/>
       
<property name="xaProperties">  
            
<props>
                
<prop key="url">xxxx</prop>  
                
<prop key="user">xxxx</prop>
                
<prop key="password">xxxx</prop>
            
</props>
        
</property>  
    
</bean>
因为上面这个配置我是照搬网上的,所以觉得没有问题,可是项目启动后,用此数据源提交事务时确报以下错误:

Raised -5: invalid arguments were given for the XA operation 或 XAER_INVAL: Invalid arguments (or unsupported command)

一开始我以为maven配置的mysql-connector-java驱动版本不对,或是atomikos版本不对,可是不管如何换版本都不行,就快要疯了的时候,我看到了原先jndi方式中有这么一行代码
xaProperties.pinGlobalTxToPhysicalConnection="true"
就因为缺少上面这句话导致了问题,上网查资料,据说是mysql xa bug,有兴趣的可以看如下连接,最后配置如下:
       <property name="xaProperties">  
            
<props>
                
<prop key="pinGlobalTxToPhysicalConnection">true</prop>  <!-- mysql必须配置此参数,要不然无法提交事务 -->
                
<prop key="url">xxxx</prop>  
                
<prop key="user">xxx</prop>
                
<prop key="password">xxxx</prop>
            
</props>
        
</property> 



posted @ 2017-06-28 19:32 writegull 阅读(2376) | 评论 (0)编辑 收藏

事情描述:
本人在阿里云上创建了一个linux服务器,跑了一个自己的测试web项目。搭建了redis。想方便测试用,就没有对redis进行任何安全防护并暴露在了公网上。期间阿里云发现了此问题,还发短信提醒我,由于最近在公司一直加班也没有时间理会,没想到就在今天真的被黑了,事后心想多亏是个测试服务器,如果是正式环境,也真危险,这个黑客也没有停下脚步,通过redis强大的能力在/root/.ssh目录下面上传了公钥,彻底攻破了服务器,免密码登录服务器,一般黑客到这步也就看看有没有兴趣的数据,这个黑客一看这就是个没有价值的测试服务器,所以心一横,在我这上面装了个DDOS攻击软件,把我的机器当起肉鸡。

1.这就是黑完后留下的公钥/私钥,删除authorized_keys,id_rsa, id_rsa.pub这三个文件吧,除非还想让他继续黑下去。。。。


2.通过redis的key *命令可以看到有个叫crackit的key。这就是黑客在入侵后留下来的,原先set的值是公钥,入侵成功之后就改成这个了,把这个key也删除掉吧。


3.修改redis默认端口吧,不让黑客利用6379端口。在redis安装目录中,修改redis.config文件。修改完了别忘了重启redis服务,

# redis-server /etc/redis/redis.conf 开启

# redis-cli shutdown 关闭



4.重启后查看redis是否运行
ps -x | grep redis
5.通过指定端口访问redis。
redis-cli -p 6666

6.给redis设置密码或者干脆设置成只能内网访问

7.通过top命令发现了几个可疑的程序



8.minerd这个程序是个用来挖掘莱特币的,这个黑客看来干了不少坏事啊。。我们用命令 ps -ef|grep minerd 查找一下这个进程,杀掉这个进程kill -9 18267,并且去/tmp目录删除minerd目录


9.黑客在tmp目录留下了一个叫1.sh的脚本,是用来下载挖掘莱特币程序的。也把它kill掉吧。以下是脚本内容。


10.通过cat /etc/passwd命令可以看到有一个叫作syss的非法用户,权限还很高,跟root一样,删掉他吧,这是黑客入侵后方便进入的。使用命令userdel -f syss 强制删除一个用户,哪怕他正在登录。


11.去/mnt目录上,可以看到黑客挂载了很多程序,删除他们吧。


12.通过nethogs软件可以按进程实时统计网络带宽利用率,这个用来看是否存在DDOS攻击最好不过了。

13.暂时解决对外DDOS攻击,最快的办法就是用防火墙,这个阿里云提供的脚本帮了大忙。直接上传到服务器上,运行一下世界就清静了。下载地址:
https://help.aliyun.com/knowledge_detail/5973920.html?spm=5176.7618386.5.1.H8H33f

 
posted @ 2015-12-15 01:13 writegull 阅读(4089) | 评论 (4)编辑 收藏