跳到主要內容

發表文章

目前顯示的是 2021的文章

CodeIgniter4 - PHP 程式開發框架

 因為最近比較常寫 PHP 程式,老是用舊方法開發已經有點發現 CP 值不高,想找些開發框架,也就是 MVC 框架來快速開發。 PHP 的 MVC 框架很多,相關資訊可以參考: php常用的7大框架 研究過 laraval、ThinkPHP、CodeIgniter等框架,最後選擇 CodeIgnite 4 (CI 4)來作為自己程式開發框架。 主要是因為自己已習慣使用 Smarty 作為網頁模版引擎,有找到在 CI4 中使用 Smarty Engine 的範例,其他的框架不是沒有相關範例,就有其自帶的模版引擎需要再學一遍。 所謂 MVC 架構:M 表 Model,就是專門處理資料庫相關的動作;V 表 View,處理網頁渲染,也就是慣用的 Smarty;C 表 Controller,處理所有程式動作。在 Controller 前面還有一個 Router 的角色,負責解析網址或輸入參數(一般為 GET),並發送到相對應的 Controller 或 觸發相對應的 Controller 去作處理。 以前自己寫的程式已經有一些些 MVC 的影子了,利用網址呼叫一支支 PHP 程式,裡面用 action 或 func 變數來執行對應的 function 程序,最後用 Smarty 作網頁渲染。所以轉換成 MVC 框架比較無痛,而且 MVC 框架多一個專門處理資料庫的 Model,節省了許多寫 SQL 語法的時間。 CodeIgnite 4 CodeIgnite 台灣: https://codeigniter.tw/ 利用 composer 新增專案:composer create-project codeigniter4/appstarter <project-name> 以 php cli 建立 model, controller 等:php spark make:[controller | model] 建立好專案後,CI 4 會在專案資料夾中建新必要的資料  app 資料夾中就是所有程式的核心,Router, Controller, Model, Views 和必要的設定檔都在其中。 public 資料夾是專案網頁的 root,所以要在 apache 等網頁伺服器設定將網頁路徑指到那邊。 writable 資料夾有關 logs, session 等系統儲存的資

Apache 、PHP 安全性設定

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

利用 fail2ban 來達到自動封鎖的功能

繼前幾篇有關分析嚐試入侵紀錄的文章後,因為要一直分析和利用 whois 來抓 ip 區段,再寫到 iptables 防火牆規則去做封鎖的動作太累人了,所以利用 fail2ban 套件來達到自動封鎖的功能。 fail2ban 利用分析紀錄檔中固定的登入失敗的訊息,來抓取嚐試入侵的 ip,作法和前幾篇所講的手法是一樣的,只不過是程式來自動執行(好像是用 python 寫的,有空再來研究看看這些程式的寫法),加上設定檔指定各種封鎖相關的參數。 網路上相當多技術文章,就不特別把安裝和設定的過程寫出來了。 Ubuntu 16.04 安裝 fail2ban 如何在Ubuntu Server 18.04上安裝fail2ban How to Install and Configure Fail2ban on Ubuntu 20.04 [ Linux ] – 主機基本防護 防止爆力登入 fail2ban 簡易用法 Ubuntu 中使用 fail2ban 針對大量 access 做判斷及阻擋

資安資料收集-釣魚手法實例

最近才和同事們討論到釣魚等社交工程的手法,正好就發生了國泰世華銀行的案件,留存下來作為資訊安全的教材。 還有在市府的電子郵件裡,也發現有偽裝釣魚郵件,不知道是真的資安事件?還是演練?

入侵 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/23 11

入侵紀錄分析

 上篇利用 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 是使用何種手法,是比較高級的針對性攻擊?還是利用字典密碼攻擊? 建議此時的資訊就可以