2024年3月30日 星期六

在 RedHat Linux 8/9 使用pam_pwquality設定密碼原則和複雜性

在 RHEL 8/9 中設定以下密碼原則和複雜性需求

參考;原廠資料1。有說明以下設定
1.強制 root 密碼複雜性。
2.密碼大小(新密碼可接受的最小長度)。
3.設定密碼的位數限制。
4.設定密碼中大寫字元的數量限制。
5.設定密碼中小寫字元的數量限制。
6.設定密碼中其他字元的數量限制。
7.設定密碼中所需類別的最小數量(數字、大寫字母、小寫字母、其他)。
8.設定密碼中允許的連續相同字元的最大數量。
9.設定密碼中允許的同一類連續字元的最大數量。
10.設定舊密碼中不得出現在新密碼中的字元數。
11.不應允許使用者在密碼中包含使用者名稱。
上述要求可以透過pam_pwquality達成。預設情況下,此模組在所有 SSSD 設定檔中啟用。

設定說明

可以依據需求將以下設定加入/etc/security/pwquality.conf中。

1.強制 root 密碼複雜性。

enforce_for_root

2.密碼大小(新密碼可接受的最小長度)。

minlen = 9       
密碼最小長度為9個字元

3.密碼中包含數字的最大信用。

dcredit = -1
密碼必須包含數字的數量

4.密碼中包含大寫字元的最大信用。

ucredit = -1
密碼必須包含大寫字母的數量

5.密碼中包含小寫字元的最大信用。

lcredit = 1
密碼必須包含小寫字母的個數

6.密碼中包含特殊字元的最大信用。

ocredit = 1
密碼必須包含特殊字元的數量

7.密碼中所需字元類別的最小數量。

minclass = 1

8.密碼中允許的連續相同字元的最大數量。

maxrepeat = 2
最多只允許2個連續字元(如果是0,則停用該選項)

9.密碼中允許的同類連續字元的最大數量。

maxclassrepeat = 2
最多只允許2個連續字元(如果是0,則停用該選項)

10.設定舊密碼中不得出現在新密碼中的字元數。

difok = 5
新密碼最多可以有5個字元和舊密碼相同
此選項對root沒有作用,因為root不會被要求輸入舊密碼,因此不會執行比較新舊密碼的檢查

11.不應允許使用者在密碼中包含使用者名稱。

啟用pam_pwquality,預設強制執行這個條件。
可以檢查/etc/security/pwquality.conf
---
# Whether to check if it contains the user name in some form.
# The check is enabled if the value is not 0.
# usercheck = 1
#
# Length of substrings from the username to check for in the password
# The check is enabled if the value is greater than 0 and usercheck is enabled.
# usersubstr = 0
---

關於3.4.5.6選項設定使用信用(credit),可根據要求以不同方式配置信用值。
信用值評估如下:
信用值 > 0:新密碼中包含對應字元的最大信用值。
信用值 < 0:新密碼中包含對應字元所需的最低強制信用值。
信用值 = 0:對於新密碼中的對應字元類別沒有強制要求。

另外以下參數在網路上查到參考使用
1.只限定本機帳號
local_users_only

2.密碼3次嘗誤後產生錯誤提示
retry=3

3.新密碼不能和最近用過的4次密碼相同
remember=4

4.使用sha512 加密方法加密
sha512

2024年3月28日 星期四

在 RedHat Linux 8/9 使用pam_faillock鎖定使用者帳戶

在 RedHat Linux 8/9 使用pam_faillock鎖定使用者帳戶

在之前在Linux使用pam_faillock鎖定使用者帳戶,是在CentOS 7.9設定達成,在RHEL 8/9參考資料2進行設定。

設定配置

在RHEL 8/9不建議直接編輯/etc/pam.d/system-auth和/etc/pam.d/password-auth。
將使用authselect啟用/停用pam_faillock,在RHEL 7則是使用authconfig 進行配置。

要正確使用faillock.conf配置,請先更新至authselect-1.2.1-2.el8和pam-1.3.1-8.el8或更高版本。
# dnf upgrade authselect pam

啟用faillock

# authselect current                                          <--- 檢查現有設定 
# authselect check                                           <--- 檢查現有設定
# authselect enable-feature with-faillock           <--- 啟用faillock 
# authselect select sssd with-faillock                 <--- 使用設定檔並啟用faillock
# authselect select sssd with-faillock  --force    <--- 使用 --force 強制設定

停用faillock

# authselect disable-feature with-faillock

設定faillock限制

faillock限制設定檔/etc/security/faillock.conf
---
deny=3
unlock_time=600
silent
---
使用者3次失敗後鎖定使用者帳號10分鐘(600 秒)。

驗證檢查

使用faillock 重設/檢查失敗記錄。

顯示username認證失敗記錄:
# faillock --user username

重置username認證失敗記錄:
# faillock --user username --reset

特別設定

限制root

如果要特別限制root,在/etc/security/faillock.conf,增加even_deny_root。

變更鎖定重置持續時間

連續認證失敗時間間隔由fail_interval=n選項控制。預設值為 900(15 分鐘)。
若要將間隔變更為 10 分鐘,請在/etc/security/faillock.conf 修改。
---
fail_interval=600
---

排除特定用戶

如果要排除普通使用者在多次登入失敗後被鎖定,請將使用者新增至使用者群組(例如no_faillock_group),
在/etc/security/faillock.conf 新增以下設定。
---
admin_group=no_faillock_group
---

持續帳戶鎖定

pam_faillock 使用的預設目錄通常會在系統啟動時清除,因此系統重新啟動後也將重新啟用存取。
如果希望持續帳戶鎖定,請在/etc/security/faillock.conf 增加dir=選項。
---
dir=/var/log/faillock
---
請確認目錄已創建,系統重新啟動後帳戶將保持鎖定狀態。
mkdir /var/log/faillock -p

如果指定/var/log/faillock目錄但無效,請確認系統是否啟用SELinux。
SELinux 執行有針對性的策略,將要求任何非預設計數目錄的安全性權限與預設目錄的安全性權限相符。如果不更新安全性權限,pam_faillock 模組無法將失敗的登入紀錄嘗試寫入非預設計數目錄。

使用以下指令檢查非預設計數目錄的安全性權限
# ls -Zd /var/log/faillock
unconfined_u:object_r:var_log_t:s0 /var/log/faillock

如果非預設計數目錄的安全性權限不是faillog_t,
使用以下指令更新安全性權限為faillog_t
# semanage fcontext -a -t faillog_t "/var/log/faillock(/.*)?"

使用以下指令更新非預設故障鎖定目錄/子目錄和檔案正確權限。
# restorecon -R -v /var/log/faillock

參考資料
How to use pam_faillock in Red Hat Enterprise Linux 6 & 7 to lockout users due to successive failed login attempts
What is pam_faillock and how to use it in Red Hat Enterprise Linux 8 & 9?

2024年3月27日 星期三

在Linux 使用pam_faillock鎖定使用者帳戶

在Linux使用pam_faillock鎖定使用者帳戶

為了增加主機安全性,將限定使用者帳號登入密碼錯誤次數後鎖定使用者帳戶。
現有主機OS為CentOS7.9,參考RedHat官網資料1資料2資料3
發現在Red Hat Enterprise Linux 7可以使用pam_faillock和pam_tally 2種方式。
將使用pam_faillock來設定使用者3次失敗後鎖定使用者帳號10分鐘(600 秒)的功能。

設定

在RHEL 7.x 參考資料1,有2個方法。

第一個直接修改PAM設定檔
直接將以下設定加入/etc/pam.d/system-auth和/etc/pam.d/password-auth,2個檔案都要。
要照順序加入3行設定,才會生效。
---
auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=600      # 增加設定
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_faillock.so authfail audit deny=3 unlock_time=600            # 增加設定
auth        required      pam_deny.so
account     required      pam_faillock.so                                                  # 增加設定
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so
---

第二個是使authconfig 進行配置
要注意 authconfig-6.2.8-19 及更高版本支援 pam_faillock,才不會出現錯誤。
啟用
authconfig --enablefaillock --faillockargs="deny=5 unlock_time=1200" --update
停用
authconfig --disablefaillock --update

功能驗證

使用faillock 指令,可以查看/重設身份驗證失敗記錄
顯示使用者認證失敗記錄:
# faillock --user username
重置使用者認證失敗記錄:
# faillock --user username --reset

特別設定

變更鎖定重置持續時間

當連續認證失敗重覆發生的鎖定時間,其間隔可以由fail_interval=n 選項控制。
預設值為 900(15 分鐘)。若要將間隔變更為 10 分鐘,可以新增選項,
---
auth        required      pam_faillock.so preauth silent audit fail_interval=600 deny=3 unlock_time=600      # 增加 fail_interval
---

指定root用戶不同設定

如果要設定root用戶和普通用戶不同設定,增加even_deny_root設定
---
auth    required    pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200 root_unlock_time=600
---

排除特定用戶不鎖定

如要排除使用者在多次登入失敗後鎖定,請將以下行新增至pam_faillock並將user1 、 user2等替換為實際使用者名稱:
---
auth [success=1 default=ignore] pam_succeed_if.so user in user1:user2:user3                       #增加設定,排除特定使用者
auth        required      pam_faillock.so authfail audit deny=3 unlock_time=600
---


sshd服務配置調整

如果pam_faillock.so沒有正常運作,請檢查sshd服務的配置。

檢查sshd設定檔/etc/ssh/sshd_config,請確認ChallengeResponseAuthentication和PasswordAuthentication設定正確。
---
ChallengeResponseAuthentication yes
PasswordAuthentication no
---
重新啟動sshd服務,使配置變更生效。
#systemctl restart sshd

參考資料
How to use pam_faillock in Red Hat Enterprise Linux 6 & 7 to lockout users due to successive failed login attempts
https://access.redhat.com/solutions/7002274
What is pam_faillock and how to use it in Red Hat Enterprise Linux 8 & 9?
https://access.redhat.com/solutions/62949
Difference in the behavior of unlock_time in pam_faillock and pam_tally modules
https://access.redhat.com/solutions/649663

2024年3月21日 星期四

SSH 使用公鑰無法登入問題:Not a RSA1 key file

SSH使用公鑰登入時遇到的問題:Not a RSA1 key file


之前是一般使用者建立ssh金鑰免密碼登入,後來有需求是root使用一般使用者登入主機,發生無法登入狀況。

建立過程

使用root 建立金鑰
[root@MGM01 .ssh]# ssh-keygen
使用root 經由使用者安裝金鑰成功無錯誤
[root@MGM01 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub mysql@192.168.203.101
[root@MGM01 .ssh]# ssh mysql@192.168.203.101
但無法登入成功。
ssh-keygen01

問題檢查過程

1.檔案目錄權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_key


2.ssh 啟用debug登入檢查
2-1.修改遠端遠機/etc/ssh/sshd_config文件,新增 LogLevel Debug 

2-2.[root@MGM01 .ssh]# ssh -vvv mysql@192.168.203.101
訊息出現 Not a RSA1 key file 的問題


3.遠端主機另外建立ssh 測試,也都無法正常連線。
/usr/sbin/sshd -d -p 2222
ssh -vv localhost -p 2222

4.確認遠端系統為舊板本Suse Linux 10, 本機為CentOS 7.X。遠端主機沒有selinux.
查到資料1,資料2,資料3就只能參考。
紀錄一下。
確認目錄權限
ls -laZ .ssh目錄
重設權限
restorecon -r -w /home
restorecon -FRvv ~/.ssh
chcon -Rv -t ssh_home_t ~/.ssh

結論
網路有人遇到同樣的問題,但沒有標準的解決辦法。
都提到可能是key檔案權限問題,ssh_config,sshd_config設定問題。
檢查過後都沒有異常,也重新建立金鑰,都無法成功,之後連一般使用者登入都出現問題,最後只有用傳說大法(reboot),重開機就正常。



2024年3月14日 星期四

SSH Terrapin Prefix Truncation Weakness (CVE-2023-48795)

SSH Terrapin Prefix Truncation Weakness (CVE-2023-48795)問題解決

主機被發現有SSH Terrapin Prefix Truncation Weakness (CVE-2023-48795)問題,作業系統為CentOS7.9。
查詢後Redhat原廠有說明發生原因及解決方法。
https://access.redhat.com/security/cve/cve-2023-48795

問題說明:
SSH 通道完整性中發現缺陷。透過在握手期間操縱序號,攻擊者可以刪除安全通道上的初始訊息,而不會導致 MAC 故障。
例如,攻擊者可以停用 ping 擴展,從而停用 OpenSSH 9.5 中針對擊鍵計時攻擊的新對策。

對於 RHEL-7:
在 RHEL7 上的檔案 /etc/ssh/ssh_config 和 /etc/ssh/sshd_config 中使用嚴格的 MAC 和密碼。
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
MACs umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512

參考說明直接在 /etc/ssh/sshd_config 增加設定。
01-cve-ssh


重新啟動ssh server。

發現無法登入,檢查過後,才發現PuTTY版本(0.6x)過舊,更新到0.73後就正常連線。
02-cve-putty



How to setup SSH Key passwordless login in Linux

在 Linux 中設定 SSH Key 免密碼登入

為了某些目的,登入遠端主機時不需要輸入密碼,先在使用者主機生成一組key,
包含公鑰(Public Key)與私鑰(Private Key),再將公鑰傳送至遠端主機,達成登入免輸入密碼。
現在環境使用Centos 7,參考RedHat 原廠文件進行設定。參考資料1

1.在使用者主機使用想要遠端登入的帳號執行ssh-keygen生成金鑰SSH-Key

在預設執行ssh-keygen 會產生2048位元的RSA金鑰。
在生成過程當提示輸入密碼時,如果需要完全無密碼登錄,請使用空白密碼。
01-ssh-keygen

如果想要用長度更長的 key 如 3,072 或 4,096 bits,可使用 -b 3072 或 -b 4096。
也可以使用不同加密方式如ssh-keygen -t ecdsa或ssh-keygen -t ed25519,產生密鑰。
 不同加密方式產生的檔案名稱會有不同,RSA是id_rsa,ECDSA是id_ecdsa。

2. 將公鑰安裝到遠端主機的使用者帳戶
選擇以下任一方法將公鑰安裝到遠端主機中的使用者帳戶。
2.a.使用ssh-copy-id
可以使用ssh-copy-id指令將產生的身份驗證金鑰的公鑰部分安裝到遠端主機使用者的主目錄中
ssh-copy-id -i ~/.ssh/id_rsa.pub user@ssh-server.example.com
02-ssh-copy-id


出現提示時,提供遠端使用者的密碼。 
ssh-copy-id會自動將使用者資訊附加到遠端主機上指定使用者的檔案~/.ssh/authorized_keys。
ssh-copy-id是包含在openssh-clients中,如要使用此方法請先確認是否安裝openssh-clients。
安裝過程請確認公鑰檔案。

2.b.使用ssh和cat
可以 ssh 登入遠端主機,但是openssh-clients 未安裝,使用以下命令有助於將公鑰複製到伺服器:
cat ~/.ssh/id_rsa.pub | ssh user@ssh-server.example.com "cat >> ~/.ssh/authorized_keys"

2.c.直接編輯遠端主機主機~/.ssh/authorized_keys
可以 ssh 登入遠端主機,直接將使用者公鑰內容編輯寫入遠端主機~/.ssh/authorized_keys中

3.檢查檔案權限
.ssh目錄及authorized_keys 不能具有寫入權限。
如果檔案模式不正確,使用以下命令修復:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh/

4.停用密碼認證,只允許金鑰認證登入,避免網路亂猜密碼的攻擊。
在主機的 /etc/ssh/sshd_config 修改以下的設定
---
PasswordAuthentication no
PubkeyAuthentication yes
---

修改完成後,請重新啟動sshd。

5.關於加密方法的選擇,依據參考資料2
如果連線舊的作業系統,選用 RSA,並指定至少 3,072 bits 長度。
如果連線比較新的系統,選用 ED25519 。GitHub 和 GitLab 都能支援設定 ED25519。

參考資料:
1.如何在 Red Hat Enterprise Linux 中設定 SSH Key 免密碼登入
2.選擇 SSH key 的加密演算法

2024年3月13日 星期三

Debian install Xrdp+XFCE4

Debian install Xrdp+XFCE4

使用Debian 12 server,作為管理主機,安裝xrdp+xfce4遠端登入使用,進行日常管理應用,紀錄安裝過程及步驟。

安裝環境
Debian Linux 12 (bookworm)

01-os







安裝Xrdp+xorgxrdp

apt --no-install-recommends --no-install-suggests install xrdp xorgxrdp
01-install xrdp xrdpxorg

















只安裝xrdp,登入時會無法顯示,後面增加xorgxrdp就可以正常登入。

安裝XFCE4

apt --no-install-recommends --no-install-suggests install xfce4 task-xfce-desktop

02-install xfce4









安裝xfce4+task-xfce-desktop只有基本環境及設定工具,沒有應用程式。 

安裝firefox+中文

apt --no-install-recommends --no-install-suggests install firefox-esr  fonts-arphic-ukai

07-install firefox fonts





安裝firefox-esr 及 fonts-arphic-ukai 文鼎楷書體。

安裝成果

後續會再安裝其它軟體,方便進行管理主機應用。

06-login in


07-login in








2024年3月1日 星期五

投資-202403

投資-202403

3/2
台股龍年開紅盤,台積電ADR大漲帶動創709新高,帶動台股突破萬九。在2月期間搭配美股上漲,台股上漲1077.21點,創下19023.01歷史高點。美股科技股創高,Nvidia站上800,美超微.AMD等AI相關大漲。聯準會降息時程再延後。APPLE預計停止開發電動車,投入AI發展。
台股站上萬九會調整定期金額。

總投入金額 101350
市值 120047

20240301



3月份除息ETF
00929 配息0.13元,3/19除息,4/16領息。
00919 配息0.61元,3/18除息,4/15領息。