CentOS 7.8 上安裝fail2ban

fail2ban 很好用, 可用來監控server的log, 智慧型增加防火牆設定, 阻擋暴力入侵.

但是google查詢 fail2ban ,可以發現一大堆設定, 嘆為觀止. 實際安裝起來真是“容易卻很艱難, 簡單又極複雜”.

最近我用自製的 docker快速建立支援Active Directory的Mail Server , 透過網域主控站, 管理郵件伺服器的帳號, 非常方便.

但是我卻遇到暴力破解帳號密碼的攻擊.

主機在越南, 該ip以前就曾被列入黑名單, 有可能過去"被用來“做壞事, 在吃好幫相報的效應下, 超級有名氣!
想當然這個ip被白道認定是壞主機要防禦, 黑道認定是好主機要入侵, 名符其實"被欺負又被全世界討厭的感覺"

tail 一下maillog , 真是不得了, 隨時隨地都有ip嘗試暴力入侵, 每分鐘大概有千次sasl auth連線入侵紀錄.

由於先前安裝mail server, docker 並沒有加上 --net=host , 所以log看不出來從哪個ip入侵,
因此使用我的docker mail server , 必須加上 --net=host 的參數, 使用fail2ban才有意義.

此外預設 fail2ban 查看的log跟docker不同, 需要注意一下 , fail2ban的 jail.local 參數backend要改用auto.

以下是安裝紀錄:

1. 安裝套件

yum install epel-release -y
yum install fail2ban fail2ban-all fail2ban-systemd
systemctl enable fail2ban

2. 建立jail.local
postfix-sasl : 30分鐘入侵3次就關進監獄,關一天 ,
recidive: 一個月兩次進監獄的累犯關一年

vi /etc/fail2ban/jail.local
###############################
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[postfix-sasl]
enabled = true
bantime  = 86400
findtime  = 1800
maxretry = 3
filter   = postfix[mode=auth]
logpath = <docker maillog>
backend  = auto

[recidive]
enabled  = true
bantime  = 31536000  ; 1 year
findtime = 18144000  ; 1 month
maxretry = 2
logpath = /var/log/fail2ban.log
backend = auto
###############################


3. 啟用fail2ban

systemctl start fail2ban


4. 查看狀態

fail2ban-client status postfix-sasl


5.手動解除

fail2ban-client set postfix-sasl unbanip <IP>

spamassassin阻擋廣告信,請不要用 RDNS_NONE

https://pasztor.at/blog/fixing-rdns_none-with-spamassassin/

原本很開心找到這個判斷 RDNS_NONE , 可以透過檢查該ip是否有反解名稱reverse dns, 若沒有反解名稱, 大概就能確定絕對不是正規的郵件伺服器.

可是後來發現很多時候會造成誤判, 例如寄信的電腦ip是10.x.x.x 是內部ip, 本來就無法取得rdns, 但是還是被認定是RDNS_NONE, 無奈下, 只好把這判斷拿掉.

你必須懂的postfix+amavisd擋廣告順序

就連我都會誤解!
以為只要在postfix的main.cf裡面設定各式各樣的擋廣告方式(包含參考黑名單網站),就可以高枕無憂了,
可是事情並不是我們憨人想得這麼簡單
擋廣告總有順序的.

  1. amavisd 優先
    這部分很重要,有時候很多廣告商,都利用gmail , amazons發送廣告信, amavisd 很容易直接pass, 要解決這問題, 就只能土法煉鋼, 將廣告的網域,email寫到amavisd的黑名單上.
  2. postfix 次要
    若amavisd認定pass , 這邊再怎麼設定都沒用, 因為根本不會跑到這裡來.
    若amavisd沒有認定pass, 也沒認定是廣告(分數不足), 就會跑到這裡來,

我的設定, 就是讓amavisd可以定義黑白名單, 接下來才是設定postfix本身的名單限制
推薦看一下我製作的docker mail server設定
https://github.com/WilliamFromTW/docker-Postfix-AD

啟用postgrey心得

因為postgrey的機制會造成收信延遲, 所以必須設定白名單,與自動白名單,讓常用的郵件不再受限制.
1.白名單可在/etc/postfix/postgrey_whitelist_clients.local 新增
2.自動白名單,以centos 7為例子, 可在 /etc/sysconfig/postgrey 新增, 意指35天內,只要成功三次,就會一直是白名單成員
POSTGREY_OPTS="--delay=60 --auto-whitelist-clients=5 --max-age=35"

tar 備份檔案,成功後刪除原檔案

將特定目錄下的所有檔案壓縮,
原本直接使用bzip2就可以了,直接將檔案壓起來, 但是我遇到nfs掛載,權限設定的限制,因此無法使用.
後來改用tar, 可以成功產生一個新的壓縮檔案, 但是原本檔案卻還在,會變成多餘
爬文發現tar有刪除原檔案的指令, 因此記錄下來

!/bin/sh
cd /u3/backup/exp/`date +'%d'`
for fich in *.dmp; do
tar -jcvf $fich.tar.bz2 --remove-files $fich
done

網域主控如何限制win 10的microsoft store app

windows 10帶來了新的app安裝方式 microsoft store, 有點類似 mac 的store ,
但是網域主控卻無法針對其中的app進行管控(除非全部都用win10 enterprise), 這對資訊安全有一定程度的影響,
畢竟漏洞多, 容易被入侵.
因此早期都採用整個microsoft store阻擋的方式, 禁用全部的app

但是問題來了, 有些好用的app也因次被鎖住無法使用, 這很是困擾
因此我來個土法煉鋼的方式, 避開microsoft的app(除了microsoft開頭字眼的app外,全部限制),
有點粗暴, 但目前也想不出好方法

,

powershell 寄送email(tls, port 587)

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
$EmailToAddresses = @("test1@test.com", "test2@test.com")
$EmailTo = ""
$EmailFrom = "it@test.com"
$Subject = "subjects"
$Body = "FYI"
$SMTPServer = "192.1.2.1"
$filenameAndPath = "C:\sayhello\sayhello.csv"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
foreach ($EmailTo in $EmailToAddresses)
{
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient.Send($SMTPMessage)
}

advanced installer 匯入vs 2019 出現 System.Runtime.CompilerServices.Unsafe 錯誤

好久沒有打包自己開發的程式,尤其是msi 或是 msix 方便讓網域主控站派送,
因此試用了advanced installer 17.5, 欲藉由匯入visual studio 2019 專案, 打包成msi檔案,

但是出現了,以下錯誤,

.ctor could not load file or assembly system.runtime.compilerservices.unsafe 4.0.4.1

原以為是vs的問題, 後來爬文終於找到解法, 這個問題似乎出現很久, advanced installer 呈現已知但是無解的狀態,看來真的很複雜.
步驟1. 安裝.net framework 4.7.2 (請與vs專案參考版本同步)
步驟2. 以管理者身分執行, developer command prompt for vs 2019

developer command prompt for vs 2019

步驟3. 輸入以下指令(請與vs專案參考版本同步)

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll"

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll"

1 2 3 ... 40