2024/12/20

Proxmox Datacenter Manager 發表了第一個Alpha
裝起來看了一下
目前還沒什麼功能
pbs也不能管
等正式版出來再玩吧

2024/12/15

最近一直需要在grafana上畫圖
之前一陣子用的是csv檔的方式
把csv檔放在 web server上就可以了
在更之前也有使用influxdb來放資料
昨天想說可以用sqlite來試試
OS要安裝 sqlite
grafana要安裝sqlite的plugin
但碰到了時間格式的問題
這個之前使用 csv檔時也碰過 當時也試了好久
csv可以使用的日期時間格式如下

2024-12-16T07:34:01+0800
2024-12-16 07:34:01

sqlite 文件上說只能使用  RFC3339 的格式 但實際上這個格式無法被解析
必須要使用 iso-8601 才行
linux date 指令如下

date --iso-8601=seconds

產生格式如下

2024-12-17T22:17:01+08:00

還有一個要注意的是在下方的 sql指令欄位中 
記得要在 format as 選 time series 然後把 日期時間的欄位加進去 這裡是 time
醬才能被解析 也才能成功畫圖













2024/11/29

PVE 的 LXC 使用 almalinux 9 時

把 開几需要啟動的指令下在 /etc/rc.local 沒有作用
因為 rc-local 這個daemon 一直起不來 有問題
改用 @reboot
如果還是一直不成功的話
會需要在之前先 sleep 一下

@reboot sleep 5;/root/some_thing_need_start 
使用curl 在 telegram傳送包含html tag 訊息的範例如下
不過支援的tag不多 主要是要加上  &parse_mode=HTML


curl -X POST "https://api.telegram.org/bot711025:AAFcn2dfjsldfkjsdlfjdkfcvZo/sendMessage" -d "chat_id=-100236747688384&text=<u>test</u>&parse_mode=HTML"
因為要管制跑在LXC上docker的網路
才發現把iptables直接下在 LXC上的 INPUT 是沒用的 

iptables -I INPUT -p tcp -s 10.0.0.0/8 --dport 1111 -j DROP

以上如果是啟動 docker 時 相對應到各自的 1111是無法管制連入 docker的
本來的認知是只要在最外層擋就好了 但並不是

要下在 DOCKER-USER 這個 chain 才有作用

iptables -I DOCKER-USER -p tcp -s 10.0.0.0/8 --dport 1111 -j DROP
今天在試PVE的 firewall 功能
因為是三層式的架構 所以 cluster node 跟 guest os 都必需要打開才會有作用
但是在打開cluster的firewall之後
管理介面就進不去了
查了一下文件才發現cluster firewall預設的規則是 DROP
唯一的解法是進 console 改 /etc/pve/firewall/cluster.fw 這個檔
把  enable: 0 改成 enable: 1
要打開前一定要記得要把 input policy 先改成 ACCEPT



2024/11/27

n8n裡有二個重要的東西一定要備分

一個是 credentials 一個是 workflow

指令如下

首先進到docker的 os

docker exec -it  n8n /bin/sh


備分 credentials 

n8n export:credentials --all --decrypt --output=exported-credentials.json

記得一定要用 --decrypt 

如果不加的話 因為每一台的 crypt key不同 匯入別台新的几器會有問題


備分 workflow

n8n export:workflow --all --output=exported-workflows.json


也可以使用 api 拿出來 

記得要先產生api key

語法如下

curl -X 'GET' \

  'http://10.0.0.1:5678/api/v1/workflows?active=true&tags=test,production&name=My%20Workflow&projectId=your_api_key' \

  -H 'accept: application/json'


備分檔可以傳出來或建個 workflow 定時丟出來



記一下在 almalinux 9 上安裝docker後再安裝n8n docker

先裝 docker

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

dnf install docker-ce docker-ce-cli containerd.io

裝好後設定docker 的 daemon

systemctl start docker
systemctl enable docker


接下來安裝 n8n

先建立放資料的 volume

docker volume create n8n_data

docker pull docker.n8n.io/n8nio/n8n


# Start docker 有些參數要加  以下方為準    官方說明太簡單

docker run -it --name n8n -p 5678:5678 --restart=always -e GENERIC_TIMEZONE="Asia/Taipei" -e TZ="Asia/Taipei" -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

如果這裡timezone 沒設 每次新建 workflow的時候都要再改 有點煩 而且很容易忘記

再來就可以開browser登入了 http://10.0.0.1:5678


以下步驟是n8n docker 有新版本的更新方式 

docker pull docker.n8n.io/n8nio/n8n

# Get the container ID
docker ps -a

# Stop the container with ID container_id
docker stop [container_id]

# Remove the container with ID container_id
docker rm [container_id]

# Start the container
docker run -it --name n8n -p 5678:5678 --restart=always -e GENERIC_TIMEZONE="Asia/Taipei" -e TZ="Asia/Taipei" -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

#remove unused image
docker image prune


這几天在玩 n8n 真的是個好東西

先講一下安裝

官方提供docker跟 npm的安裝方式

但試了 almalinux 9 及 debian 12 都安裝不起來

最後使用docker

n8n docker的基底用的還是 alpine linux

沒有 bash 只有 sh



https://n8n.io/

2024/11/20

今天把ntopng換到 almalinux9

官方說明頁面的步驟是

dnf config-manager --set-enabled crb
dnf install epel-release

錯了 
要先 dnf install epel-release
才能 dnf config-manager --set-enabled crb


安裝後進管理介面
一直出現這個訊息




















必須在
/etc/ntopng/ntopng.conf
加上

-X=500000

數字依据現實狀況而定

順便改一下這二個值

 -m=10.0.0.0/8,192.168.0.0/16

 -i=eth1


2024/11/15

今天有人問我為什麼mobaxterm進server後開圖檔很慢
試了 eog 跟 shotwell 真的很慢 都要30多秒
再試了 nomacs 不到1秒就開了

開圖檔記得要用 nomacs

2024/11/09

使用tfm時 置放檔案的目錄 不要放在 /var/www 或 /var/www/html 下
另外找個路徑
例如 /opt/tfm_file
再修改該目錄的權限

chown -R www-data:www-data /opt/tfm_file

以避免被直接存取的情況


5種在linux透過 serial 連接設備 console的方法

先找出 serial port

 dmesg|grep ttyS

[    0.818900] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.841214] 0000:00:03.3: ttyS4 at I/O 0x2248 (irq = 17, base_baud = 115200) is a 16550A

開放存取權限

sudo chmod 666 /dev/ttyS0

sudo chmod 666 /dev/ttyS4


screen

screen /dev/ttyUSB0 115200

crtl+a   /      quit

cu
tip
minicom
putty

2024/11/07

在 graylog 5 使用的 Geolocation 功能 在 graylog 6 也被限制了


















使用Geolocation 功能前必須 先有  Illuminate Processor 
但這個功能在open版被限制了



2024/11/06

graylog 6版後的index rotation改成了另一種方式











原本是設定

Max. days in storage 
180

Min. days in storage
60

主觀認知是能查到60天內的資料 超過60天系統會封存 但應該還是能查到
但事實上超過60天就查不到資料了

為了符合法規規定 所以現在改成

Max. days in storage 
181

Min. days in storage
180


覺得舊版的方式比較好 
能自己決定几天後就把 index close
然後再看狀況手動去砍

認真查了一下才發現graylog現在分成了三個版本

open的這個版本現在大幅減少支援的功能

為了解決以上的問題

看來只能定期手動或用crontab去close index

shell 如下

for i in {171..180}
do
        echo $i
        curl -u use:passwd -XPOST "http://10.0.0.1:9200/graylog_$i/_close"
done

目前觀察大約是每二天會 index rotate 一次 

需要查詢舊資料時再打開

curl -v -X POST -H "Content-Type: application/json" -H "X-Requested-By: XMLHttpRequest" -u user:passwd http://10.0.0.1:9000/api/system/indexer/indices/graylog_245/reopen




今天把另一台 graylog 5.2.12 轉到 graylog 6.1.1

graylog 5 預設就會有 syslog udp 514 的 input 不用再另外加

graylog 6 預設沒有 所以一定要記得加上去

漏了一段時間的 log 沒收到

2024/11/04

almalinux 8 預設安裝的php 7.2

記錄一下升級到 php 8.2的步驟

看一下目前使用的版本及系統支援的版本

dnf module list php

Last metadata expiration check: 2:45:04 ago on Mon 04 Nov 2024 09:34:39 AM CST.
AlmaLinux 8 - AppStream
Name     Stream         Profiles                      Summary                  
php      7.2 [d][e]     common [d], devel, minimal    PHP scripting language   
php      7.3            common [d], devel, minimal    PHP scripting language   
php      7.4            common [d], devel, minimal    PHP scripting language   
php      8.0            common [d], devel, minimal    PHP scripting language   
php      8.2            common [d], devel, minimal    PHP scripting language 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

先reset 目前安裝的版本

dnf module reset php -y

再enable php 8.2

dnf module enable php:8.2 -y

接下來 dnf -y update 安裝所有 php8.2 相關套件

確認是否安裝完成

dnf module list php
AlmaLinux 8 - BaseOS                           6.2 MB/s | 7.4 MB     00:01    
AlmaLinux 8 - AppStream                        5.7 MB/s |  14 MB     00:02    
AlmaLinux 8 - Extras                            18 kB/s |  13 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64 8.3 MB/s |  14 MB     00:01    
AlmaLinux 8 - AppStream
Name      Stream      Profiles                       Summary                   
php       7.2 [d]     common [d], devel, minimal     PHP scripting language    
php       7.3         common [d], devel, minimal     PHP scripting language    
php       7.4         common [d], devel, minimal     PHP scripting language    
php       8.0         common [d], devel, minimal     PHP scripting language    
php       8.2 [e]     common [d], devel, minimal     PHP scripting language    

提示:預設[d]、已啟用[e]、已停用[x]、已安裝[i]

檢查目前版本

php -v


重開几看看所有服務是否正常


今天把 librenms的php 升到 8.3 (官方建議)

記錄一下流程
先把之前 apt-mark hold 的pkg unhold

php-cli
php-common
php-curl
php-fpm
php-gd
php-gmp
php-json
php-mbstring
php-mysql
php-pear
php-snmp
php-xml
php-zip

接下來移除原安裝的 php 並安裝 php8.3


php8.3-fpm.service 要重啟並 enable

systemctl restart php8.3-fpm.service
systemctl enable php8.3-fpm.service


/etc/php/8.3/cli/php.ini裡的 timezone要設定

date.timezone = Asia/Taipei


複制 /etc/php/8.1/fpm/pool.d/librenms.conf 到 /etc/php/8.3/fpm/pool.d

把 pkg hold 住 暫時不再升版本

apt-mark hold

php-cli
php-common
php-curl
php-fpm
php-gd
php-gmp
php-json
php-mbstring
php-mysql
php-pear
php-snmp
php-xml
php-zip


目前正常了 再觀察看看

2024/10/31

記錄一下如何把M365網頁編輯的功能列改成中文

登入後點 onedrive






















點右上角齒輪 再點 one drive 設定























點更多設定 語言設定























點顯示進階設定



















點繁體中文(traditional chinese)


















點儲存



















設定完成後要登出再登入才會生效

2024/10/29

今天要重裝一台acer nb的OS
開几一直出現藍底白字
進bios去看
原來是有個windows boot manager
問題是在 bios也砍不掉
最後使用linux mint開几

先找出所有的efibootmgr

efibootmgr -v

接下來就是砍了

efibootmgr -b <bootnum> -B


安裝win11時找不到硬碟 查了半天才發現要上driver 
很久沒碰過要上driver才能找到硬碟的机器了

2024/10/27

比較了三個php mysql web 管理工具





最後決定 adminer

因為功能完整 操作介面方便 不用安裝 只需上傳單一檔案即可 
如果要更換外觀 還有很多 css 可以選擇 

2024/10/23

今天才發現之前升到 almalinux 9 的几器
/var/log 裡的檔案到現在都沒有 logrotate
查了一下
logrotate.timer
這個daemon 沒有起起來

systemctl enable logrotate.timer

systemctl start logrotate.timer

後續再觀察看看

2024/10/21

本次外稽又提到要注意server的HD狀況
如果低於某個臨界值要有告警

寫個批次檔來做 並把資料丟到 log server 
要注意的是批次檔的計算有32位元的問題
所以先把後6位砍掉再計算

@echo off

del %tmp%\disk_usage.txt

setlocal enabledelayedexpansion

for /f "tokens=1,2,3" %%A in ('wmic logicaldisk get caption^, size^, freespace ^| findstr /R "^[A-Z]"') do (
    set "drive=%%A"
    set "totalSize_ori=%%C"
    set "freeSpace_ori=%%B"

    if defined drive (
        rem Remove trailing spaces and convert to numbers
        set /a totalSize=!totalSize_ori:~0,-6!
        set /a freeSpace=!freeSpace_ori:~0,-6!

        rem Check if totalSize is not zero to avoid division by zero
        if !totalSize! gtr 0 (
            set /a freePercent=freeSpace*100/totalSize

            rem echo %COMPUTERNAME% >> %tmp%\disk_usage.txt
echo disk: !drive! >> %tmp%\disk_usage.txt
            echo size: !totalSize! MB >> %tmp%\disk_usage.txt
            echo %COMPUTERNAME% free_space: !freeSpace! MB >> %tmp%\disk_usage.txt
            echo remaining_capacity: !freePercent!%% >> %tmp%\disk_usage.txt
            echo -------------------------------- >> %tmp%\disk_usage.txt
        ) 
    )

endlocal

type %tmp%\disk_usage.txt | nc -w 2 -u 10.0.0.1 514

2024/10/16

URLEncoded of emojis

telegram line 傳訊時會用到的東東




2024/10/12

還是line notify終止服務的問題
今天試了另一個方式 telegram
記錄一下
註冊完後首先要把 botfather 加入好友
接下來再對話中輸入 /newbot
他會叫你給bot取個名字
這個名字一定要以bot結尾
例如 testbot

送出後的回應裡就會有一組API key
一定要記好

接下來建立群組並把 testbot 加入該群組

使用curl取得testbot相關資訊

curl https://api.telegram.org/botYOUR API KEY/getUpdates

如果bot加入的群組愈多 回應就會愈多

在得到的回應中先找group 這個關鍵字

往前看 title 就是群組名稱 再往前看 id 就是該群組的id 要記下來 傳訊息時要用

範例如下

"id":-123456780,"title":"test","type":"group"

再來就可以使用curl傳訊息了

curl -X POST "https://api.telegram.org/botYOUR API KEY/sendMessage" -d "chat_id=-1234567890&text=bot%0A換行中文傳訊息 測試"

感覺discord很耗電 telegram好很多

2024/10/10

最近最大的消息應該是line notify要終止服務了
官方說明取代的是付費的 messaging API

因此開始尋代替代方案
目前選定了discord
支援二個方式
一個是建立bot 步驟有點多

另一個是使用webhook
強烈建議使用這個方法
方便很多
而且librenms也直接支援


2024/10/08

延續昨天的問題

昨天修好後當下沒問題
但今天管理介面打不開了
直接倒回去颱風前一天的備分
目前看來運作正常
持續觀察
順便看看還有那些有問題

dmesg|grep "fsck"|grep dm
[   82.486238] EXT4-fs (dm-6): warning: mounting fs with errors, running e2fsck is recommended
[  139.304759] EXT4-fs (dm-11): warning: mounting fs with errors, running e2fsck is recommended
[  398.955415] EXT4-fs (dm-6): error count since last fsck: 2
[  464.490594] EXT4-fs (dm-11): error count since last fsck: 3769411
[55841.695354] EXT4-fs (dm-12): error count since last fsck: 2
[88379.937761] EXT4-fs (dm-6): error count since last fsck: 2
[88547.518964] EXT4-fs (dm-6): warning: mounting fs with errors, running e2fsck is recommended
[88871.451957] EXT4-fs (dm-6): error count since last fsck: 3

共三台

先到 /dev/mapper 查看是那個guest

lrwxrwxrwx  1 root root       7 Oct  7 23:45 pve-vm--116--disk--0 -> ../dm-6
lrwxrwxrwx  1 root root       8 Oct  8 00:08 pve-vm--124--disk--0 -> ../dm-11
lrwxrwxrwx  1 root root       8 Oct  8 09:04 pve-vm--140--disk--0 -> ../dm-12

一起倒備分吧
不想修了

2024/10/07

PVE host 修好換裡面的LXC guset 有問題

guest 先關几
找出那個disk
繼續修

fsck /dev/mapper/pve-vm--124--disk--0







几次的不正常斷電後
PVE開不起來了















修吧

xfs_repair /dev/mapper/pve-root

修好後正常了
再觀察看看

2024/09/30

最近在處理几千萬個小檔的問題

不管是 unzip 或 tar

都會出現以下的錯誤
cannot open no space left on device

明明空間就還有 而且 inode 也沒滿

折騰了好几天 才發現是 ext4的限制

請愛用 XFS


2024/09/29

針對 巨量小檔的zip檔

7z支援分片解壓縮 效能較差

unzip 不支援分片解壓縮 效能較好

2024/09/24

最近要在win上複制 一千五百萬多萬筆的小檔
試過
teracopy
fastcopy
robocopy
copy
cp
效能都很差
rsync
tar -T 
也跑不太出來
目前感覺上用 tar 好像好一點

改用 parallel 最多設定 252
昨天開始碰到有趣的狀況
說狀況是因為不確定是不是攻擊
pmg上的cpu會跑到100趴
雖然之前也偶爾會發生
但從昨天開始是大約一小時一次
觀察到是clamd這個process
所以猜測是寄了一封mail
然後導致clamd把cpu 吃滿
但pmg管理介面上無法關閉virus scan
目前只能重開

2024/09/19

一直在處理almalinux 9 live migrate的問題
目前得到的結果是

使用 x86-64-v2-AES 這個cpu type 就沒有問題
而且這個type 也是 PVE目前新建guest使用的預設值

但graylog使用這個type 能開機 但無法執行
目前改成 x86-64-v3 能開機 能執行
試了一下 live migrate 也沒問題

使用 host 是一定有問題的


在支援相同cpu type 的host live migrate是沒問題的


檢查 cpu 支援那些 type

#!/bin/sh -eu

flags=$(cat /proc/cpuinfo | grep flags | head -n 1 | cut -d: -f2)

supports_v2='awk "/cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/ {found=1} END {exit !found}"'
supports_v3='awk "/avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/ {found=1} END {exit !found}"'
supports_v4='awk "/avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/ {found=1} END {exit !found}"'

echo "$flags" | eval $supports_v2 || exit 2 && echo "CPU supports x86-64-v2"
echo "$flags" | eval $supports_v3 || exit 3 && echo "CPU supports x86-64-v3"
echo "$flags" | eval $supports_v4 || exit 4 && echo "CPU supports x86-64-v4"


2024/09/17

昨天的內稽事項有提到要注意各server的HD使用量

二個做法 種 agent 或打開server的 snmp

初步的想法是打開 server的 snmp

因為現在 m$ 某些OS 預設不給ping 

所以 librenms 要改個設定值 把ping test 關了


 





撈進來後 點到 health 可以看到 cpu ram hd 的狀況



 

 



點右方的齒輪 可以在 storage processors memory 設定告警的閥值

 



 

 



 



不過這裡設完後還是不會發alert

要再手動加一條 rule 而手動加的個rule 也不會參考這裡的值 需要重新指定

 


 

2024/09/16

之前換nas的時侯發生 filesystem有問題的情況
使用 xfs_repair 修完後 出現有user的mail不見的情況
當時是使用 PhotoRec 撈了好几天 把資料還給user 
而且也無法確認是否完整

這几天在使用rsync 備分 /home 時 
出現好几次做到一半就會卡住的情況
看了一下才發現竟然出現 超級大檔案 

-rw-------  1 user mailnull 9007199254766339 Aug  4  2023 1691146737.V811I2821a77dbM603030.mail:2,S

只能砍了
而且砍完就正常了
反正就一邊做一邊發現問題一邊砍

最近因為換冷氣 所以要觀察 raspberry 的cpu溫度 

來調整冷氣的設定溫度

先前已經利用設定snmp把值放在librenms上畫圖

今天想到grafana可以取值來畫圖

而且應該比snmp librenms 方便

首先把日期跟溫度存成csv 檔 格式如下 放在web server上

格式如下

time,temperature

Sun Sep 15 09:15:01 CST 2024,46.2

Sun Sep 15 09:20:01 CST 2024,46.2


接下來只要定時更新這個csv檔就可以了

grafana 要add new datasource          

yesoreyeram-infinity-datasource

安裝後不需要先建立 Global queries

接下來 New 一個 dashboard

Add visualization









select data source






type 選擇csv           修改csv檔的url








要把columns 依照數字及時間 設定好 

時間的格式一定要依照cvs檔裡的時間格式設定好才能畫圖 








完成後就能看到如下的圖了






2024/09/14

最近進了一台icx8200
可是在librenms上顯示的hardware名稱不對
之前也有人問同樣的問題在icx7150
定義的檔案是在
/opt/librenms/LibreNMS/OS/Ironware.php
裡面確實沒看到icx8200
等更新吧

2024/09/05

最近設備因為不明原因發生了二次cpu 99 %的情形 snmp就會撈不到值

第一次重開後大約正常了一週

又再發生

今天第二次重開 目前正常

但每次重開後

librenms 裡的 port id 都會變 導致weathermap 出現如下的問題

必須要再手動去一個一個改 config 

 


2024/08/31

heimdall 是一款滿好用的管理頁面集成軟体

大部分找到的資料都是使用docker

如果不想使用docker而是直接在ubuntu上安裝

流程如下

apt install php8.3-cli php8.3-sqlite3 php8.3-xml php8.3-mbstring php8.3-zip

再來到github下載最新版 目前是 2.6.1

php最低要求是 8.2

下載後解壓

執行

php artisan serve --host=0.0.0.0 --port=8080

即可

不需要安裝 apache

進入介面後並沒有登出的選項

因此隨便建個user

如果要登出 在左下角點 swtich user即可


https://github.com/linuxserver/Heimdall/releases


https://heimdall.site/


https://www.reddit.com/r/selfhosted/comments/o0x3tr/install_heimdall_dashboard_on_debianubuntu/

2024/08/22

使用lftp捉檔案時 如果本地端檔案已存在
會出現以下的錯誤

get:/tmp/822/log.txt:檔案早已存在,而且沒有設定 xfer:clobber 變數

在 /etc/lftp.conf加入以下這行即可

set xfer:clobber on


2024/08/12

之前一直都沒去找過 librenms 

temperature Sensor over limit

這裡的定義

發現不是一個固定的定值

而且超越前高時 就會出現




2024/08/10

昨天在升級ICX時 使用tftp
但試了好几種tftp server
包含 linux 及 windows 
都無法成功傳檔
一直出現timeout
使用 scp 才成功

copy scp flash 10.0.0.1 firmware_file secondary

不過 telnet timeout 要設長一點
不然有可能檔案還沒傳完就timeout 了
預設是 4 分鐘

telnet@10.0.0.2(config)#telnet timeout 10


2024/08/03

上次librenms升完OS後
一直出現hd容量不夠的狀況
今天才發現 /var/log/syslog 這個檔變的很大
內容都是以下的log

2024-08-03T12:14:01.608311+08:00 W-librenms-debian12 mariadbd[221]: 2024-08-03 12:14:01 283381 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255).
2024-08-03T12:14:01.608631+08:00 W-librenms-debian12 mariadbd[221]: 2024-08-03 12:14:01 283381 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'hist_type' at position 9 to have type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB'), found type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB').
2024-08-03T12:14:01.608659+08:00 W-librenms-debian12 mariadbd[221]: 2024-08-03 12:14:01 283381 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255).

google了一下
說是升OS時DB沒升造成
使用以下指令升級DB

mysql_upgrade --user=root --password=passwd

目前看來正常了
再觀察看看

2024/07/30

2024/07/19

這陣子PVE 在live migrade 時
有几台在migrade到新host後
就自動關几了
出現以下錯誤

2024-07-19 07:55:24 ERROR: tunnel replied 'ERR: resume failed - VM 103 qmp command 'query-status' failed - client closed connection' to command 'resume 103'

目前觀察到都是almalinux 9 
cpu type 是host
但又不是所有的almalinux 9 都會有問題

還在找問題

2024/07/17

今天打開OCS出現需要更新的畫面
就直接點update
想說應該不是大版本 應該沒問題
沒想到更新完
管理介面就完全空白了
看log也沒看到什麼error
決定重裝
原本的是在almalinux 8 順便升級os
依照原廠網頁安裝沒問題
這個檔裡的帳號密碼要記得改

/etc/httpd/conf.d/ocsinventory-server.conf

目前正常
再觀察看看



2024/07/03

移除檔案裡的所有特殊字元並保留 . 及 -

sed -i 's/[^[:alnum:].-]//g' test_file

2024/07/01

之前使用的 honeyports 因為OS升到 almalinux 9不能使用了
almalinux 9 不再支援 python2
另外再找了一個差不多功能 有提供 python跟shell 可以使用
不過一樣有python2的問題
所以改用shell

程式要改一下

honeyport.sh 裡第20行是設定要listen在port 31337
如果有listen在其他 port 必須修改此行 存成不同檔案 再執行

為了能批次執行 改成如下

#PORT=31337;
PORT=$1;


再來寫個shell 如下 把要listen的 port 加上去

#!/bin/bash

#revice port want to listen
port="21 22 23 ......."

for i in $port
do
        /root/honeyport.sh $i &
done

執行後就可以在log 找到相關ip並進行處理了 


https://github.com/securitygeneration/Honeyport

2024/06/16

今天把librenms的OS從debian 11 升到 12
照步驟做沒問題
要注意的是php不能升到 8.3
只能到 8.2
原來在debian 11上的是 8.1



2024/06/15

之前裝almalinux9時cpu都直接使用host
今天升級 almalinux 8 to 9 時 出現 cpu 的錯誤
原本使用 Default (kvm64)


訊息中指出cpu未使用 x86-64-v2 這個type
v2以上的type都可以




較舊的cpu 未支援 x86-64-v4 這個指令集
會導致 guest無法開几出現以下錯誤
















此時就必須要往下降為 v3 或 v2 或直接改為 host

由於几器本來就是從centos 7 升到 almalinux 8 所以再升到9時有些流程要注意

升級過程中出現

Error: Transaction test error:
  file /usr/include/gnumake.h from install of make-1:4.3-8.el9.x86_64 conflicts with file from package make-devel-1:4.2.1-11.el8.x86_64
移除 make-devel
rpm -e make-devel-4.2.1-11.el8.x86_64

升級後使用vi時出現

vi /tmp/1

Error detected while processing /etc/virc:
line   40:
E319: Sorry, the command is not available in this version: let skip_defaults_vim=1

刪除 /etc/virc 裡的第40行

let skip_defaults_vim=1

有些几器升級後出現以下的log 有些正常

Jun 15 21:46:29 localhost rsyslogd[593]: imjournal: open() failed for path: '/var/lib/rsyslog/imjournal.state.tmp': Operation not permitted [v8.2310.0-4.el9 try https://www.rsyslog.com/e/2433 ]

比對 /etc/rsyslog.conf發現有不同
複制正常几器的檔案過去就ok了
記得如果原rsyslog.conf有更改 新檔也要改
看起來是之前有改過
所以升級時會保留舊的rsyslog.conf

2024/06/13

如何使用zap docker

docker安裝好後

docker pull ghcr.io/zaproxy/zaproxy:stable
docker pull zaproxy/zap-stable


啟動

docker run -u zap -p 8080:8080 -p 8090:8090 -i ghcr.io/zaproxy/zaproxy:stable zap-webswing.sh

開browser
http://localhost:8080/zap




2024/06/12

本次弱掃有關SSH出現以下二個中風險


The remote SSH server is configured to allow / support weak key

exchange (KEX) algorithm(s).

Detection Result

The remote SSH server supports the following weak KEX algorithm(s):


KEX algorithm                      | Reason

------------------------------------------------

diffie-hellman-group-exchange-sha1 | Using SHA-1




The remote SSH server is configured to allow / support weak
encryption algorithm(s).
Detection Result
The remote SSH server supports the following weak client-to-server encryption algorithm(s):

aes128-cbc
aes256-cbc

解決方式是在 /etc/ssh/sshd_config
加入以下二行

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha1

重新啟動daemon



2024/06/05

118.195.223.15

start dos at 2024/6/4 18:20











block after few minutes




 

2024/05/27

今天看到rustdesk-server 天前有更新
版本是 1.1.11-1 
更新完要連線出現以下的訊息















再回頭看了一下官方頁面

This version changes default -k of hbbs to -, which means setting key on client side is mandatory. If you want to run empty -k as before, please run hbbs -k "".

這個版本client端強制要設定key
如果要跟之前的使用方法一樣
就要使用以下指令啟動 hbbs

hbbs -k ""

醬就正常了

2024/05/26

近期又開始社交工程演練
使用PMG把信隔離後會放在
/var/spool/pmg/spam
這個目錄下

由於內容是base64編碼
如果要解碼
使用以下指令

base64 -d encode_file > decode_file

2024/05/22

這几天用ZAP在弱掃

當網站很大時 因為會產生很大量的cache

所以要確保執行弱掃那台几器的HD空間要夠

不然有可能還沒做完就爆了

另外有很多網站都出現以下的報告


 


查了一下 可以在httpd.conf 設定

新增以下內容


<IfModule mod_headers.c>

Header set X-Frame-Options "SAMEORIGIN"

Header set Content-Security-Policy "default-src 'self'"

</IfModule>


設完要重啟apache

另外 如果有參考到外面的任何元件

版面是會亂掉的

這個要特別注意


設完後再掃一次出現另一個報告




如果要再處理

Header set 就要再改成如下的設定


Header set Content-Security-Policy "frame-ancestors 'self'; form-action 'self'; base-uri 'self'; img-src 'self'; default-src 'self'; script-src 'self'; style-src 'self';"


當然影響範圍就會更大


https://lawrencechuang760223.medium.com/%E5%A6%82%E4%BD%95%E5%9C%A8apache-server%E4%B8%8B%E6%96%B0%E5%A2%9Ex-frame-options%E8%88%87content-security-policy%E8%87%B3response-header%E4%B8%AD-fix-web-application-d68209ff385c


https://medium.com/@andy001018/owasp-zap-%E5%BC%B1%E6%8E%83%E8%99%95%E7%90%86%E7%B4%80%E9%8C%84-2fb0f4888908

2024/05/16

有几器要報廢
找到硬碟抹除的工具 shred
使用linux mint
下載iso後寫到usb開几

sudo fdisk -l 找到要抹除的硬碟代號

sudo shred -vfz /dev/sdX


-n - 覆盖的次数。默认是三次。
-u - 覆盖并删除。
-s - 要粉碎的字节数。
-v - 显示扩展信息。
-f - 必要时强制改变权限以允许写入。
-z - 最后用 0 覆盖来隐藏粉碎。

466G的傳統硬碟跑1次要1小時50分
總共要跑4次


2024/05/10

graylog6的indices 保存方法改變如下圖













之前的設定是多久之後可以刪除或close
如果是close 必需再手動刪除
目前看來沒這個選項了
不知道在比較長時間後會不會跟以前一樣
因為儲存大量資料導致search變的很慢

2024/05/09

這几天進graylog時提示6版已經出來了
看官網說的是可以直接更新
還是先裝一台來試看看好了
這次用的是almalinux 9
6版已經不再支援 elasticsearch 了
依照官網安裝流程裝到opensearch就有問題了
安裝後無法啟動
看了一下 opensearch.yml

裡面有一段 

######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn: ['CN=kirk,OU=client,O=client,L=test,C=de']
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: [all_access, security_rest_api_access]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [.plugins-ml-agent, .plugins-ml-config, .plugins-ml-connector,
  .plugins-ml-controller, .plugins-ml-model-group, .plugins-ml-model, .plugins-ml-task,
  .plugins-ml-conversation-meta, .plugins-ml-conversation-interactions, .plugins-ml-memory-meta,
  .plugins-ml-memory-message, .plugins-ml-stop-words, .opendistro-alerting-config,
  .opendistro-alerting-alert*, .opendistro-anomaly-results*, .opendistro-anomaly-detector*,
  .opendistro-anomaly-checkpoints, .opendistro-anomaly-detection-state, .opendistro-reports-*,
  .opensearch-notifications-*, .opensearch-notebooks, .opensearch-observability, .ql-datasources,
  .opendistro-asynchronous-search-response*, .replication-metadata-store, .opensearch-knn-models,
  .geospatial-ip2geo-data*, .plugins-flow-framework-config, .plugins-flow-framework-templates,
  .plugins-flow-framework-state]
node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########

感覺是這段的問題

備分後重新開一個新的 opensearch.yml
裡面的內容只要以下這些就好

cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
indices.query.bool.max_clause_count: 32768

改完後啟動就沒問題了

跟之前不同 graylog這個版本安裝好後
打開 http://127.0.0.1:9000 無法進到web介面 
看了一下 /var/log/graylog-server/server.log

It seems you are starting Graylog for the first time. To set up a fresh install, a setup interface has
been started. You must log in to it to perform the initial configuration and continue.

Initial configuration is accessible at 0.0.0.0:9000, with username 'admin' and password 'iIcCiFzjWY'.
Try clicking on http://admin:iIcCiFzjWY@0.0.0.0:9000

需要先 Initial configuration 才能使用
進入後依照畫面的步驟設定後 就能進入graylog的介面了

Memory/Heap usage 預設是1G 要再調整

/etc/sysconfig/graylog-server

GRAYLOG_SERVER_JAVA_OPTS="-Xms1g -Xmx1g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow"

依ram大小調整



2024/05/08

使用 curl 取得ip的相關資訊

curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "dns.google",
  "anycast": true,
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4056,-122.0775",
  "org": "AS15169 Google LLC",
  "postal": "94043",
  "timezone": "America/Los_Angeles",
  "readme": "https://ipinfo.io/missingauth"
}

2024/05/06

發生好几次電腦大量封包的傳輸
netflow的值都在几萬甚至几十萬
以往的做法都是先把ip block掉
等user自己來反應
但醬沒辦法在事發的當時撈到相關資料
到底是那個程式造成的
最近找到
LiveTcpUdpWatch
這個工具
就可以在 eset protect 上直接派送到電腦上執行並傳回資料
馬上就可以知道是那支程式造成的 資料撈回來後再把ip block掉
相當方便

程式如下


curl -o %temp%\LiveTcpUdpWatch.exe http://10.0.0.1/LiveTcpUdpWatch.exe

%temp%\LiveTcpUdpWatch.exe /CaptureTime 300000 /scomma "%temp%\tcpudp.csv"

ping -n 310 localhost > NUL

curl -u id:passwd -T "%TEMP%\tcpudp.csv" ftp://10.0.0.2/




https://www.nirsoft.net 這個站裡的工具都很好用

2024/04/29

一直有user反應收信時間會delay的問題
因為之前把greylist打開
目前的想法是分成上下班時段
上班關掉 下班再打開
試一段時間看看

指令如下

/usr/bin/pmgsh set /config/mail -greylist 0

/usr/bin/pmgsh set /config/mail -greylist 1


2024/03/28

為了要測試siem
需要起 snmptrap

找了二個方法
第一個方法是直接用 zabbix_trap_receiver.pl
但有問題起不來


第二個方法是直接改 /etc/snmp/snmptrapd.conf

內容如下

# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#

disableAuthorization yes
authCommunity   log,execute,net public

[snmp] logOption s 2
[snmp] logOption f /tmp/snmptrapd-direct.log

format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n


systemctl restart snmptrapd

醬就可以了

2024/03/15

今天要在一台新安裝的win11 上要更新winget時出現以下訊息

C:\Windows\System32>powershell add-appxpackage %temp%\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle            add-appxpackage : 部署失敗,HRESULT 為: 0x80073CF3, 套件無法進行更新、相依性或衝突驗證。                                Windows 無法安裝套件Microsoft.DesktopAppInstaller_1.22.10661.0_x64__8wekyb3d8bbwe,因為此套件相依于找不到的架構。提供由 "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"發行的架構"Microsoft.UI.Xaml.2.8"、中 性或x64處理器架構與最低版本8.2310.30001.0,以及要安裝的此套件。
注意: 如需其他資訊,請在事件記錄檔中尋找 [ActivityId] 1c4c5989-76a7-0000-05e8-511ca776da01,或使用命令列 Get-AppPackage
Log -ActivityID 1c4c5989-76a7-0000-05e8-511ca776da01
位於 線路:1 字元:1
+ add-appxpackage C:\Users\aaa\AppData\Local\Temp\Microsoft.DesktopApp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\aaa\A...bbwe.msixbundle:String) [Add-AppxPackage], IOException
    + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand

原因是因為沒有安裝 Microsoft.UI.Xaml.2.8
到github上去找最新版
目前是 2.8.6
下載安裝完再更新winget就沒問題了



2024/03/14

今天撈 attack map 時出現以下訊息
















這個plugin使用的方法要被官方終止支援了
官方提供了 geomap來取代使用
試了半天
圖就是出不來
後來才找到問題










fotmat這裡一定要選 Table
不然在右方的選項會找不到值

2024/03/13

fortiet 如何在命令列踢掉 vpn user

首先列出目前所有連線 找出相對應的 index id

FG60F # execute vpn sslvpn list 
SSL-VPN Login Users:
 Index User Group Auth Type Timeout Auth-Timeout From HTTP in/out HTTPS in/out Two-factor Auth
 1  a1234  sslvpn-group-full-tunnel 16(1) 295 28501 192.168.12.12 0/0 0/0 0

SSL-VPN sessions:
 Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP 
 1  a1234  sslvpn-group-full-tunnel 192.168.12.12  299 324697/1609215 172.17.0.51


執行以下指令刪除要踢掉的 id

FG60F # execute vpn sslvpn del-tunnel 1

2024/03/11

如何使用 sshpass在sudo時自動輸入密碼
範例如下

sshpass -p "passwd" ssh user@10.0.0.1 "echo passwd | sudo -S apt -y upgrade"

2024/03/10

linux 如果要直接使用整個HD
可以不用先分割磁區 直接mkfs即可

mkfs.xfs /dev/sdb

mount -t xfs /dev/sdb /mnt

mkfs.ext4 /dev/sdc

mount -t ext4 /dev/sdc /mnt

2024/03/05

linux在開几時要mount iscsi時
/etc/fstab使用 defaults 會無法開几


UUID=c46a08a2-160a-4345-9e96-8ebc35ff2220 /home                       xfs     defaults,uquota        0 0

要改成 _netdev 在網路啟動後再mount 就沒問題了

UUID=c46a08a2-160a-4345-9e96-8ebc35ff2220 /home                       xfs     _netdev,uquota



2024/02/29

最近要進行mail server移轉
在新server上安裝完 dovecot後
改完 /etc/dovecot/dovecot.conf

protocols = imap pop3

重啟發現 port 993 995 還是會 listen

只能修改
/etc/dovecot/conf.d/10-master.conf
的二個地方 把port 改成 0 才有作用
service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    port = 0
    #ssl = yes
  }

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    port = 0
    #ssl = yes
  }
}

2024/02/26

總結一下目前如何在client 使用winget 定期更新
在目前原有的使用者上建立排程
單位內的使用者95%以上都使用 abc 這個帳號 
所以把排程建在 abc 這個user上

加入以下的 reg 以達成以下二個作用

bypass MicrosoftStore Certificate 
關閉安裝軟体時的UAC 以避免一直跳出視窗要user按確定

Windows Registry Editor Version 5.00



[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller]
"EnableBypassCertificatePinningForMicrosoftStore"=dword:00000001


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000



為了不要讓user看到排程執行時的DOS視窗 因此批次檔要以 vbs 進行呼叫

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c C:\ProgramData\wingetgo.vbs",vbhide


接下來建立排程

schtasks /create /tn "winget4update task" /tr "C:\ProgramData\wingetgo.vbs" /sc weekly /d MON /st 09:00 /ru abc /f

因為每個user都會改密碼 所以沒辦法建立不登入時也能執行的排程
還有一個問題就是如果user沒有登入網路 執行也不會成功


整個由eset主按台派送的工作如下

curl -o %temp%\winget.reg http://10.0.0.1:3128/i/o/winget.reg
regedit /s %temp%\winget.reg
curl -o C:\ProgramData\wingetgo.bat http://10.0.0.1:3128/i/o/wingetgo.bat
curl -o C:\ProgramData\wingetgo.vbs http://10.0.0.1:3128/i/o/wingetgo.vbs
schtasks /create /tn "winget4update task" /tr "C:\ProgramData\wingetgo.vbs" /sc weekly /d MON /st 09:00 /ru abc /f