正規表示式的測試網站-是必備良藥啊
正規表示式很強大, 咖啡偶最近重整郵件伺服器的檔廣告規則,發現以往的作法 hash 彈性不夠, 必須改用正規表示式 pcre , 但又不是很熟, 而且在不常用的情況下, 背起來是不太可能, 因此需要找些能提供正規表示式的檢測網站, 其實意外的多, 以下推薦的網站
這樣就能把postfix 的相關規則, 從 hash 改成 pcre 囉
正規表示式很強大, 咖啡偶最近重整郵件伺服器的檔廣告規則,發現以往的作法 hash 彈性不夠, 必須改用正規表示式 pcre , 但又不是很熟, 而且在不常用的情況下, 背起來是不太可能, 因此需要找些能提供正規表示式的檢測網站, 其實意外的多, 以下推薦的網站
這樣就能把postfix 的相關規則, 從 hash 改成 pcre 囉
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
這也是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
SPF 是一種透過dns設定, 用於認證郵件伺服器是否合法, 進而阻擋拉圾郵件的機制, 咖啡偶管理的郵件伺服器老舊了, 從CentOS 6 改成CentOS7 , 安裝spf的方式不一樣, 因此記錄下來,
請進 10021號 IT地窖練功吧
之前咖啡偶提到如何在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 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, 就可以交差了
咖啡偶的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
CentOS 7 預設防火牆的區域為public , 若我們有兩個網路卡, 一個接內部一個接外部.
這時候就必須區分內外, 對外還是public , 對內就是trusted
使用ifconfig 找出對內網卡代號 xxx
firewall-cmd --permanent --zone=trusted --change-interface=xxx firewall-cmd --reload