繼上回《VPS體驗》。
有些記錄完全依樣畫葫蘆沒有謄抄必要(例如:Docker、rootless、反向代理等等),還有些則是由於時隔逾一年,現在翻開有些看不懂。
零散留下的粗淺筆記梳理過後剩下的也就下文。
Linux
SUDO
一開始按網路教學直接執行nano或vim修改/etc/sudoers
。結果當時將(
輸入成(
,而且還關閉允許root登入並退出SSH,多重錯誤疊加,救不回來。
後來多看了一些Linux教學,鮮有人提及直接修改的方式,反而是再三強調應該使用visudo
或是sudo usermod -a -G sudo <用戶>
。
不知為何,每次剛開始了解新知識的時候,最先接觸的總是那些有風險的方式。問題當然是自己的問題,是自己忽視了確認前不要退出SSH的警告,只是說好奇這個現象。
備註
不過當初看到說直接編輯檔案的文章是由提供付費服務的專業人士撰寫,所以我也不知道實際情況是如何,我身為新手還是乖一點。
換行符號
Windows跟Linux文件的換行符號不同。我直接上傳在Windows編輯的Shell Script,然後就出事了。存檔時要確認換行符號。

LiteSpeed Server
安裝新版LSPHP
詳見官方說明書:《LiteSpeed Documentation》。
- 在https://rpms.litespeedtech.com/debian/pool/main/查詢LSPHP有無釋出新版。
- 輸入相應版本號:
apt-get install lsphp8x*
- 在LiteSpeed Server的控制台照抄其他PHP版本的「External App」、「Script Handler」。
CyberPanel
靠WPJohnny的《CyberPanel cheatsheet (configs, commands, fixes)》解決一堆疑難雜症。
以下記錄為2.3.3版本。
SSH埠
進入CyberPanel > Security > Security SSH的時候,CyberPanel會未經儲存就在/etc/ssh/sshd_config另行加上自己的埠號設定(同系統預設的22)。
先前已經手動修改過SSH埠,好奇點進去,埠號就被改回22,沒發現問題在哪之前真是一個頭兩個大。
ModSecurity Rules
左側選單的Security > ModSecurity Rules新增的規則無法生效,但我看官方論壇也沒人反應。應該是我誤解或是漏看了說明。無法理解什麼狀況,只好先土法煉鋼。
- ModSecurity Rules的檔案在:/usr/local/lsws/conf/rules.conf
- 根據說明書,我要新增的規則應該放在:REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
- 編輯REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf,添加:
Include /usr/local/lsws/conf/rules.conf
- ModSecurity Rules內新增的規則生效。
CSF > LF_MODSEC
ConfigServer Firewall的LF_MODSEC功能無法生效。
該功能讀取MODSEC_LOG來封鎖多次觸犯ModSecurity規則的IP。查看LOG(auditmodsec.log)後發現日誌記錄格式不符。(CSF所比對的正規表達式:《Re: LF_MODSEC not blocking as expected》)
有兩個主要LOG:
- HTACCESS_LOG:
- /usr/local/lsws/logs/error.log
- MODSEC_LOG:
- /usr/local/lsws/logs/auditmodsec.log
真正符合格式的日誌其實是被寫入到error.log。
AI對此給了兩條路:一、修改正規表達式適應現有的auditmodsec.log;二、增加CUSTOM_LOG,然後,新增正規表達式(例如《Block WordPress brute force attacks with CSF》)。
謝謝,我決定再次祭出菜鳥法寶——土法煉鋼:修改/etc/csf/csf.conf,將MODSEC_LOG也改成/usr/local/lsws/logs/error.log。
CSF成功解讀MODSEC_LOG,封鎖IP。
Firewalld
更新CyberPanel後,防火牆功能有可能被Firewalld以預設值接管,若是SSH、CyberPanel控制台更改過埠號便會因此無法登入。
更新完不要退出SSH,兩種方式:
- 關閉Firewalld
- 輸入
systemctl stop firewalld
- 輸入
- 新增允許的埠號
- 輸入
firewall-cmd --permanent --add-port=PORT/PROTOCOL
- 接著輸入
firewall-cmd --reload
- 輸入
Cron
CyberPanel的排程功能有問題。放棄,使用系統的crontab -e
。
網站日誌
當Websites > List Websites > Manage > vHost Conf並無設定ErrorLog
及CustomLog
時,則網站日誌一概歸於CyberPanel > Logs > Access Log / Error Logs
MariaDB
innodb_log_file_size
包括phpMyAdmin建議在內,找到的所有關於修改innodb_log_file_size的方式都是說謹記必須先停止MariaDB,而後將ib_logfile0、ib_logfile1刪除或移動,又或是改名才能進行修改,MariaDB重新啟動時會自動重建ib_logfile0。
然而當我照做,MariaDB完全再起不能。卡在ib_logfile0怎麼都無法重建。
孤注一擲,還原快照,這次略過停止MariaDB跟操作ib_logfile0,直接修改innodb_log_file_size,接著reboot,確認ib_logfile0自動變更為新設定。成功。
總結
以玩票性質而言摸索差不多到此結束,接下來就是有趣不起來的專業領域,尊敬那句老話:「專業交給專業的做」。
因為看不懂筆記找資料時發現的超詳細指南:Raven95676撰寫的《VPS基本安全措施》(LINUX DO副本)。坦白說,看完後更篤定不該自己維護伺服器。
看到有篇文章說VPS學習曲線陡峭、安裝方式複雜。當中所表達的意思有那麼點偏離。
其實這方面的困難在有AI之後就減輕不少,AI很詳盡地解釋各種設定的用意。有些操作後來直接讓AI寫Shell Scripts自動化處理,比自己複製來複製去來得安全。其他自動調校功能也所在多有,像是WordOps會在安裝時一併最佳化、CyberPanel有分析建議MariaDB參數的功能。
我是覺得外行人運用VPS真正的問題在於:
“As we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns—the ones we don’t know we don’t know.”
Donald Rumsfeld
如果一個問題不知道它存在,就不可能去解決。知識艱深是一回事,首要的是至少知道該學什麼。要是缺乏系統性的全面了解,即便AI也愛莫能助。