跳到主要內容

發表文章

入侵 IP 區段的收集(持續更新)

 前兩篇的 SSH 入侵分析,把收集到的 IP 區段提供出來給需要的人使用: 2021/02/01更新 1.53.0.0/16 1.169.0.0/16 14.98.64.0/19 14.160.0.0/11 14.224.0.0/11 31.201.0.0/16 31.220.0.0/22 36.66.176.0/20 37.59.0.0/16 37.99.248.0/21 42.112.224.0/20 45.55.0.0/16 46.101.0.0/16 49.51.0.0/16 49.232.0.0/14 51.15.0.0/17 51.77.0.0/16 51.161.0.0/16 58.187.0.0/20 60.191.0.0/16 61.90.0.0/16 61.177.0.0/16 63.168.168.0/23 64.225.0.0/17 65.49.0.0/17 65.128.0.0/11 66.186.3.0/24 67.0.0.0/13 67.207.64.0/19 67.216.192.0/19 68.183.0.0/16 68.190.192.0/18 71.208.0.0/12 72.160.0.0/15 75.160.0.0/12 76.0.0.0/13 81.68.0.0/15 81.161.63.0/24 82.50.0.0/16 84.2.0.0/15 84.128.0.0/10 87.208.0.0/13 88.88.0.0/13 91.241.19.0/24 91.192.100.0/22 101.32.0.0/16 101.80.0.0/12 101.108.0.0/15 103.21.0.0/16 103.25.0.0/16 103.45.0.0/16 103.81.0.0/16 103.84.0.0/16 103.111.0.0/16 103.217.0.0/16 103.231.0.0/16 103.248.28.0/22 106.12.0.0/15 106.52.0.0/14 106.75.0.0/16 111.93.0.0/16 111.229.0.0/16 111.230.0.0/15 112.80.0.0/13 112.160.0.0/11 113.200.0.0/15 114.134.24.0/2...

入侵紀錄分析

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

linux 指令篩選嚐試入侵紀錄

近期在家裡利用 Raspberry pi 4 架了一台 Ubuntu Server 作為未來工作之用,因為要在外面也能連線,開了 SSH(22)、HTTP(80) 的服務,也在家用的AP(tplink)設定了虛擬伺服器轉 Port 進入。雖然目前家裡使用的中華電信光世代是用固定 IP 的 PPPOE 帳號,因為 Tplink 的 AP 有提供 DDNS 的功能,還特地註冊使用,這樣子比較好記憶。 伺服器架好了,不可避免了會有許多人利用 SSH 來嚐試入侵,為了使用的需求也無法使用白名單的方式來設定防火牆規則,只能利用紀錄檔來捉入侵的 IP,再配合 whois 來封鎖一整個 IP 區段。 /var/log/auth.log 嚐試入侵的資訊在會列在 /var/log/auth.log 紀錄檔中,從裡面找會有點吃力,所以要再利用指令的方式來想要的資訊篩選出來。 cat /var/log/auth.log | grep  'from invalid user' auth.log 會用固定的方式紀錄入侵密碼錯誤的資訊,所以利用 grep 'from invalid user' 來過濾所要的資訊。仔細觀察 auth.log 檔,同一個密碼錯誤的資訊會留下多筆紀錄,只要找到篩選用的關鍵字都可以在 grep 中使用,只是目前選定的方式是帳號和 IP 放在一起,比較容易作後續的處理。 cat /var/log/auth.log | grep 'from invalid user' | awk '{print $11, $10}' 因為是固定格式的資訊,帳號資訊在第10欄位,IP 資訊在第11欄位,所以用 awk '{print $11, $10}' 就可以把我們要的內容取出來。 cat /var/log/auth.log | grep 'from invalid user' | awk '{print $11, $10}' | sort 原始紀錄是時間序列,等我們用 awk 篩選完後,內容順序變得無意義也閱讀困難,再利用 sort 作排序,資料就會比較容易閱讀, 而且也可以發現入侵的 IP 是使用何種手法,是比較高級的針對性攻擊?還是利用字典密碼攻擊? 建議此時的資訊就可以...

Apache 防止 bot 的設定

1、  Options All -Indexes RewriteEngine on # Block Bad Bots & Scrapers SetEnvIfNoCase User-Agent "Aboundex" bad_bot SetEnvIfNoCase User-Agent "80legs" bad_bot SetEnvIfNoCase User-Agent "360Spider" bad_bot SetEnvIfNoCase User-Agent "^Java" bad_bot SetEnvIfNoCase User-Agent "^Cogentbot" bad_bot SetEnvIfNoCase User-Agent "^Alexibot" bad_bot SetEnvIfNoCase User-Agent "^asterias" bad_bot SetEnvIfNoCase User-Agent "^attach" bad_bot SetEnvIfNoCase User-Agent "^BackDoorBot" bad_bot SetEnvIfNoCase User-Agent "^BackWeb" bad_bot SetEnvIfNoCase User-Agent "Bandit" bad_bot SetEnvIfNoCase User-Agent "^BatchFTP" bad_bot SetEnvIfNoCase User-Agent "^Bigfoot" bad_bot SetEnvIfNoCase User-Agent "^Black.Hole" bad_bot SetEnvIfNoCase User-Agent "^BlackWidow" bad_bot SetEnvIfNoCase User-Agent "^BlowFish" bad_bot SetEnvIfNoCase User-Agent "^BotA...

Arudino 教學(五):開關 + 數位輸入 + IF 語法

本次實作將使用 開關元件 ,並運用 Arduino 的 數位輸入 功能偵測信號,依照輸入信號執行 LED 燈號程序。內容比較複雜,將分次分階段進行。 本次實作每個同學需要抄寫「實作目的」、「線路說明」、「程式說明」與「進階」作為實作報告。 實作目的: 正確使用開關元件,並架構電位測量電路 正確使用 Arduino 數位輸入電路 使用 IF 語法,偵測數位輸入信號進行 LED 程序 階段一:認識開關元件 零件包內附的開關是4支腳位,分成兩組,從背面觀察(上圖下),從條紋來辨識,左邊2支腳位是互通的,右邊2支也是;而必須按下開關,左右兩邊才會連通。 階段二:Arduino 數位輸入與電位測量電路 Arduino 數位輸入是電位訊號而非電流,所以 不可以直接將電流直接導入 Arduino 腳位 。必須架構電位測量電路來達成數位訊號輸入。 本階段使用 Arduino UNO 的 6 號腳位 作為數位輸入,按下開關之後控制 內建 LED 。 digitalRead(6) :讀取 6 號腳位的訊號,高電位 HIGH,低電位 LOW 階段三:由開關控制 LED 程序 現在開始要結合前兩階段以及上個實作,由開關來啟動 LED 閃動程序。由 6 號腳位 接受數位輸入訊號。利用 IF 語法控制 LED 程序。LED 電路和程序和上一個實作相同。 電路圖: 線路說明: 8、10、12號腳位組成共陰極 LED 線路 6 號腳位連接由開關元件所組成的電位測量線路,作為數位輸入端 程式截圖: 程式說明: int var = 0; 表示宣告一個變數 var 作為後續讀取輸入訊號用 在 setup 區塊設定 6 號腳位為數位輸入端,8號、10號、12號腳位為數位輸出端 在 loop 區塊中,利用 var = digitalRead(6); 讀取 6 號腳位訊號到變數 var 中 利用 IF 語法,判斷變數 var 是否為 HIGH (高電位)。若是則開始執行 LED 程序 進階: 變更間隔時間與次數 增加 LED 或 燈號變化 使用雙分支結構增加變化 補充說明:IF 語法 if (判斷式){     …     (成立時執行的程序)     … }  雙分支結構 if (判斷式){     …   ...

DNS 新增 CAA 紀錄

學校的網頁伺服器採用 HTTPS 模式時,均使用 Let's Encyrpt 認證服務。大多數的伺服器都依 Let's Encrypt 官網的說明,使用 Certbot 用戶端自動於過期前更新。 今天遇到 6/16 到期的 radius.tsh.tp.edu.tw 出現久違的 https 警告,發現該主機的 Certbot 並沒有自動更新。查詢相關資料後,用 sudo certbot renew 手動指令更新,出現下列的錯誤: 發現是 DNS CAA 錯誤問題。 摘錄「 https://ezbox.idv.tw/112/dns-caa-protec-ssl-tls-certificate/ 」說明: 目前全球簽發 SSL/TLS 憑證的機構已超過百個 要避免這些機構在某些情況下錯誤簽發憑證 (WoSign曾發生過) 就需要在簽發憑證前做一些檢查動作 在 RFC 6844 中定義了 DNS CAA Record 透過 DNS 的 CAA 紀錄,申明網域授權哪些機構可以簽發該網域的憑證 如果沒有設定 CAA 紀錄,則代表任何機構都可以簽發該網域的憑證 2013年1月 CA可以決定是否檢查該記錄,非強制性 2017年3月 CA/Browser 論壇決議 2017年9月起強制所有憑證發行機構在簽發憑證前必須檢查 DNS CAA 紀錄 如果是代管 DNS,則現行多數的DNS代管單位都可以直接設定 CAA 紀錄 若無法新增 CAA 紀錄,只能聯繫代管服務商要求提供協助設定 如果是自行管理DNS,則需要在自己的 DNS Server 上自行設定 解決方式只要用 SSLMate 提供的 CAA Record Helper 來協助產生紀錄,再輸入 BIND9 設定檔中即可。

新技能習得:Proxmox VE