InfiniteWing

Give me a place to stand on, and I will move the Earth

  • 2017-07-07
    FreeBSD►系統防護

    [FreeBSD] 以ssmtp搭配Gamil實現ssh登入自動提醒

    1. 前言
    2. ssmtp
    3. 測試寄信
    4. 偵測ssh登入
    5. 更多的想法

    前言

    俗話說久病成良醫,經過了好幾次的資安經驗後,筆者也慢慢地養成了疑神疑鬼的性格(?),為了避免這種病情惡化,只好用比較聰明的方法來讓自己安心。而這就是以下這篇文章要介紹的,如何透過排程機制來動態偵測ssh的使用者登入狀況,並同步寄發登入提醒。

    說真的既然電腦是架在公開的網路環境下,那就沒有萬無一失的防禦方式,唯有與時俱進及提高警覺才能避免重傷害…所謂不經一事不長一智,久經沙場的話自然就會有更全面的經驗,而筆者也希望自己能從一而終的在學習上永無止境。

    如果每天都能如此優閒度過該有多好

    ssmtp

    有關ssmtp如何在Linux系統上搭配Gmail寄信的功能已經有許多前輩做了整理,但在FreeBSD方面則沒有太多的討論。筆者參考了這篇文章來進行設定,同時筆者的FreeBSD版本為 - FreeBSD 11.0-RELEASE-p1

    首先開啟你的Server,接著以pkg來安裝ssmtp。(當然你可以用su搭配安裝指令使用,筆者為了避免麻煩就先切換成root身分了。)

    1
    # pkg install ssmtp

    安裝完成後即可切換目錄到/usr/local/etc/ssmtp/下查看相關檔案,接著動手更改ssmtp的設定檔案ssmtp.conf,加入以下設定:

    1
    2
    3
    4
    5
    6
    7
    root=填入你的Gmail帳號
    mailhub=smtp.gmail.com:587
    AuthUser=填入你的Gmail帳號
    AuthPass=填入你的Gmail密碼
    hostname=填入你的Hostname
    UseTLS=YES
    UseSTARTTLS=YES

    測試寄信

    完成之後就可以測試看看ssmtp是否能夠正常執行,記得在測試之前要把對應的587port防火牆打開,不然會出現錯誤。

    1
    # echo "Hello ssmtp" | ssmtp 你的信箱

    一切都沒有問題的話,幾秒鐘過後就有一封熱騰騰的信件出現在你的Gmail信箱中,接著就能來著手設計ssh登入後自動寄提醒信的功能。

    偵測ssh登入

    透過ssh登入的log記錄一般是存在/var/log/auth.log裡。經由筆者查看後發現每個ssh登入成功後,都會有一行”Accepted keyboard-interactive…”的紀錄,同時也會有登入者的username以及來源IP,因此就能開始著手設計Bash shell透過正規表示來偵測登入,像是這樣:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
    log_file="/var/log/auth.log"
    while read line; do
    # replace your own regex here
    regex="(.)*Accepted keyboard-interactive(.)*for(.)*from(.)*port(.)*ssh2(.)*"
    if [[ $line =~ $regex ]]; then
    #登入者的IP
    ip="$(grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' <<< "$line")"
    #接著看你要做什麼處理,這邊筆者是自動寫入一筆信件資料
    #同時透過ssmtp寄送
    fi
    done < $log_file

    詳細的程式碼可以在這裡查看,不過筆者當初沒有考慮到log file會定期壓縮的問題,因此程式還有待改善,如果有更新的話會同步修改這篇文章。(注意,如果要使用筆者的程式,須建立current_login_count_file的檔案,並寫入0)

    如果要搭配排程的話就可以用FreeBSD的Crontab來完成~

    更多的想法

    寄送登入提醒只是最基本應用例子,也可定時寄送伺服器狀況(如硬體溫度或是攻擊警告等..),更甚至是定期把log檔案打包寄至Gmail,避免真的有人入侵了也沒辦法分析log的窘境。

    完結灑花!
    To be continued..
    Posted at 2017-07-07 04:58:39
    Share 留言
    • FreeBSD
    • ssmtp
    • 系統防護
    • 資訊安全
    下一篇
    Hexo文章相關設定
    上一篇
    第一次玩Hexo架站

    InfiniteWing

    總覺得我一直在尋覓著什麼

    最新文章

    • [Performance comparison] CSV reader C/C++ V.S. Python - 2020-07-11
    • [Kaggle] Jigsaw Unintended Bias in Toxicity Classification - 2019-06-28
    • [Kaggle] Instant Gratification - A synchronous Kernels-only competition - 2019-06-21
    • 楓之谷APP開發日誌 ─ 小結 - 2018-08-21
    • WSDM - KKBox's Churn Prediction Challenge - 2018-01-01

    分類

    • Big Data13
      • Cloud Computing3
      • Competition8
      • Deep Learning2
    • FreeBSD1
      • 系統防護1
    • Kaggle1
      • Notebook1
    • Performance comparison1
      • C/C++1
        • Python1
    • 個人作品8
      • 楓之谷APP8
    • 網站設計2
      • Hexo2
    • 論文寫作1

    標籤雲

    Android APP8 Big Data13 C/C++1 CNN2 Cloud Computing3 Deep Learning2 Experience1 FreeBSD1 GCP3 Hexo2 KO1 Kaggle11 Keras2 NLP1 Notebook4 Performance comparison1 Python1 Visualization1 WSDM1 ssmtp1 個人作品8 童年8 第一次3 系統防護1 經驗16 網站設計2 論文寫作1 資訊安全1

    彙整

    • 七月 20201
    • 六月 20192
    • 八月 20181
    • 一月 20181
    • 十二月 20171
    • 十一月 20171
    • 十月 20171
    • 九月 20171
    • 八月 20174
    • 七月 20177
    • 二月 20171
    • 一月 20172
    • 十一月 20151
    • 十月 20152
    • 九月 20151
    © 2021 InfiniteWing all rights reserved.
    Powered by Hexo
  • Home
  • About
  • Archives
  • Work
  • Gallery
  • Private