關掉wordpress的xml-rpc API呼叫功能

最近發現我安裝的nextcloud常常優雅的關閉(shutting down gracefully),當然原因很多很多,終究是我不好(一副政治人物的口吻);我接著查看log的時候,意外發現有個xmlrpc.php一直被呼叫,於是查了一下,原來是被攻擊了,當然這種無差別攻擊最後也是失敗告終。

像我這種對資安敏感度差的人,又管很多很多開源網站,一般只知道版本更新,不看是否有資安漏洞,除非網站出問題。現在問題來了,我爬了文,一般都建議關閉xml-rpc api,反正99.99%都用不到。wordkpress裡面就能找到停用XML-RPC外掛。

同場加映,我從wordpress 4.9開始使用,裡面有個阻擋廣告留言的Akismet Anti-Spam,很好用,後來升級5.x之後,又出現另一個Akismet Anti-Spam,所以我的網站有兩個Aiti-Spam但版本不同,我也不以為意;但期間我這個網站一直會要求訪問網站的人「同意訂閱」,這問題我找了很久,終於抓到是舊版Akismet Anti-Spam搞的鬼,或許是該外掛有漏洞我不自知,兼沒移除所致。現在刪掉就清爽多,也不再詢問訪問網站者是否訂閱惹。

舊版Akismet Anti-Spam存在的時候,會有一個wp_pushup目錄,裡面時常出現一個js檔案,刪了又會出現,導致來我網站的人們,都會被要求訂閱;在移除舊版Akismet Anti-Spam之後,該wp_pushup目錄也隨之被移除,也不會出現要求訂閱的訊息了。

感謝”Linux技術手扎”對於apache http調校說明

長期以來,我「HTTP反向代理伺服器」只使用「Apache Http」, 理由簡單:習慣了;然而,新興的代理伺服器總讓我有種「雖簡單卻很艱難」的感受,雖說採用新服務器是進步的象徵,但我考量自己管理的網站達數十個,非常在意網站穩定性,若貿然決定更換新「反向代理服務器」,則需要很大的勇氣,誰都無法知道被代理的服務器會不會水土不服,造成災難,因而作罷。

一般來說,apache httpd運作很穩定,沒事就不要動設定;但是我總是遇到代理服務器重啟很慢的問題,原本也沒有多想,訓練自己忍耐力XD,直到遇見”Linux技術手扎“,網站中有兩篇文章,對於apache http效能,防止阻斷攻擊(DoS)有詳細說明。我拜讀之後,受用不盡,因此也節錄下來,作為自己快速參考用。

1、解決apache http重啟慢問題

vi /usr/lib/systemd/system/httpd.service
[Service]
...
KillMode=none
systemctl daemon-reload

2、防止阻斷攻擊(Dos)

vi /etc/httpd/conf/httpd.conf
...
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
systemctl restart http

想知道修改原因、運作原理,請參考網站

wordpress 6.2.0 docker版本疑似被植入木馬

我在2023年4月6日,將網站升級到6.2.0(docker版本) : 回想起一開始升級時, 容器(container)為舊版, 我沒有採用拉取(pull)方式升級, 直接使用內建升級功能,可惜失敗了!出現找不到“sw-check-permissions-e2a8b.js”錯誤;於是我改用拉取最新容器方式升級, 而且成功了。

升級後,,我陸續寫了好幾篇文章,卻沒有發現網站已經有狀況了。直到今日(4月24日),我在同事電腦,瀏覽自己網站時,防毒軟體居然跳出”木馬”警告,我才意識到出事了!

警告內容為「bujerdaz.com」這個網站有木馬;既然有明確網站名稱,肯定網站內有這些字眼,我馬上登入網站伺服器,搜尋了一番, 還真的有找到:

找到問題後, 接下來就是決定解決方式: 1、刪掉這一行含木馬之語法;2、查看看容器是否有最新版

第一種做法「刪掉木馬語法」通常逼不得已才做;於是我先選擇第二種「查看容器是否有新版」,沒想到,一模一樣的6.2.0版本,居然有不同內容,這明顯是官方犯了錯誤!一般我們不會懷疑同版本容器,內容會被異動;若內容不同,必須進一個版號,並且昭告天下有修補版本! (官方並沒有說明)

這讓我以後升級需要多一個心眼,要以防毒軟體進行掃描,至少不要影響用戶端瀏覽網站。


2023/4/25 雖然升級新版容器,自以為問題已解決,沒想到問題還是在!仔細一看,是plugin外掛所造成的,難怪用新版容器還是無法解決,因「外掛」程式我繼續沿用,不因容器更換而刪除,當然「木馬」一直存在。我發現阻擋垃圾留言的外掛「akismet」,出現兩個版本: 一個5.0;另一個1.2。(理論上不該存在兩個版本) 版本1.2裡面寫到要連線 bujerdaz.com ,看起來應該是進行一些確認才允許留言,我認定非木馬程式,可能wordpress系統用太多年了,這次大版本升級造成兩個版本並存之現象;最後移除1.2版akismet,只留下5.0版本,就恢復正常了。另外,依照這邏輯,我的網站應該「有問題」很久了,真的很不好意思。

#wordpress
#virus
#Trojan

原來我們無時無刻都被分析中 AdGuard Home

我安裝OPNsense防火牆時, 加裝了AdGuard Home 外掛 , AdGuardHome使用dns過濾方式, 來阻擋廣告ip, 我讓公司wifi dns 也導到AdGuardHome, 只要是廣告類的ip, 過濾後, 都會變成0.0.0.0 , 我們不會去訪問到廣告.
幾天後, 真的真的沒想到, 居然高達49% 被濾掉, 仔細一看, 這些ip, 絕大部份是統計,以及分析我們上網行為, 當然商業行為精準知道我們的需求很不錯, 可是拿來做壞的用途也是恐怖.

MaxMind 免費提供ip所在國家資訊

以資安角度, 24小時網路提供的服務, 風險極高. 若確認只在特定國家使用, 就可以使用MaxMind提供ip所在國家資訊, 限制其他國家ip連線,避免不必要的麻煩.

最近想用軟體防火牆來取代公司老舊的硬體防火牆, 我考察很久捨棄PFsense, 改用OPNsense. OPNSense提供簡單MaxMind整合, 可以讓我們進行ip國家使用限制, 非常方便.

我們得先到 https://www.maxmind.com/en/geolite2/signup 註冊帳號,

註冊完畢登入網站, 接下來產生license key
https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en

產生完license key之後, 就可以下載ip國家資料, 可以參考一下OPNsense提供的方式

https://docs.opnsense.org/manual/how-tos/maxmind_geo_ip.html

防火牆就可以自己定義國別, 進行限制工作

java 11 不支援java web start

公司電子表單為鼎新的easyflow GP版, 需安裝支援java web start版本的java, 但我寫程式, 電腦只安裝java11, 不支援java web start怎辦? 我們可以下載IcedTea-Web , 安裝後就可以屎用了.

javaws xxx.jnlp

若出現unsigned jar 問題, 可以找到jdk或是jre , 修改conf\security\java.security這個檔案(安全風險請自行評估), 跳過安全驗證.

jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024

升級mail server不支援TLS 1.0 , 1.1的問題

postfix 出現以下錯誤

SSL routines:tls_early_post_process_client_hello:unsupported protocol

我不知道如何處理, 爬文說要改成向下相容… 我才不要勒

vi /etc/crypto-policies/back-ends/opensslcnf.config
#改成
#MinProtocol = TLSv1.2
MinProtocol = TLSv1
MaxProtocol = TLSv1.3

vi /etc/postfix
#確認沒有被限制
# Disable SSLv2, SSLv3, TLSv1, TLSv1.1
#smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Rocky Linux 安裝httpd 反向代理

真是被selinux搞死,但,咱們工程師, 就是要勇往直前

RL9 安裝httpd後, 若要啟用proxy , reverse 功能 , 目前我遇到要改兩點

  • 修改httpd設定, 把心跳這一行mark起來
    vi /etc/httpd/conf.modules.d/00-proxy.conf
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
  • selinux 啟用連線功能
sudo setsebool -P httpd_can_network_connect 1
#2023/6/20 否則會出現 Permission denied: AH00957 錯誤

Rocky Linux podman 更改storage注意事項

之前使用docker, 我會把selinux關掉, 這次改用podman, 我順帶挑戰不關selinux , 果然就遇到問題了

  • storage存放位置變更

正確的是, 我原本安裝時候, 就將路徑改了 , 請參照這篇文章 , 但是後來又新增一個新的partition , 用mount的方式覆蓋原本podman storage 路徑, 這看起來很棒, 都不用改,但還是遇到問題了, 我啟用原本的container, 出現

我用podman logs <container name> 查看有這bug , 後來想想應該是selinux權限問題, 就重新跑一次這個指令

restorecon -R -v /podman/storage/
# /podman/storage 是我安裝podman改的路徑

1 2