InfiniteWing

Till Dreams Come True

  • 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

    Where Do We Come From?
    What Are We?
    Where Are We Going?

    最新文章

    • 有感而發 - 2018-08-24
    • 楓之谷APP開發日誌 ─ 小結 - 2018-08-21
    • 龍王的工作 - 2018-02-05
    • WSDM - KKBox's Churn Prediction Challenge - 2018-01-01
    • 在GCP安裝python3,運作pytorch - 2017-12-13

    分類

    • Big Data11
      • Cloud Computing3
      • Competition6
      • Deep Learning2
    • FreeBSD1
      • 系統防護1
    • Kaggle1
      • Notebook1
    • 個人作品9
      • 小說創作1
      • 楓之谷APP8
    • 生活4
      • 心情日記4
    • 網站設計2
      • Hexo2
    • 論文寫作1
    • 輕小說1
      • 心得1

    標籤雲

    Android APP8 Big Data11 CNN2 Cloud Computing3 Deep Learning2 FreeBSD1 GCP3 Hexo2 Kaggle9 Keras2 Notebook4 PCHome個人新聞台2 Visualization1 WSDM1 ssmtp1 個人作品9 夢想1 小說1 心得1 心情4 日常1 童年8 第一次3 系統防護1 經驗14 網站設計2 論文寫作1 資訊安全1 輕小說1 龍王的工作1

    彙整

    • 八月 20182
    • 二月 20181
    • 一月 20181
    • 十二月 20171
    • 十一月 20171
    • 十月 20171
    • 九月 20171
    • 八月 20174
    • 七月 20179
    • 二月 20171
    • 一月 20172
    • 十一月 20151
    • 十月 20152
    • 九月 20151
    • 三月 20141
    • 六月 20131
    © 2020 InfiniteWing all rights reserved.
    Powered by Hexo
  • Home
  • About
  • Archives
  • Work
  • Gallery