跳到主要內容

發表文章

目前顯示的是有「SSH」標籤的文章

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上。但是需求是,...

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

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 一樣自動掛載。