顯示具有 ssh 標籤的文章。 顯示所有文章
顯示具有 ssh 標籤的文章。 顯示所有文章

2024年5月5日 星期日

WinSCP use ssh key without password to login Linux

WinSCP設定SSH key 免密碼登入Linux主機

在Windows下使用PuTTYgen產生ppk檔,除了讓PuTTY設定SSH key 免密碼直接登入Linux主機,也可以在WinSCP下使用。設定WinSCP使用ppk檔,經過SFTP 免密碼直接登入Linux主機。
WinSCP程式可以直接在官網單獨下載免安裝版本,也可以直接下載WinSCP程式完整安裝。
https://winscp.net/eng/downloads.php
WinSCP中文化及其它設定可以參考網頁

WinSCP 設定

執行WinSCP.exe,現在使用6.3.2版本。
WinSCP 6.3.2

1.設定連線主機

   選取新增台,檔案協定選取「SFTP」。主機名稱設定連線主機IP,連接埠。使用者名稱設定登入帳號。再選取「進階」進行設定。
    如果要修改已設定主機,選取已設定主機站台,先選取「編輯」,再選取「進階」進行設定。
WinSCP edit config


new host site


2.設定金鑰檔案

   進入進階站台設定,選取「SSH」>「身份核對」,在私鑰檔案選取「...」,選取ppk檔。
WinSCP key authentication

  指定ppk檔案,選取「確定」完成設定。

WinSCP key authentication ppk
 
  選取「儲存」,儲存站台設定。

save host site

驗證結果

直接選取登入的主機站台,選取「登入」。
WinSCP login in

直接登入成功。
WinSCP login


2024年5月3日 星期五

Use ssh key without password to login Linux in Windows

在Windows下使用SSH Key免密碼直接登入Linux主機

已經在Windows下使用PuTTYgen產生ppk檔。現在設定PuTTY使用ppk檔免密碼直接登入Linux主機,紀錄設定過程。
PuTTY程式可以直接在官網單獨下載最新版本,也可以直接下載PuTTY程式完整安裝。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

PuTTY.exe,現在使用0.81版本。

PuTTY-0.81


PuTTY 設定

1.設定連線主機Session

   選取「Session」>在Host Name (or IP address)設定新的連線主機。如果要修改已設定主機,先選取Saved Sessions的主機,再選取Load載入主機設定。

New Host Session


2.設定Public-key authentication

   選取「Connection」>「SSH」>「Auth」>「Credentials」中 Public-key authentication 的 Private key file for authentication Browe來指定檔案。

set Public-key authentication


   選取相關的ppk檔。

Load Public-key ppk

  指定檔案完成。

check Public-key ppk


3.設定Auto-login username

   選取「Connection」>「Data」中 Login details,在 Auto-login username 輸入登入使用者帳號。
  設定完成後,記得到「Session」,選取主機的Sessions,再選取Save儲存主機設定。

Auto-login username


驗證結果

1.使用Linux生成SSH Key經PuTTYgen轉換的ppk檔,登入成功畫面。

use linux ssh key login


2.在Windows使用PuTTYgen生成SSH Key匯出為Linux使用的檔案(bee02-publickey)。
    將bee02-publickey檔案放入遠端主機的使用者Home目錄下。再執行匯入指令,將公鑰匯入檔案。

import Puttygen rsa
      
  登入成功畫面。

use windows ssh key login




2024年5月1日 星期三

How to create an SSH key in Windows using PuTTYgen

如何使用PuTTYgen 在Windows建立SSH金鑰

Linux設定SSH key 免密碼登入直接在主機生成金鑰就可以使用,如果要在windows下使用PuTTY設定SSH key 免密碼登入Linux主機,
要先使用PuTTYgen直接產生Windows使用的ppk檔,或將Linux生成的金鑰轉換為Windows使用ppk檔。

官網說明
PuTTYgen 是一個金鑰產生器。它產生要與 PuTTY、PSCP、PSFTP 和 Plink 以及 PuTTY 驗證代理 Pageant 一起使用的公鑰和私鑰對。PuTTYgen 產生 RSA、DSA、ECDSA 和 EdDSA 金鑰。
https://the.earth.li/~sgtatham/putty/0.81/htmldoc/Chapter8.html#pubkey-puttygen

可以直接在官網下載最新版本,也可以直接下載PuTTY程式完整安裝,就會包含PuTTYgen。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

PuTTYgen Release 0.81

PuTTYgen Release 0.81

PuTTYgen產生金鑰

先選擇加密方式RSA 及 2048位元長度,再選取Generate a public/private key pair 的 「Generate」,就能開始建立SSH密鑰。

Generate a public/private key pair


在設定過程,滑鼠在Key區塊內隨意移動,產生雜湊數據,讀取條才會增加。

move mouse


等讀取條跑完就產出密鑰,點取「Save Public key」或「Save private key」,儲存為ppk檔。

Save private key


選取「Conversions」>「Export OpenSSH key」。匯出為linux使用的檔案格式。再將密鑰匯入主機。

Export OpenSSH key


PuTTYgen轉換Linux 的金鑰

執行PuTTYgen.exe,選取「Conversions」>「Import key」。

PuTTYgen import key


選擇已有的金鑰檔案。
select rsa file

匯入後,選取「Save private key」。
import save private key

輸入檔案名稱,存檔類型為Putty Private Key Files(.ppk),副檔名為ppk。
save private key ppk file


後續在Windows 設定PuTTY、WinSCP 等軟體經由SSH使用密鑰方式登入Linux主機。


2024年3月28日 星期四

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

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

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

設定配置

在Red Hat Enterprise Linux 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 的加密演算法

2022年10月12日 星期三

電腦-Linux-Rocky Linux 9/Alma Linux 9 sshd

Rocky Linux 9/Alma Linux 9 sshd setup 

在Rocky Linux 9/Alma Linux 9 install 中,ROOT PASSWORD設定時,選取Allow root SSH login with password,讓root帳號可以使用SSH遠端登入。

Rocky Linux 9 install-root password


主機實際上線後,需關閉此功能,現在為獨立設定檔/etc/ssh/sshd_config.d/01-permitrootlogin.conf,
不寫在/etc/ssh/sshd_config中。
linux9-sshd01




linux9-sshd02-01-permitrootlogin.conf


將PermitRootLogin yes更改為PermitRootLogin no

再重新啟動sshd即可


部分設定檔獨立在50-redhat.conf

linux9-sshd02-50-redhat.conf