擴容xfs,ext4(不使用lvm)

linux vm我很很老派的喜歡用純粹的ext4 , xfs 檔案系統, 但是時常遇到磁碟空間不足的問題,
此時讓VM 伺服器加大空間, 再服用以下兩個指令:

1. 安裝擴容軟體
yum install cloud-utils-growpart -y
2. 執行擴容(xfs只能增大, 不能減少)
growpart /dev/sdb 1
代表讓/dev/sdb1擴充到最大
3. 生效 
假設/dev/sdb1 mount 到 /mnt/docker
以下指令可以立即生效
xfs_growfs -d /mnt/docker

docker安裝multiOTP, 讓windows登入更安全(MFA)

我們不屎用微軟的MFA(Multi Factor Authentication), 原因如下:

Azure AD MFA 免費使用, 但是很貴, 哈哈, 於是就pass

multiOTP(https://github.com/multiOTP/multiotp/wiki) 是個開源免費的 MFA server & client 專案,
其實我們也只是要讓登入更安全, 目標就是手上多個驗證器, 可以輸入動態密碼, 多個保障.
不囉嗦, 直接寫下我的安裝方法

安裝開源的 MFA Server

  1. 準備docker環境
  2. 下載最新檔案
    https://download.multiotp.net/multiotp_5.8.1.0.zip
    解開檔案
  3. 修改Dockerfile
    加上 RUN echo "deb http://ftp.de.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/docker.list
    **這是5.8.1.0的bug

修改Dockerfile這步驟以後不需要做, 下個版本會解決


4. 編譯images
docker build . -t mymultiotp:latest

5. 啟動server

docker run --mount source=multiotp-data,target=/etc/multiotp -p 8080:80 -p 8443:443 -p 1812:1812/udp -p 1813:1813/udp -d mymultiotp:latest

8080 與 8443 請依實際情況修改

6. 網頁輸入 http://<docker serverr ip>:8080

登入後, 新增測試帳號 administrator (請注意, 這個帳號是windows 10本機可登入帳號 , 不限定administrator)

手機安裝google authenticator


安裝google驗證器, 刷入帳號的QR code , 請選擇帳號後點選 Print


在windows安裝Credential Provider

https://download.multiotp.net/credential-provider/
https://download.multiotp.net/credential-provider/multiOTPCredentialProvider-5.8.1.0.exe

輸入windows的帳號與密碼, 還有google驗證器的密碼

遠端登入

此時遠端登入第一次登入不用otp密碼, 但是會出現第二是要求輸入otp密碼,

這是原本遠端桌面連線並無法一開始就支援otp的緣故,目前無法解結

MFA server 與 網域主控連線

docker 登入已安裝好的 mfa server 然後輸入以下指令

 multiotp -config default-request-prefix-pin=0
 multiotp -config default-request-ldap-pwd=1
 multiotp -config ldap-server-type=1
 multiotp -config ldap-cn-identifier="sAMAccountName"
 multiotp -config ldap-cn-identifier="sAMAccountName"
 multiotp -config ldap-group-attribute="memberOf"
 multiotp -config ldap-ssl=1
 multiotp -config ldap-port=636
 multiotp -config ldap-domain-controllers=ldaps://網域主控伺服器:636
 multiotp -config ldap-base-dn="OU=xxxx,DC=test,DC=com"
 multiotp -config ldap-bind-dn="cn=ldap,cn=Users,dc=test,dc=com"
 multiotp -config ldap-server-password="password"
 multiotp -config ldap-network-timeout=10
 multiotp -config ldap-time-limit=30
 multiotp -config ldap-activated=1
 multiotp -config ldap_default_algorithm=totp
 multiotp -debug -display-log -ldap-users-sync
  1. 若成功, 網頁登入MFA server就能看到網域使用者, 也可以派送QR code給該使用者使用
  2. 定期執行同步指令
multiotp -debug -display-log -ldap-users-sync

nextcloud 安裝流程圖套件drawio注意事項

drawio 相容m$ visio , 而且免費, 支援nextcloud, 達到線上繪製流程圖的功能.

雖說drawio還不是很穩定,但是一直在更新, 已經能上線讓公司同仁使用,

透過官方安裝drawio套件並且啟用後, 以下為注意事項:

  1. drawio預設副檔名為xml(這超奇怪的), 請將副檔名改成drawio, 並且設定mimetype
複製設定檔cp resources/config/mimetypemapping.dist.json config/mimetypemapping.json
修改 config/mimetypemapping.json 加上以下設定
"drawio": ["application/x-drawio"]
然後執行更新指令
sudo -u www-data php occ maintenance:mimetype:update-js
sudo -u www-data php occ maintenance:mimetype:update-db
若是docker請執行
docker exec --user www-data nextcloud php occ maintenance:mimetype:update-js
docker exec --user www-data nextcloud php occ maintenance:mimetype:update-db
然後再到nextcloud的設定, 重新勾選drawio的相關設定

2. 若drawio檔案分享連結, 若想要讓大家直接開啟編輯畫面, 需要修改連結

https://xxx/s/YoJWBkg7EgiyXpPdd
改成
https://xxx/apps/drawio/s/YoJWBkg7EgiyXpPdd

讓jitsi meet需要密碼登入

以 主機名稱 meet.test.com 為例子, 以下只要是meet.test.com皆須改成真實的主機名字
1. 修改 /etc/prosody/conf.avail/meet.test.com.cfg.lua

VirtualHost "meet.test.com"
         authentication = "internal_plain"
         ...

VirtualHost "guest.meet.test.com"
         authentication = "anonymous"
         c2s_require_encryption = false
         modules_enabled = {
             "bosh";
             "pubsub";
             "ping";
             "speakerstats";
             "turncredentials";
             "conference_duration";
         }

2. 安裝module storage_memory模組(optional)

apt install -y mercurial
mkdir ~/temp && cd ~/temp
hg clone 'https://hg.prosody.im/prosody-modules/' prosody-modules
cp prosody-modules/mod_storage_memory/*.lua /usr/lib/prosody/modules/.

3. 修改 /etc/jitsi/meet/meet.test.com-config.js

var config = {
     …
     hosts: {
             …
             domain: 'meet.test.com',
             anonymousdomain: 'guest.meet.test.com',
             …
         },
         …
 }

4. 修改 /etc/jitsi/jicofo/sip-communicator.properties

org.jitsi.jicofo.auth.URL=XMPP:meet.test.com

5. 新增可登入的帳號密碼

prosodyctl register william meet.test.com mypassword

6. 重開服務

systemctl restart {prosody,jicofo,jitsi-videobridge2,nginx}

這樣一來, 只有第一個登入的人需要輸入帳號密碼, 其他使用相同網址不需要密碼就可以登入(來賓帳戶guest)

查詢oracle 11g匯出檔案的字元編碼

最近遇到一個搞笑的烏龍, 公司匯出的oracle dmp檔案, 進行還原測試的時候, 無法匯入到測試區, 錯誤訊息為:

IMP-00037: Character set marker unknown

經過爬文,有可能是字元編碼不一致, 網路上提供的解方是:

 cat xxx.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

這樣可以查出oracle系統的字元編號, 再以字元編號查詢編碼名稱

SQL> select nls_charset_name(to_number('上個指令查出的字元編號','xxxx')) from dual;

這樣的指令應該是可以查出來, 若查不出來就可能是檔案損毀或是我這樣的烏龍,

我匯出備份的時候, 加上tar以及bz2壓縮

所以原檔案變成 xxx.dmp.bz2, 完全看不出來有tar , 因此解壓的時候我忘記了只有解bz2 , 解出來的xxx.dmp 其實不是原本的dmp檔案, 還需要解開tar這個動作, 哈哈

mail出現好奇怪的log ".... rip=::1, lip=::1, secured, session" problem

有時候出現就一大堆, 最後出現too many open files , 有夠怪異, 只好讓限制 imap 與 pop3 只 listen 特定的 ip (ipv4) , 這樣就可以避掉疑似ipv6嘗試入侵的問題, 我自己是覺得可能是系統與dovecot之前某段出了狀況.
請修改 /etc/dovecot/conf.d/10-master.conf

service imap-login {
   inet_listener imap {
     address = x.x.x.x y.y.y.y
     #port = 143
   }
   inet_listener imaps {
     address = x.x.x.x y.y.y.y
     #port = 993
     #ssl = yes
   } 
}
service pop3-login {
   inet_listener pop3 {
     address = x.x.x.x y.y.y.y
     #port = 110
   }
   inet_listener pop3s {
     address = x.x.x.x y.y.y.y
     #port = 995
     #ssl = yes
   }
} 


1 2 3 ... 35