CentOS CSGO服務(wù)器教程 終章 簡單運(yùn)維與安全
前篇

????????本篇介紹CSGO服務(wù)器運(yùn)維與安全相關(guān)的知識。運(yùn)維部分包括自動化更新、清理文件、提高優(yōu)先級。安全部分簡要介紹一下目前云服務(wù)器容易出現(xiàn)的IP/端口/安全組等問題。
????????時隔兩年,大家在前兩期教程下時不時會有評論,自第三篇教程開始,我就不再接觸csgo與服務(wù)器相關(guān)的工作了。當(dāng)時我還立了個Flag,下一篇教程介紹服務(wù)器運(yùn)維及安全。本來這個系列還有第五篇,介紹如何用C制作插件并調(diào)試,但是目前來看,在這兒收尾是最好的選擇。
????????由于時間跨度的問題,這篇教程中的一些內(nèi)容來自2021年年末,可能不適合目前的csgo服務(wù)器,還請諒解。
1.簡單運(yùn)維(Cron腳本)
????????在使用Windows Server系統(tǒng)創(chuàng)建服務(wù)器后,服務(wù)器的更新、啟動、關(guān)閉都需要我們手動打開Windows Server UI,在steamcmd中執(zhí)行命令并解決,長此以往的重復(fù)比較索然無味。在Linux下,我們可以創(chuàng)建計(jì)劃任務(wù),編寫具有特定功能的腳本并使其按照預(yù)設(shè)的時間運(yùn)行,減少人工工作量,這在運(yùn)維多個CSGO服務(wù)器時更加明顯。接下來簡要介紹一些最簡單的自動化運(yùn)維方法。
1.1 Crontab
????????在Linux操作系統(tǒng)中,我們可以調(diào)用Cron計(jì)劃任務(wù)管理工具實(shí)現(xiàn)腳本自動執(zhí)行操作。如果當(dāng)前CentOS不支持crontab 則需要進(jìn)行配置:
????????如何編輯Crontab任務(wù)計(jì)劃?使用以下命令可以創(chuàng)建或編輯 crontab 文件。
????????也可以通過winscp進(jìn)入/var/spool/cron/目錄下使用winscp自帶的記事本編輯

?這里給出一個Crontab的示例文件:
Crontab由兩部分構(gòu)成,分別為環(huán)境變量配置與定時任務(wù)配置
環(huán)境變量配置(示例文件前三行):
SHELL:為/bin/bash,表示使用/bin/bash解釋執(zhí)行命令
PATH:表示到哪些目錄路徑尋找命令程序,此環(huán)境變量的值說明了為什么我們在crontab中執(zhí)行命令時,盡量要寫命令全路徑才能執(zhí)行的原因。
MAILTO:變量作用是當(dāng)任務(wù)執(zhí)行有輸出時,內(nèi)容發(fā)送到哪個用戶的郵箱。默認(rèn)為Root
定時任務(wù)配置(示例文件后半部分):
第一列單位為分,表示每時第幾分鐘,范圍為0-59;
第二列單位為時,表示每天第幾小時,范圍為0-23;
第三列單位為日,表示每月第幾天,范圍為1-31;
第四列單位為月,表示每年第幾月,范圍為1-12;
第五列單位為星期,表示每星期第幾天,范圍0-7,0與7表示星期日,其他分別為星期1-6;
定時任務(wù)有多種配置方式,包括固定值、范圍值、列表值、步長值、混合值。我們在一般使用時只需要用固定值+缺省的模式即可,想了解其他模式的請自行百度。

在LinuxGSM的說明文檔中 簡要介紹了如何調(diào)用Cronjobs自動化運(yùn)維服務(wù)器,用例如下
以上示例執(zhí)行了一個基本的監(jiān)視/更新/lgsm更新的操作
1.2 自動化更新、啟停
????????我們可以通過設(shè)置每天指定時間停止、更新、重啟服務(wù)器的操作來進(jìn)行維護(hù),建議更新服務(wù)器時間點(diǎn)位每天的上午六點(diǎn)以后,我本人使用9點(diǎn)這個時間。以下是參考Crontab任務(wù),在9:00停止服務(wù)器,9:02開始服務(wù)器自動更新,給與24分鐘更新事件后啟動服務(wù)器,9:27檢查lgsm是否需要更新(一般情況下此步驟可以省略,我自己日常使用中沒有這部分操作),9:30對服務(wù)器進(jìn)行一次重啟操作檢查服務(wù)器是否正常。
1.3 清理垃圾
????????部分玩家搭建服務(wù)器可能不需要csgo自帶的地圖(比如社區(qū)娛樂服/KZ服等),csgo自帶地圖組占用了不小空間。由于每次update時服務(wù)器都會自動下載全量地圖,因此,不需要的文件又是也需要清理
????????清理系統(tǒng)垃圾/緩存(代碼僅供參考)
????????清理不需要的地圖文件(以刪除de_dust2.nav為例,如梳理出較多不需要的地圖文件,依照此按行向下添加即可)
1.4提高優(yōu)先級
????????提升csgoserver進(jìn)程優(yōu)先級,保證服務(wù)器高性能運(yùn)行。使用renice即可完成此操作。
????????在CentOS中,使用
????????或
????????可查看到csgoserver對應(yīng)的pid,獲取pid后使用如下的renice命令即可提升進(jìn)程優(yōu)先級
????????按照前三小節(jié)的介紹,我們可以在服務(wù)器重啟后進(jìn)行提高優(yōu)先級操作,例如
2.安全
2.1 基礎(chǔ)防范
??????? 由于大部分自行搭建的Linux云服務(wù)器通訊都采用SSH方式進(jìn)行,此處引用一篇云鼎實(shí)驗(yàn)室的文章,說明現(xiàn)在云服務(wù)器嗅探與口令強(qiáng)度的問題
https://paper.seebug.org/643/
????????SSH 暴力破解趨勢:從云平臺向物聯(lián)網(wǎng)設(shè)備遷移
????????SSH 暴力破解攻擊目標(biāo)主要分為 Linux 服務(wù)器(包括傳統(tǒng)服務(wù)器、云服務(wù)器等)與物聯(lián)網(wǎng)設(shè)備。
????????1)Linux 服務(wù)器(包括傳統(tǒng)服務(wù)器、云服務(wù)器等)
????????大部分攻擊都是針對 Linux 服務(wù)器默認(rèn)管理賬號 root,攻擊者主要使用 admin、 root、 123456等常見弱密碼進(jìn)行暴力破解;
????????少部分攻擊是針對 tomcat、 postgres、 hadoop、 mysql、 apache、 ftpuser、 vnc 等 Linux 服務(wù)器上常見應(yīng)用程序使用的用戶名。攻擊者不僅使用常見通用弱密碼,還會將用戶名當(dāng)作密碼進(jìn)行攻擊。
????????另外,還發(fā)現(xiàn)針對 CSGO 游戲服務(wù)端(目前該服務(wù)端程序只能在 Linux 系統(tǒng)上安裝)的默認(rèn)用戶名 csgoserver 的攻擊。攻擊者同樣也是使用常見弱密碼進(jìn)行暴力破解。
????????筆者在運(yùn)行csgo云服務(wù)器三年的時間內(nèi),曾經(jīng)遭遇過兩次弱口令被破解以及長達(dá)半年的端口嗅探
????????需要注意以下涉及云服務(wù)器/CSGO服務(wù)器的密碼強(qiáng)度
????????CSGO客戶端密碼(以玩家身份連接服務(wù)器的密碼) sv_password
????????rcon遠(yuǎn)程控制工具密碼 rcon_password
????????Linux服務(wù)器csgoserver用戶密碼(建議包括大小寫/數(shù)字/特殊字符,至少8位增加密碼強(qiáng)度)
????????Linux服務(wù)器root密碼
????????外部云服務(wù)器管理員密碼(QQ/微信/QQ郵箱密碼)
2.2 端口修改
2.2.1 常用端口
????????目前端口可分為以下幾類
????????系統(tǒng)端口:(0-1023)是由“IETF審查”或“IESG批準(zhǔn)”程序分配[RFC8126]。
????????用戶端口:(1024-49151)由IANA使用“IETF審核”流程分配,根據(jù)“IESG批準(zhǔn)”流程或“專家審核”流程[RFC6335]。
????????動態(tài)端口:(49152-65535)或稱私有端口, 根據(jù)定義,沒有端口可以被正式地注冊占用。
????????需要熟記的重要端口包括22端口(SSH協(xié)議用,winscp/putty遠(yuǎn)程連接服務(wù)器需要使用),3389端口(Windows遠(yuǎn)程連接端口),27015端口(csgo社區(qū)服默認(rèn)連接端口)
2.2.2 修改端口
????????由于前面介紹過,通用端口會被嗅探甚至被嘗試進(jìn)行口令爆破破解,因此,運(yùn)行csgo服務(wù)器建議修改遠(yuǎn)程連接服務(wù)器端口,社區(qū)服默認(rèn)連接端口可按需修改,這里介紹修改SSH協(xié)議默認(rèn)端口,建議修改至30000-60000區(qū)段,避開云服務(wù)器與csgoserver默認(rèn)調(diào)用的端口。

????????進(jìn)入服務(wù)器默認(rèn)sshd_config默認(rèn)配置目錄
????????修改Port端口22至30000-60000區(qū)間,保存后運(yùn)行如下命令重啟ssh服務(wù)
????????注意,如此時使用遠(yuǎn)程連接工具(putty/winscp)會斷開連接,注意在云服務(wù)器安全組放通你所修改的端口,以后使用該端口ssh連接服務(wù)器即可,可避免默認(rèn)端口被嗅探。
????????此時可在云服務(wù)器安全組放通中將22端口封禁。
2.2.3 補(bǔ)充建議
????????如無法確認(rèn)服務(wù)器安全,建議同時修改csgo社區(qū)服連接端口,關(guān)閉rcon協(xié)議端口,即可確保一般情況下的安全
2.3 客戶端&防火墻&云服務(wù)器安全組設(shè)置
????????由于我目前沒有云服務(wù)器,可預(yù)見的短期內(nèi)也不會再運(yùn)行云服務(wù)器,故此小節(jié)我按照兩年前的回憶梳理一下哪些部分需要注意,哪些部分可以進(jìn)行操作
2.3.1 客戶端log日志
????????通過查詢/lgsm/log目錄下的日志文件,可以統(tǒng)計(jì)服務(wù)器被哪些IP從哪些端口嗅探/連接過,對于連接次數(shù)明顯異常的IP進(jìn)行IP黑名單封禁即可,可在安全組或CentOS內(nèi)部設(shè)置。
2.3.2 減少暴露面
????????通過在csgoserver.cfg啟動參數(shù)中添加-nomaster實(shí)現(xiàn)服務(wù)器在csgo社區(qū)服中的隱匿,避免被別有用心的DDOS攻擊。
2.3.3 端口屏蔽
????????放通csgo服務(wù)器需要的指定端口,其他端口保持安全組規(guī)則禁用狀態(tài)。注意,修改規(guī)則后務(wù)必親自測試能否從外部連接至服務(wù)器,不要封死必需的端口。
2.3.4 協(xié)議
????????能使用TCP協(xié)議的端口務(wù)必使用TCP協(xié)議,無法使用的審慎開放UDP協(xié)議。
3.總結(jié)
????? 至此,CentOS搭建CSGO服務(wù)器教程就此完結(jié),期待起源2上線后為csgo帶來的升級革新,希望大家順利搭建自己的服務(wù)器,享受游戲!
????? 帶帶小惡人/prtFrater于2023/5/10