跳到主要內容

發表文章

目前顯示的是有「機房管理」標籤的文章

SSH Tunnel(Port Forwarding)的應用

自己在管理伺服器和防火牆原則是最小開放原則,一定需要的服務 port 才會開放,例如網頁伺服器的 80、443 等。而管理用的 ssh ,可以的話就限縮來源 IP 範圍,加上限制可以登入的帳號或群組,要不然就改 port 編號;不過,改 port 編號會變成自己在遠端登入時要回想是改成多少,有點不是很方便。 所以最近建置的伺服器就不改 port 了,會加上 fail2ban 的防衛機制。 因為最小開放原則,像是 webmin(10000)這樣的 port 就不會開放,如果想要用的話,就用 ssh tunnel 方式作跳板連接。 例如伺服器的 public ip:123.123.123.123,要連 webmin 的話,就用: ssh 123.123.123.123 -L 10000:127.0.0.1:10000 SSH 登入後就會在客戶端開啟 127.0.0.1:10000 的監聽埠,用瀏覽器連本機的 127.0.0.1:10000 就會跳到伺服器端的 10000 埠。 一直以來,我都以為 ssh -L (Local Port Forwarding)方式只會在本機端綁定 127.0.0.1:xxxx的情形。不過,最近因為要解決一個臨時伺服器的設定問題,才發現原來不是只能綁在 127.0.0.1 上。 網路架構: 外部 public ip:123.123.123.0/24 內部 private ip:10.1.0.0/16 內部切出多個 class C的網路區域,其中 10.1.1.0/24 是 ServerZone,在外面用 DNAT 的方式將服務要求導入內部的伺服器。 其他 10.1.n.0/24 是各個區域內容IP,只能 NAT 出去,外部不能訪問到。 需求: Server-01:10.1.1.2,Server-02:10.1.20.2 Server-01在 ServerZone 內,從外部可以訪問,Server-02 在 PrivateZone 內,外部連不到。ServerZone 和 PrivateZone 彼此可以 SSH 互連。 現在希望可以在不變動兩台 Server 的 IP 區域,讓 Server-02可以被外部訪問到。 最簡單的方式就是先登 Server-01後,再從 Server-01 terminal 登到 Server-02上。但是需求是,...

支援 HTTP/3 網頁伺服器 Caddy v2 安裝

自已原本擅長使用的網頁伺服器是 Apache2,還在學校的時候已經能夠使用 Let's Encypt 的 SSL 憑證來達成 http 2.0 的服務。 除了 Apache 外,也嚐試使用過 Nginx 及 Lighttp 等網頁伺服器程式,相較下 Apache 穩定但花費效能較多,但是因為比較熟悉順手,來到基隆時一樣用 Apache 來架設網頁。 但在 http/3 規格確定後,許多大型網站,如:Google、Facebook等都採用 http/3 服務。http/3 採用 udp 通訊協定,理論上可以加快網頁的傳輸速度,網路上的資料說 Apache 尚未有改版支援 http/3 的消息,加上想要試著改掉古老又笨重的 apache 伺服器,找了幾個目前有支援或打算支援 http/3 的網頁伺服器。 目前找到的伺服器有:Caddy、OpenLiteSpeed、Nginx(開始改版支援中)、新版的 IIS。 Caddy:用 go 語言撰寫的網頁伺服器,可用於作代理。除了支援 http/3 外,如果有合法的網域 DNS,甚至會自動產生 Let's Encypt SSL 憑證,完全不需要經過申請。 Caddy 2 (caddyserver.com) OpenLiteSpeed:具有 cPanel的後台管理系統,但是試用了一下不太會用。 OpenLiteSpeed 目前實作是用 Caddy v2。 安裝 ( Install — Caddy Documentation (caddyserver.com) ) Caddy2 有提供各大 linux 版本套件,以自已是順手的 ubuntu 為例: sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable...

Apache 、PHP 安全性設定

最近因為基隆教育網路虛擬主機上放程式,申請弱點掃描後,收到報告開始修正弱點和漏洞時,發現太久沒有碰伺服器相關的議題,安全性的設定多出來非常的多。 參考網站:http://lab.aoetek.com/index.php/2018/09/27/2018092701/ 備份參考網站,以後再有需要時可以快速找到。

入侵紀錄分析

 上篇利用 grep 和 awk 將嚐試利用 SSH 入侵的紀錄篩選出來分析,發現有幾種入侵類型: 一、密碼字典攻擊: 利用外洩的密碼表或收集常用密碼入侵粗心大意網管架設的伺服器。 防範的方式是不允許 root 帳號利用 SSH 登入系統,現今新版的 Linux distro 都有預設。 二、帳號密碼字典攻擊: 利用英文姓名或系統固定內建帳號,搭配外洩密碼表或字典密碼進行攻擊。 防範方式是限定 SSH 登入的帳號或群組,並且設置足夠安全的密碼。 三、進階帳號字典攻擊: 此類攻擊雖然也是帳號字典攻擊,但使用的帳號不再是亂槍打鳥的方式,會針對伺服器系統來作帳號攻擊,而且從這種攻擊模式可以看出某些廠牌設備會受到攻擊關注。 上圖中的「HwHiAiUser」查詢結果是華為出品某伺服器的預設管理帳號。 此類攻擊防範也是限定 SSH 登入帳號及群組,並且設置足夠安全的密碼。 四、用到錯誤字典程式的菜鳥: 在分析入侵資料中,有發現如上圖非常奇異的帳號,看起來應該不是帳號而是密碼。表示該駭客用到的字典程式欄位設定錯誤,把密碼拿來當帳號在試。 而且不只一組IP有會種情形,從收集到的資料內發現有兩個IP以上會有這樣的情形,用 whois 查詢了一下,都是中國那邊的IP,而且不是同一個區域喔!

伺服器開箱喔

學校採購一台機架型伺服器,主要作未來虛擬化主機使用。這是生平第一次全新的伺服器可以拆箱的。 開箱文 PO 到 FB 後,還被學生子澄發現記憶體沒有插滿。唉!不足記憶體沒滿,兩個 CPU 插槽也只有插一顆 CPU,我也很想都都插滿,但是沒有經費啊。     

MySQL 字串取代 UPDATE … REPLACE

學校的網頁由 http 改成 https 後,原本的內容是後台中,利用線上編輯 ckeditor 和 ckfinder 製作,圖片的連結已經是用 http:// 的網址方式寫入資料庫了。改換成 https 後會變成網頁中有 https 和 http 兩種連線的內容。在瀏覽器中還是會被辨識為「不安全」,看起來有點礙眼! 重新逐一修改網頁內的圖片不切實際,反正相關的網址都是儲存在 MySQL(MariaDB)資料庫中,所以一次用 REPLACE 字串取代的方式搞定。 SQL 語法: Update activity Set cover = Replace( cover, "http://www.tsh.tp.edu.tw", "https://www.tsh.tp.edu.tw") Where cover Like "http://www.tsh.tp.edu.tw%" 在資料表 activity 中,將 cover 欄位以 http://www.tsh.tp.edu.tw 開頭的內容,以 https://www.tsh.tp.edu.tw 取代 http://www.tsh.tp.edu.tw。其實這個 SQL  可以再簡化一點,不過,已經完成就算了。   

Ubuntu Apache 啟用 http/2

何謂 http/2 (摘錄自「你的網站升級到 HTTP/2 了嗎?」) 隨著網頁內容越來越複雜,造成了要完成一個網頁載入(Page Load)的動作,除了要下載 HTML 之外,還需要下載 CSS 檔案、JavaScript 檔案、各種圖片檔案,零零總總加起來需要已經多達上百個對伺服器的 Request 請求資源,大大影響了網頁載入的速度。在這一秒鐘幾十萬上下的時代,Amazon 的網頁載入時間每多一秒,該公司的年度營收就減少 16 億美元、Google 的搜尋時間每多 0.4 秒,每天的搜尋次數就會減少 8 百萬網頁、KISSmetric 分析報告指出等待時間超過 4 秒,Bounce Rate 就會增加 25%。人的思緒在等 1 秒後就開始飄移,如果需要等 10 秒,就會感覺這東西是不是壞了。 這個問題的最大原因在於, HTTP/1.1 有一個非常大的缺陷是每個對伺服器的 Request 資源請求,都必須佔用一個網路連線(TCP connection),傳完一個檔案才能再傳下一個,瀏覽器無法同時下載。因此在 HTTP/1.1 時代,瀏覽器為了加速下載的時間,只好同時允許六個網路連線(TCP connection)併發去連接伺服器,好可以達成同時下載六個資源。但是極限也是如此了,並不是說無限制增加網路連線就可以解決這個瓶頸,因為每一次的網路連線,都必須經過三次握手的初始網路連線程序,而且每次初始連線因為流量控制的關係,一開始的網路封包會傳輸比較慢,後來才逐漸加快。 那麼,HTTP/2 是如何改良的呢?它採用的解法包括: 只需要單一網路連線(Single TCP connection),就可以連接網站伺服器,下載所有需要的資源。大大節省 HTTP/1.1 需要一直建立多個網路連線時的啟動時間浪費。 連線多工(Multiplexing),在單一網路連線上,就可以同時傳輸多個 HTTP Request 和 Response,併發請求 CSS/JS/Images 等等資源。它的原理是將 Requests/Responses 都拆碎成小 frames 進行傳輸,而這些 frames 是可以交錯的,因此檔案再多也不怕,不會發生佔用網路連線(TCP connection)的情況。這就是為什麼在圖檔多的情況下,HTTP/2 特別有優勢。 優先權設計(...

IPv6 系列(五):KEA DHCP SERVER

學校在純 IPv4 的環境時,採用 ISC-DHCP Server 來發放教學區域的私有 IP(10.10.xxx.xxx),並使用閘道 Fortigate 作 NAT 連接到 Internet。 採用 IPv6 後,原本是要使用 ISC-DHCPv6 來作為 IPv6 發放,結果 ISC-DHCPv6 架不起來。不過在查詢 DHCPv6 的過程中,發現 ISC(Internet System Consortium)已開發出下一代的 DHCP Server:Kea Dhcp Server。 Kea Dhcp Server 官網: https://www.isc.org/kea/ 摘錄  https://www.itread01.com/content/1548712273.html  對 Kea DHCP Server 的介紹: Kea DHCP Server 由 Internet Systems Consortium(ISC) 開發的開源 DHCPv4/DHCPv6 伺服器。Kea DHCP Server 是一個高效能的,可擴充套件的DHCP伺服器引擎。通過hooks library可以很容易的修改和擴充套件。 Kea包含的功能元件 keactrl — kea伺服器啟動,停止,配置重置和狀態查詢元件 kea-dhcp4 — DHCPv4伺服器程式,用於響應客戶端的DHCPv4查詢。 kea-dhcp6 — DHCPv6伺服器程式,用於響應客戶端的DHCPv6查詢。 kea-dhcp-ddns — DHCP動態DNS程式.這個程式在DHCP伺服器和DNS伺服器之間扮演者調解者。它接收來自DHCP伺服器域名更新請求和傳送DNS更新訊息給DNS伺服器。也就是說DDNS捕獲使用者每次變化的IP地址,然後將其與域名相對應,這樣其他上網使用者就可以通過域名來進行交流。而最終客戶所要記憶的全部,就是記住動態域名商給予的域名即可,而不用去管他們是如何實現的。 軟體執行環境 加密庫Botan或者OpenSSL log4cplus 1.0.3+ 如果有需要mysql,需要MySQL headers and libraries。可選(postgresql、cassandra類同) 選用 Kea DHCP Server 的原因,...

IPv6 系列(四):安全公用 DNS

繼學校開始採用 IPv6 後,在 Fortigate 防火牆除了原有的 IPv4 規則外,還要針對 IPv6 作設定。因為學校的資安策略除了會管制外部對內往伺服器的連線外,還會針對內部對外的不當連線,加上惡意網域日新月異,防不勝防,如此一來會增加人員與設備的負擔。 在 IPv4 環境中,學校內行政辦公室電腦採用固定 IP,其他教學部份均為 DHCP 動態發放 IP。而在 IPv6 的環境下,不管是 Stateless 或 Stateful 設定 IPv6,都會用到 DHCPv6 來設定 DNS 資訊。一般上網的動作一定會有 DNS 查詢的動作,所以可以把 DNS 查詢當作資安的防護層,也就是採用具有過瀘功能的公用 DNS 伺服器(Public DNS servers)。 提到 public dns server,一般都會想到的是 Google public dns 服務(8.8.8.8、8.4.4.8),但查詢 Google 的說明似乎沒有看到 Google 會特別針對資安防護的功能,所以改採用 cloudflare dns。 cloudflare dns 可以設定不同安全等級的 dns 位址: 一般使用 1.1.1.1  1.0.0.1 2606:4700:4700::1111  2606:4700:4700::1001 Malware Blocking Only 1.1.1.2 1.0.0.2 2606:4700:4700::1112 2606:4700:4700::1002 Malware and Adult Content 1.1.1.3 1.0.0.3 2606:4700:4700::1113 2606:4700:4700::1003 而且從 cloudflare dns 的官網說明上看,它還有隱私、安全的功能,速度也比較快。 除了 cloudflare dns 外,還有 opendns、comodo sercure dns 也有提供安全等級的選擇,但速度比較慢。 參考資料: https://blog.cloudflare.com/introducing-1-1-1-1-for-families/ https://developers.cloud...

修正 pfsense 更新至 2.4.5 後,captive portal 資料庫錯誤

學校架設兩台 pfsense 作為無線網路管理伺服器,因為 pfsense 可以提供無線認證網頁(Captive Portal),並後端使用 Radius 作使用者認證。 其中一台更新至 2.4.5 版之後,認證服務正常工作,但是會發生錯誤,使得認證的 session 無法正常停止。 查詢 log 紀錄發現上面的錯誤訊息,看起來是因為 Captive Portal 紀錄的資料表“captiveportal”少了“traffic_quota”欄位。 從 pfsense 的資料說明知道使用 SQLite3 的資料庫系統,再從 github 查到 pfsense 處理 Captive Portal 資料庫相關的原始碼。 從程式碼的片斷有資料表的欄位結構。 使用 SSH 連上 pfsense 選擇8 切換到 shell 環境,並切換到 /var/db,確定資料庫檔案名稱:captiveportalv600.db 執行 sqlite3 進入 SQLite3 工作環境 .open 開啟資料庫,用 alter table add column 插入所需要的欄位與格式 .schema 查詢資料表的結構

IPv6系統(三):伺服器手動設定 & Fortigate SLAAC 設定

一、伺服器手動設定 機房的伺服分為 Ubuntu 及 Windows Server 系列兩種。Windows Server 具有圖形介面(GUI),且與 Win7、Win10 作業系統操作相似,相當容易設定。只要把 IP 相關資訊輸入即可。 Ubuntu linux 系統需要修改系統設定檔(/etc/network/interface) 二、Fortigate SLAAC 設定 以學校中 vlan192 為例,IPv6區段為 2001:288:102b:a5::/64 最主要是 config ipv6 之後的區段,set ip6-address 設定本機作為這個 vlan 的 IPv6 的 IP,set ip6-send-adv、set ip6-other-flag 開啟RA功能,並設定成 DHCP+SLAAC 動態 IPv6 環境。 因為採用 DHCP+SLAAC 的緣故,必須要有 DHCPv6 來發放 DNS 資訊,否則要每一台手動設定才能正確連接網路。 除此之外,Fortigate 上還需要針對 IPv6 做 Routing table 和 IPv6 Firewall Rule 的設定。

IPv6 系列(二):學校網路架構規劃

學校的 IPv6 網段是: 2001:288:102b::/48 ,依照校內現行的網路架構,每個 vlan 區域分配的 IPv6 網段為 2001:288:102b:xxxx::/64 ,其中 xxxx 部份,依照任務與地理位置來編號,以方便辨識與記憶: 0 表伺服器群組 a4 表綜合大樓 vlan1 辦公室區域,a440 表綜合大樓 vlan400 教室區域,a410 綜合大樓 vlan410 A416 偏鄉英文教室,a450 綜合大樓 vlan500 電腦教室區域 a5 為尚志大樓 vlan192 辦公室區域,a510 尚志大樓 vlan100 教室區域(及部份因 IPv4 不足所歸屬的行政電腦) b456 為 B棟 vlan193 辦公室區域,bb20 為 B棟 vlan200 教室區域 現行網路架構為 IPv4 與 IPv6 並存 。伺服器群組部份 關閉 RA 封包 ,以手動設置 IPv6 固定位址。其餘區域設置 SLAAC+DHCPv6 方式配發 IPv6,但其內部重要的骨幹 L3 switches 則手動設定 IPv6 位址。

伺服器預約關機程序

這一兩年機房所在的位置常常遇到公司或大學部電氣維修通知要停電,所以都要事先下伺服器排程關機。但是機房內伺服器有 Linux、Windows Server 等不同的作業系統,排程操作的方式也不一樣,乾脆把操作和指令記下來,方便以後參考。 a. Ubuntu Linux 伺服器用 at 指令,大部份的機器指令是:「at hh:mm yyyy-mm-dd」,然後關機最主要的程式是「sync」和「shutdown -h now」 其中結束<EOF>是按 Ctrl + D 查詢排程工作用 atq 其餘指令操作內容可以參考  鳥哥的 Linux 私房菜 第十五章、例行性工作排程(crontab) b. Windows Server Windows Server 用的是「系統管理工具 〉工作排程器」 關機指令是「System32\shutdown.exe」加參數「-s」 c. pfsense pfsense 防火牆的作業系統是 FreeBSD,排程方法和 Linux 一樣都是用 at 指令 比較要注意的是它是用「at -t yyyymmddhhmm」

SSHFS-Linux 伺服器異地備份

備好了給 Linux 伺服器作異地備份的 NAS。試過 MS 網芳服務,似乎是因 Linux Samba 版本的問題,一直無法順利連線。 還好 NAS 還有提供 SSH,在 Linux 伺服器上使用 sshfs 來掛上網路磁碟。 sudo sshfs [NSA-sshusername]@[NAS-IP]:/[NAS-path] /[Local-path] -o allow_other 只是需要在下一步輸入密碼,而且無法寫成像 fstab 一樣自動掛載。

家用 tplink AP(Archer C1200)設定 ipv6

中華電信已啟用 IPv6 服務,所以將家用 TPlink AP 設定成使用 IPv6。 登入AP管理介面,進入「進階設定」的「IPv6」功能頁 開啟 IPv6 功能,因為中華電信使用 PPPOE 的認證。 在進階設定中,將“前綴授權”切換成「啟用」(因為中華電信的IPv6會動態配發:2001:B011:400A:21C1:99E1:D4C0:5715:7DFE/64子網,這一個子網會動態配發,而且在下方的區域網路設定中用得到,所以切換成啟用會自動設定) 設定完成後,回到狀態頁中查看 IPv6 的狀態: 使用 ipconfig 查看電腦 IPv6 的情形 用瀏覽器檢查 IPv6 是否正確使用( https://test-ipv6.com/index.html.zh_TW )