正規表示式的測試網站-是必備良藥啊

正規表示式很強大, 咖啡偶最近重整郵件伺服器的檔廣告規則,發現以往的作法 hash 彈性不夠, 必須改用正規表示式 pcre , 但又不是很熟, 而且在不常用的情況下, 背起來是不太可能, 因此需要找些能提供正規表示式的檢測網站, 其實意外的多, 以下推薦的網站

https://regex101.com

這樣就能把postfix 的相關規則, 從 hash 改成 pcre 囉

 

 

Postfix 擋廣告的限制設定 sender, client, and recipient restrictions

Postfix 擋廣告的限制設定, 重要的有三個,簡稱三兄弟:

老大: smtpd_sender_restrictions 

這部份著墨不多, 基本上就是檢查寄件者格式是否正確, 是第一階段限制

老2: smtpd_client_restrictions 

這個設定重點在於限制主機名稱 或是 ip 

例如:

check_client_access hash:/etc/postfix/sender_mail_hostname_check

代表你必須正確地, 將要限制的郵件主機名稱,或是ip (不能使用萬用字元), 寫入sender_mail_hostname_check 這個檔案裡面, 才能限制該主機.

接著再加上這個很威猛的設定 reject_unknown_client_hostname

利用dns方式, 來驗證主機名稱是否相符正, 否則就拒絕, 舉例來說:

若該郵件主機 ip 是1.2.3.4 , 且dns查詢結果是 xxx.com , 可是實際上 xxx.com 正向查詢不是 1.2.3.4 , 就會被擋下來!

ps. 1.2.3.4 可以宣稱是yyy.com 這個網域的郵件主機, 跟實際dns是xxx.com可以不一樣的.

光是這一招就能解決大部分廣告信, 因為廣告主機都會胡亂宣稱.

當然也造成很多誤判狀況, 因為有些IT人員並不會很認真處理主機ip的反解.

** reject_unknown_client_hostname 可以改用 reject_unknown_reverse_client_hostname 來替代, 只要反查不要查不出主機名稱 , 就不會擋下來, 比較寬鬆.

老3. smtpd_recipient_restrictions 

這部份就很多設定了, 重點在於

check_sender_access hash:/etc/postfix/sender_email_check

sender_email_check 紀錄了寄件者郵箱或是網域是否可以限制

與老2不同的是, 這裡可以使用萬用字元, 因為阻擋的不是ip , 而是email

請點此參考編號 10023 範例

postfix 檢查檔頭header_checks

這也是postfix老掉牙的阻擋廣告信方式, 偶爾可以用一下,

大家都知道postfix 可以檢查檔頭header_checks, 然後阻擋

在 /etc/postfix/main.cf 設定一下即可啟用功能

header_checks = regexp:/etc/postfix/header_checks

接下來修改規則檔案 /etc/postfix/header_checks, 設定要阻擋的字串,

這裡比較有趣的是, 如何定位字串? 總共有兩個地方要注意的:

1.是”.”與”*” 後面加上要定位的字串 , 再加上”/” , 代表搜尋多個相同的字串,

例如 /^Subject:.*AV/ DISCARD

找出所有標題是AV的字串

2.中文需要考慮UTF-8, GBK, BIG5,然後進行Base64編碼

例如要定位”警告”這個字串, 有可能是utf8 , gbk, big5 三個

/^Subject:.*6K2m5ZGK/ DISCARD
/^Subject:.*vq+45g==/ DISCARD
/^Subject:.*xLWnaQ==/ DISCARD

編碼服務可參考
https://www.base64encode.org

 

ubuntu 安裝shadowsocks用戶端程式

之前咖啡偶提到如何在docker安裝shadowsocks 伺服器 , 這次就來個如何在ubuntu 安裝shadowsocks用戶端程式, 這樣就可以技術翻牆囉

方法一:

1.安裝套件

sudo apt-get install python-pip
sudo apt-get install python-setuptools m2crypto
sudo pip install shadowsocks

2.執行

sslocal -s <ss server ip> -p <ss server port> -k "<password>" -l <local port> -t 600 -m aes-256-cfb

方法二:

1.安裝套件

sudo apt update
sudo apt install shadowsocks-libev

2.執行

ss-local -s <ss server ip> -p <ss server port> -k "<password>" -l <local port> -t 600 -m aes-256-cfb

方法一與方法二可用檔案的方式紀錄

sslocal -c xxx.json -v -u 或是 ss-local -c xxx.json -v -u

xxx.json

{
  "server": "yourip",
  "server_port": your port number,
  "local_address": "127.0.0.1",
  "local_port": "local port",
 "password": "your password",
  "timeout": 300,
  "method": "aes-256-cfb",
  "fast_open": true,
  "prefer_ipv6": false
}

瀏覽器設定

瀏覽器安裝plugin, 請到這裡找對應的安裝, 有chrome與firefox
https://github.com/FelisCatus/SwitchyOmega/releases/
咖啡偶使用socks5, 花點時間研究一下安裝與設定就好了

fortigate防火牆Log應用

咖啡偶上班的公司使用fortigate 80c , 已經很久沒更新了, 也沒使用到一些特異功能, 甚至vpn也關掉避免安全性問題發生.

可是呢, 公司高層忽然想看同仁上網行為, 身為IT人員當然要接受而且拒絕,

何謂接受呢?就是我能做到基本綜合統計,例如流量,瀏覽網頁數量與上網時間.

其實就是委婉拒絕, 理由:

1.拿個資法來向上管理

2.以系統老舊,無法提供詳細的網站行為分析( 除非花個2,30萬買設備,外加每年15%的維護費用,這時候通常上頭就退縮了).

接下來, 若高階主管想看統計資料的時候跟我要,而不是隨時可以看,並且要給我一個合理的理由,例如:上班時間上網,然後狂加班之類的.

好了, 話不多說, fortigate 能將log透過udp 514 port導到能接收的主機上, 咖啡偶使用 CentOS 6接收,

如何開啟fortigate就不多講了, 因為版本複雜. 這裡只講CentOS6設定

修改/etc/rsyslog.conf, 開啟udp 514監聽功能,並且寫下過濾規則

#### MODULES ####
# 聆聽 UDP/514
$ModLoad imudp
$UDPServerRun 514

 

#### RULES ####
# 若 facility 為 local6 且內容含 traffic  記錄到 /var/log/fortigate.log
if $syslogfacility-text == ‘local6’  and $msg contains ‘traffic’  then /var/log/fortigate.log

這樣相關的log都會被記錄下來, 再使用Sawmill這套軟體分析fortigate的log, 就可以交差了

lubuntu 18.04 調整解析度, 超越筆電原本的解析度限制

咖啡偶的chromebook一直因為google 沒有更新到能夠執行play 商店android app的功能, 因此認為沒有必要用chrome作業系統, 轉而一直使用lubuntu 或是 ferora 作業系統.

但是問題來了,現在桌機幾乎都是1920×1080解析度, 用這個筆電連進去, 就很麻煩.

剛好同事拿以前的eee pc裝lubuntu , lubuntu預設必須有1024×768的最低解析度限制, 但eee pc只有800×600.

這時候就必須手動調整筆電的解析度:

1. 執行xrandr找出筆電的outpu代號

2.修改解析度成1920×1080

我的output代號是 eDP-1

xrandr –fb 1920×1080 –output eDP-1 –mode 1366×768 –scale 1.4×1.4 –pos 1920×1080 –panning 1920×1080

解析度改成1920×1080之後, 等比例縮小後,會觸發panning變成不能用.

後來測試好多次,發現將以上的 1.4改成1.41就可以騙過系統,不觸發自動panning的功能

ps. scale 1.41 是由1920/1366或是1080/768得來的, 大約1.40xxx, 請無條件進位到小數第二位變成1.41,

以下是一些修改建議(以1366×768)為例子:

1. 解析度改成 1502×844 (增加1.1倍)

xrandr --fb 1502x844 --output eDP-1 --mode 1366x768 --scale 1.1x1.1 --pos 1502x844 --panning 1502x844

2. 解析度改成 1639×921 (增加1.2倍)

xrandr --fb 1639x921 --output eDP-1 --mode 1366x768 --scale 1.2x1.2 --pos 1639x921 --panning 1639x921

3. 解析度改成 1920×1080 (增加1.41倍)

xrandr --fb 1920x1080 --output eDP-1 --mode 1366x768 --scale 1.41x1.41 --pos 1920x1080 --panning 1920x1080

最後以1366×768安裝ElementaryOS為例子寫成一個scripts,方便選擇變成哪個解析度

#!/bin/bash
LISTS=`xrandr | grep " connected " | awk '{ print$1 }'`
#for sList in $LISTS;
select sList in $LISTS;
do
  echo "Display: $sList selected"
  break;
done

select sDisplay in 1366x768 1502x844 1639x921 1920x1080; 
do
  echo "Display mode : $sDisplay"

  case "$sDisplay" in
    "1366x768")
       xrandr --fb 1366x768 --output $sList --mode 1366x768 --scale 1x1 --pos 1366x768 --panning 1366x768 
    ;;
    "1502x844")
      xrandr --fb 1502x844 --output $sList --mode 1366x768 --scale 1.1x1.1 --pos 1502x844 --panning 1502x844	
    ;;
    "1639x921")
      xrandr --fb 1639x921 --output $sList --mode 1366x768 --scale 1.2x1.2 --pos 1639x921 --panning 1639x921 
    ;;
    "1920x1080")
    xrandr --fb 1920x1080 --output $sList --mode 1366x768 --scale 1.41x1.41 --pos 1920x1080 --panning 1920x1080
  esac;

  break;
done

1 ... 49 50 51 52 53 ... 58