2022年3月14日 星期一

如何給Linux某個目錄設定密碼

如果你在使用的時候別人用不了,那可以用加密盤的方式
初始化步驟如下例:
dd if=/dev/zero of=/root/cc.img bs=1M count=10000
losetup /dev/loop0 /root/cc.img  或者  losetup -f --show /root/cc.img
cryptsetup luksFormat /dev/loop0 此步驟需要設定一個密碼
cryptsetup luksOpen /dev/loop0 ccfs 此步驟需要輸入剛剛設定的密碼
mkfs.ext4 -m0 /dev/mapper/ccfs
mkdir /mnt/ccfs
mount /dev/mapper/ccfs /mnt/ccfs

啟動命令
losetup /dev/loop0 /root/cc.img
cryptsetup luksOpen /dev/loop0 ccfs
mount /dev/mapper/ccfs /mnt/ccfs

關閉命令
umount /mnt/ccfs
cryptsetup luksClose /dev/mapper/ccfs
losetup -d /dev/loop0

你用的時候打開加密盤,用完了關閉加密盤
別人不知道你的密碼就無法打開你的加密盤,就算是他有root密碼也沒用

不過如果你正在用的時候他遠程登錄上來,那么他還是可以看到你的檔案 

資料來源: https://www.uj5u.com/caozuo/26118.html

2022年3月11日 星期五

Windows 以 PowerShell 建立程式碼簽章用的自簽憑證教學與範例

介紹如何在 Windows 的 PowerShell 中,使用 cmdlet 建立程式碼簽章用的自簽憑證,並對程式進行簽屬。

使用者在使用自我簽屬憑證所簽屬的程式時,需要先安裝與信任憑證,否則程式無法執行,通常自簽憑證僅用於開發與測試階段。

產生自簽憑證

若要產生自簽憑證,可以使用 PowerShell 中的 New-SelfSignedCertificate 這個 cmdlet:

# 建立自簽憑證
New-SelfSignedCertificate -Type Custom `
  -Subject "CN=My Software, O=My Corporation, C=TW" `
  -KeyUsage DigitalSignature `
  -FriendlyName "MyCertificate" `
  -CertStoreLocation "Cert:\CurrentUser\My" `
  -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
   PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
86B1DE90CCFE6640DD3C952CD965939C1E68F1D5  CN=My Software, O=My Corporation, C=TW

產生出來的憑證會存放在本機的憑證存放區 Cert:\CurrentUser\My 之下,我們可以利用以下指令顯示該憑證的詳細資訊:

# 顯示憑證詳細資訊
Get-ChildItem Cert:\CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 |
  Format-List -Property *
PSPath                   : Microsoft.PowerShell.Security\Certificate::CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5
PSParentPath             : Microsoft.PowerShell.Security\Certificate::CurrentUser\My
PSChildName              : 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5
PSDrive                  : Cert
PSProvider               : Microsoft.PowerShell.Security\Certificate
PSIsContainer            : False
EnhancedKeyUsageList     : {程式碼簽署 (1.3.6.1.5.5.7.3.3)}
DnsNameList              : {My Software}
SendAsTrustedIssuer      : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId                 :
Archived                 : False
Extensions               : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
FriendlyName             : MyCertificate
IssuerName               : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter                 : 2022/11/9 上午 10:22:46
NotBefore                : 2021/11/9 上午 10:02:46
HasPrivateKey            : True
PrivateKey               :
PublicKey                : System.Security.Cryptography.X509Certificates.PublicKey
RawData                  : {48, 130, 3, 86...}
SerialNumber             : 48307AE28F623DB54201D579D8CDED72
SubjectName              : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm       : System.Security.Cryptography.Oid
Thumbprint               : 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5
Version                  : 3
Handle                   : 2201999688256
Issuer                   : CN=My Software, O=My Corporation, C=TW
Subject                  : CN=My Software, O=My Corporation, C=TW

我們也可以使用控制台中的「管理使用者憑證」來查看新產生的憑證。(或是以「cert」關鍵字在 Windows 工作列中搜尋也可以找到「管理使用者憑證」)

匯出 PFX 憑證檔案

若要將本機憑證存放區的憑證匯出至個人資訊交換(PFX)檔案,可以使用 Export-PfxCertificate 這個 cmdlet,以下是匯出憑證的步驟。
STEP 1
若要匯出憑證,必須以系統管理員身分執行 PowerShell:


STEP 2
首先準備好保護憑證用的密碼:

$password = ConvertTo-SecureString -String "your_password" -Force -AsPlainText

其中 your_password 請更換為自己設定的密碼。
STEP 3
接著再使用 Export-PfxCertificate 將憑證匯出至 PFX 檔案:

# 將憑證匯出至 PFX 檔案
Export-PfxCertificate -Cert Cert:\CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 `
  -FilePath C:\MyCertificate.pfx -Password $password
    目錄: C:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----       2021/11/9  上午 11:21           2726 MyCertificate.pfx

這樣就可以將憑證匯出至 C:\MyCertificate.pfx 這個 PFX 檔案中了。

若要匯出公開的憑證檔案(不含私鑰),可以使用 Export-Certificate 這個 cmdlet:

# 將公開憑證匯出至 cer 檔案
Export-Certificate -Cert Cert:\CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 `
  -FilePath C:\MyCertificate.cer

除了使用 PowerShell 指令的方式之外,我們也可以透過「管理使用者憑證」的介面來匯出 PFX 檔案。

程式碼簽章

將自簽憑證匯出成 PFX 檔案之後,就可以利用 PFX 檔案來對程式進行進行簽屬:

# 簽屬程式碼
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign `
  /fd SHA256 `
  /f C:\MyCertificate.pfx `
  /p your_password `
  /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp `
  /td SHA256 `
  /v `
  MyApp.exe
The following certificate was selected:
    Issued to: My Software
    Issued by: My Software
    Expires:   Wed Nov 09 10:22:46 2022
    SHA1 hash: 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5

Done Adding Additional Store
Successfully signed: MyApp.exe

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

這樣就完成程式碼的簽屬了。

參考資料

資料來源: https://officeguide.cc/windows-generate-self-signed-certificate-for-code-signing-tutorial-examples/

code signing [程式碼簽章]

 所謂的程式碼簽章,就是一個指一個數位的簽章,在編譯好的軟體上簽章。軟體一旦被重新編譯、修改,上面的簽章就會自然消失。簽章,不代表你的軟體就是無毒無害的,只是說多一層保障而已。

網路上的教學都是建議使用自然人憑證或花錢購買的形式。。。

那有沒有辦法產生出測試用的簽章呢?

作法:

  1. 先下載Windows 10 SDK software Development kit並安裝

    PS: 安裝後長這樣 ...
    1-1 偷懶版的作法,直接下載signtool.exe
    1-1-1 下載點
  2. 使用系統管理員打開powershell ISE
  3. 啟用ExecutionPolicy 為 Bypass
Set-ExecutionPolicy Bypass -Scope Process

[筆記] 如果沒有做這個動作,憑證會產生失敗
4. 撰寫憑證腳本並執行

[筆記] 請參考 產生憑證的powershell腳本
5. 執行後會看到有一個mycert.pfx的憑證檔被產生

6. signtool 的位置如下

[筆記] 如果是直接下載,就不需要去找位置了
7. 向程式做簽章的動作

signtool.exe sign /f mycert.pfx /p helloworld demo.exe
  1. 簽章做完啦
  2. 檢查程式屬性

SignTool 套件簽署的一般命令列語法是:

  • SignTool sign [options] <filename(s)>
    使用 .pfx 檔案中的憑證簽署您的應用程式套件,使用語法:
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx

引用自sign-app-package-using-signtool

  1. 使用virtustotal檢查是否還會被偵測成病毒
    未使用簽章,偵測到六種木馬或後門

    使用簽章後,偵測到四種木馬或後門

    [筆記] 使用簽章後居然沒有被AV (防毒軟體)認定為病毒或後門了

結論:
使用數位簽章,只代表你的程式不容易被竄改,但不代表安全,但好像可以拿來繞過AV ,筆者使用來簽章的程式是使用pyinstaller 包出來的,正常情況下會被windows Defender 視為病毒或後門。

資料來源: https://ithelp.ithome.com.tw/articles/10281279

2022年3月3日 星期四

windows command line in English

 

How do I change my cmd.exe to English?

Execute

chcp 437

in the cmd prompt.

For example:

C:\Users\javaserv> chcp 437
Active code page: 437

2022年3月2日 星期三

windows上等同 cat 及 grep 的指令

 linux 的 cat 及 grep 指令在查找紀錄檔時相當好用,windows系統上也有類似的指令,分別是 type、find 及 findstr,指令的詳細用法可以用 help command 取得說明


顯示檔案內容
cmd> type _vimrc
 set nocompatible
 behave mswin
 set nobackup
 set tabstop=4
 colorscheme koehler

搜尋輸出的資訊,例如查找系統在監聽的通訊埠
cmd> netstat -an | find "LISTEN"
  TCP    0.0.0.0:135             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:4000           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING

那兩個指令的結合就是等同 cat 及 grep
cmd> type file | find "pattern"

type file |findstr /C:"pattern1" /C:"pattern2"

2022年1月27日 星期四

採購規劃階段RFI、RFP、RFQ的區别

委外的流程大致可分為:計畫準備、遴選承包廠商、合約執行與管理、運作與維護等階段。其中計畫準備階段則是指擬定RFP階段,基本流程如下:

在擬定RFP之前,則徵求先諮詢專家的意見(Request For Quotation;RFQ),以作為訂價之參考,降低需求不明確及預算不精確的專案風險;

在招標前,會徵求承包廠商意見(Request For Information;RFI),以使需求明確化;

當需求明確後,進行建議書徵求文件(Request For Proposal;RFP)的擬定工作;

在招標過程中,會針對投標者進行資格的審查(Request For Qualifications;RFQ),以挑選出符合需求的承包廠商。

招標或要求供應商報價前,會使用RFQ,以作為招標底價及比價的參考,在業主已寫定的規格中,價格是提案的重點。但私人企業招標時,為節省流程、採購標準化或再次採購時,有時會逕以RFQ取代RFP。

RFI及RFP要求供應商針對專案的建議與解決方案做說明,前者為業主有一些潛在的供應商,但不知他們的供應能力;或是業主要想解決一些面臨的問題,但沒有很具體的解決方式,於是廣邀潛在供應商提出RFI,然後據以篩選出較符合需求的專案執行公司,然後要求被選出的公司近一步提出RFP。基本上RFI階段大都不包含專案費用報價,故供應商提案時注意的重點是產品的規格/性能,或是最能解決業主問題的方法;RFP在階段,業主通常會辦理說明會解說需求或為潛在供應商釋疑,但不一定在每個RFP之前都有RFI。

【資訊需求書】Request for Information (簡稱RFI)

RFI又可稱為Call For Information(簡稱CFI),是一個業主/買家用來徵求供應商對產品、工程或服務規劃的文件。此僅為一資訊請求,並不作為對供應商採購的承諾。RFI不是必要之程序,且無制式格式,一般是以問答方式列出業主所想收集之資訊,在此階段雖大多不包含專案費用報價,但仍必須全力展現供應商的長處,若我商有對於此產品有特殊專利或Know-how,則應該先申請專利或智慧財產權保護的前提下,將業主或買主未來的RFP引導到我方特殊專利或規格上,也就是所謂的”Spec-in,此為絶佳時機。

【提案邀請書】Request for Proposal (簡稱RFP)

較大型標案中,甲方會提供RFP給所有有意願承包的乙方當參考資料,RFP的內容主要是針對甲方所欲外包的工作,做更詳細的說明,乙方可以更清楚地評估自身承接標案的能力,並據以評估時程、成本之後,做出報價。

【報價邀請書】Request for Quotation (簡稱RFQ)

通常業主在RFQ文件中必須詳細定義產品規格、品質要求、預計應用、驗證方式、出貨包裝、交貨數量及出貨日期等等,然後發出該RFQ給潛在供應商,而身為供應商的我方,應依照客戶需求依序列示我方產品的符合程度或提出更佳建議方案,並提出最具競爭力的價格方案。

什麼是Expression of Interest (EOI)?

EOI和LOI (Letter of Intend)都稱為意向書,是買方參與該案的意願表達,屬於很初始的文件,不具有任何約束力。前者通常在閱讀機密文件(Confidential Information Memorandum, CIM)但在作信用調查(due diligence, DD)及管理階層會議之前,所以多為很概略式的陳述;後者通常在仔細閱讀賣方條件、初步評估及DD之後,雖不具任何約束力,但形式上較EOI正式。

其內容通常包含一信函及有關團隊組成、公司營收資料及相關實績介紹等資料。

資料來源:https://gpa.taiwantrade.com.tw/zh/pages/success/project-documents

2022年1月21日 星期五

務實地評估磁碟儲存系統的效能

林振誠
現任普安科技技術處技術支援部資深副理,在磁碟陣列研發、測試領域有近10年的經驗。


效能永遠是一個充滿爭議的問題,廠商基於突顯產品特色的立場,必然會以最理想情況下測得的數值作為規格基準,而使用者在購入產品後,也必然希望它能發揮出和宣傳中數值一樣的效能。然而由於應用環境與操作方式的差異,用戶實際得到的產品效能與廠商宣稱多少有些差異,許多誤解也就由此產生。

就整個IT硬體架構而言,含有機械元件的磁碟系統一直是決定IT系統效能的關鍵,因此了解磁碟系統的I/O效能,也成為評估整個IT系統運作能力不可或缺的一環。

但對磁碟系統來說,存取性能往往會受到從前端伺服器到後端儲存裝置的每一環節所影響,普安科技技術處資深副理林振誠提醒,在評估採購需求或建置、調校磁碟系統時,必須注意存取資料流流經的每一環節,認清效能瓶頸所在,才能對症下藥。

問:影響磁碟儲存系統效能的因素有哪些?
答:從前端伺服器到後端儲存裝置,每一環節都會有影響,只要任一環節有所差異,得到的效能數值就會不同。

我們可以將整個磁碟儲存系統分成三部份來看;一、前端伺服器;二、伺服器與磁碟陣列間的傳輸通道;三磁碟陣列本身。

問:前端伺服器影響效能的因素有哪些?
答:伺服器本身的處理器、記憶體、磁碟系統以及匯流排規格,都關乎伺服器發起存取需求的能力。如果伺服器不夠快,發起存取需求的能力不夠,那傳輸通道頻寬再大、後端磁碟陣列再快,也沒辦法充分發揮,這會變成後端的磁碟陣列經常閒置,等待前端伺服器發起存取需求。這些規格中尤其是匯流排的影響經常被忽略。

對4Gb/s頻寬的光纖通道來說,採用PCI-X介面的伺服器已經無法滿足需求,目前企業級磁碟陣列與4Gb FC通道的性能都已經超過1條PCI-X的頻寬,如果用戶的伺服器是以1張PCI-X介面的FC HBA連接磁碟陣列,那無論如何都無法得到磁碟陣列的最大效能。要充分發揮傳輸通道的可用頻寬,最好是在兩條PCI-X上安裝兩張HBA卡,分別連接磁碟陣列上不同RAID Group,將負載分散到兩條PCI-X匯流排上。當然如果改用頻寬更高的PCI-e介面,問題就會減少許多。

問:伺服器應用程式的類型會不會造成影響?
答:會。有些應用程式如資料庫,需要的是隨機存取性能,有些應用程式如備份、視訊播放則注重連續存取效能,而不同磁碟陣列的存取特性都不同,某些差別還必須在有大量存取需求的大型環境中,才能發現。

以我們之前碰過的一個用戶為例,他們的應用系統講求的是:大量伺服器同時發出存取需求時,磁碟系統的回應時間(response time)。在測試中,某產品在少量存取需求時,還能維持相當短的回應時間,但若同時收到的存取需求增加,回應時間馬上大幅上升。相比之下,另一個產品在少量存取需求時的回應時間比較遜色,但在同時大量存取要求下,還能維持相對較低的回應時間。對用戶來說,他們需要的就是後面這個系統。但從這個例子來看,這種產品間的差異必須在特定環境下才能看出來。

問:傳輸通道的因素又是如何?
答:一般提到的磁碟效能規格中,傳輸通道頻寬是最清楚易懂的,4Gb/s的光纖通道比2Gb/s快,也比採用1GbE的iSCSI快,不過某些特殊類型的傳輸通道規格的頻寬,就不能這樣直接理解。如目前SAS規格是3Gb/s,也就是300MB/s的頻寬,但SAS具有四合一頻寬聚合技術,可以把4條SAS匯流排聚合成1組,因此頻寬就成為300MB/s×4,也就是說,當磁碟陣列以SAS纜線直接連接伺服器時,將能得到1.2GB/s的最大頻寬。

問:在磁碟陣列這一端,影響的因素有哪些?
答:不同的硬碟數量、轉速與控制器設計都會造成效能上的差異。目前1臺1.5萬轉硬碟的持續傳輸能力最高可達到125MB/s,7,200轉硬碟則在80、90MB/s左右,因此某些在宣稱能提供數萬個IOPS,或能達到上千MB/s傳輸速率的系統,事實上都是依靠大量硬碟的同時存取,並開啟多條FC通道才達到的,有時甚至還要外接的擴充硬碟櫃,以增加整體系統的硬碟數量。

另外,控制器對I/O處理能力也有很大的影響。同樣是16臺硬碟的磁碟陣列,由於控制器使用的處理器性能差異,對每秒處理的IO數有時可相差一倍以上。

問:對磁碟陣列來說,有哪些可以作為評估效能的指標?又有哪些工具可以使用?
答:主要是兩個指標:每秒處理的IO數量(Input/Output per second,IOPS),以及每秒傳輸多少MB(MB per second)。業界一般是以Iometer來測試磁碟陣列,透過參數的調整,可以模擬不同的存取行為。當然任何測試工具都有盲點,最好的評估方式,還是使用企業本身實際執行的應用程式,才能看出磁碟陣列的真實表現。整理⊙張明德


業界視為標準的磁碟效能測試工具:Iometer

Iometer是目前業界量測儲存系統I/O效能的標準工具,可藉由負載產生器(Workers)的參數調整,透過測試元件產生不同區塊大小的輸入輸出請求與讀取/寫入的分布比例,模擬網路伺服器、檔案伺服器以及線上交易資料庫的讀寫行為。由測試得出系統的最大I/O處理能力、傳輸速率與CPU占用率,使用者即可評估在不同應用環境下,伺服器儲存系統或是外接儲存設備的性能。Iometer本身是一套開放原始碼軟體,最新的版本為2006.07.27,可支援Windows、Linux、Solaris與Mac OS X等平臺。

Iometer重要參數:
Iometer內可調節的參數相當多,我們從一般效能測試中常用的一些參數,逐一簡單說明。

拓墣面板
Worker:設定每個磁碟同時執行的執行緒(thread)數目。對一些高性能伺服器或企業級儲存設備,必須增加Worker數目,才能測得最大的效能。

磁碟目標面板
# of Outstanding IO:設定每個磁碟同時發起I/O的數量,若是模擬串流檔案的播放或類似環境,可用預設值1。若要模擬同時有多個應用程式發出存取需求的環境,可依不同狀況設定。不過如果設太大的話,系統很可能會當機。

存取明細對話框
Transfer Request Size:每個I/O存取需求的Bytes大小,要測試系統最大I/O處理能力可設為512Bytes,要測試最大傳輸能力(MB/s)可設為128kB到512kB。

Percent Read/Write Distribution:讀取/寫入比例,模擬一般應用程式存取可設為50%讀+50%寫,或60%讀+40%寫;若要模擬備份寫入行為,可設為100%寫入;若要模擬還原動作,可設為100%讀取。

若要讓GbE這類全雙工通道發揮最大效率,可設為50%讀+50%寫,以便啟動雙向傳輸。

Percent Random/Sequential Distribution:隨機/循序存取比例,若要模擬多媒體串流檔案播放,或是大量連續資料的備份/還原,可設為100%循序存取;若要模擬高交易資料庫,可設為100%隨機存取。

測試設定選單
Run Time:測試執行時間,一般設為30到60秒。

Ramp Up Time:在測試某些擁有大量快取記憶體的系統時,為避免系統剛開始測試時一些異常或不穩定的數值,影響測試統計結果,可設定15到60秒的Ramp Up時間,等待系統進入穩定後再錄取測試數值。

Iometer的結果顯示面板可顯示IOPS、傳輸頻寬、回應時間、處理器占用率等6類測試結果,點選個別類型還有更精細的結果分析。


資料來源:https://www.ithome.com.tw/tech/47376