ssh、PAM模組

TestAL4193發表於2024-05-09

.ssh/known_hosts 儲存ssh指紋
sshd 伺服器端
/etc/ssh/sshd_config 伺服器端的配置檔案
man 5 sshd_config 伺服器端的配置檔案幫助
echo root:1111|chapasswd 修改密碼
openssl rand -base 64 9 隨機取9位密碼(隨機數經過base編碼取9位)

ssh常用引數:

Port  22     #生產建議修改
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes #預設ubuntu不允許root遠端ssh登入
StrictModes yes   #檢查.ssh/檔案的所有者,許可權等
MaxAuthTries   6     #pecifies the maximum number of authentication 
attempts permitted per connection. Once the number of failures reaches half this 
value, additional failures are logged. The default is 6.
MaxSessions  10         #同一個連線最大會話
PubkeyAuthentication yes     #基於key驗證
PermitEmptyPasswords no      #空密碼連線
PasswordAuthentication yes   #基於使用者名稱和密碼連線
GatewayPorts no
ClientAliveInterval 10 #單位:秒
ClientAliveCountMax 3 #預設3
UseDNS yes #提高速度可改為no
GSSAPIAuthentication yes #提高速度可改為no
MaxStartups    #未認證連線最大值,預設值10
Banner /path/file
#以下可以限制可登入使用者的辦法:
AllowUsers user1 user2 user3
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2

在 ubuntu 上啟用 root 遠端ssh登入

#修改sshd服務配置檔案
vim /etc/ssh/sshd_config 
#PermitRootLogin prohibit-password 註釋掉此行
PermitRootLogin yes 修改為下面形式
systemctl restart sshd

ssh(telentPro)
ssh直接連線主機,並儲存對方公鑰以及指紋(指紋唯一。如果需要刪除指紋就性 .ssh/known_hosts)
自動同意:StrictHostKeyChecking=no 或者修改配置檔案StrictHostKeyChecking no

sshpass自動登入ssh工具

-p 後跟密碼
-f 儲存密碼的檔名
-e 變數密碼
sshpass -p 123465 ssh  StrictHostKeyChecking=no 10.1.1.1 'hostname'

公鑰交換原理
image

image

ssh -keygen生成公私鑰對
ssh -copy-id root@10.1.1.1 發生公鑰給其他主機
加強版:(透過各個主機都使用同個金鑰對,解決多個主機互相使用ssh需要重新建立公私鑰對增加複雜性)
ssh -keygen #生成公私鑰對
sshpass -p $pass ssh-copy-id -o StrictHostKeyChecking=no 127.0.0.1 #將公鑰複製到自己主機上
rsync -a .ssh 10.0.0.#id:/root/ #將主機的公私鑰對傳送到其他主機上

scp

從本地複製檔案到遠端主機:
scp file.txt user@remote_host:/path/to/destination
從遠端主機複製檔案到本地:
scp user@remote_host:/path/to/file.txt /local/destination
從遠端主機複製整個目錄到本地:
scp -r user@remote_host:/path/to/directory /local/destination
從本地複製整個目錄到遠端主機
scp -r /local/directory user@remote_host:/path/to/destination
使用自定義 SSH 埠複製檔案:
scp -P 2222 file.txt user@remote_host:/path/to/destination
使用 scp 命令同時壓縮和加速傳輸:
scp -C -l 1000 file.txt user@remote_host:/path/to/destination

rsync(scpPro):

-a, --archive:歸檔模式,以遞迴方式複製檔案,並保持所有檔案屬性。
示例:rsync -a source/ destination/
-v, --verbose:詳細輸出模式,顯示 rsync 的執行過程。
示例:rsync -av source/ destination/
-r, --recursive:遞迴複製目錄及其內容。
示例:rsync -r source/ destination/
-u, --update:僅複製原始檔中更新的部分到目標位置。
示例:rsync -u source/ destination/
-n, --dry-run:模擬執行,顯示執行 rsync 命令後會執行的操作,但不實際執行。
示例:rsync -nav source/ destination/
-z, --compress:啟用資料壓縮傳輸,減少網路頻寬佔用。
示例:rsync -az source/ destination/
-P, --partial --progress:顯示傳輸進度,並支援斷點續傳。
示例:rsync -avP source/ destination/
-e, --rsh=COMMAND:指定遠端 shell 命令,用於遠端傳輸。
示例:rsync -av -e "ssh -p 22" source/ user@remote:/destination
--delete:刪除目標位置上沒有源位置的檔案。
示例:rsync -av --delete source/ destination/
--exclude=PATTERN:排除指定的檔案或目錄。
示例:rsync -av --exclude='*.log' source/ destination/

sudo 授權
/etc/sudoers 授權配置

user: 執行命令者的身份
host: 透過哪些主機
(runas):以哪個使用者的身份
command: 執行哪些命令

visudo(安全版vi)

root ALL=(ALL) ALL
例子: wang 10.0.0.1=(root) NOPASSWD:#不需要輸密碼# /usr/bin/mount /dev/cdrom /mnt
別名例子:
user_Alias Z=ZZ,LL
USER_Alias D=tom
Host_Alias S=www.1.com
Runas_Alias O=root
Cmnd_Alias SY=/bin/chown,/bin/chmod
Z S=SY
別名例子:
Defaults:wang runas_default=tom
wang ALL=(tom,jerry) ALL
wang$ sudo cmd #預設代表tom執行cmd
wang$ sudo -u jerry cmd
不允許訪問 例子:
wang 192.168.1.6,192.168.1.8=(root) /usr/sbin/,!/usr/sbin/useradd

PAM(模組)
/etc/pam.d/
/lib64/security/模組配置檔案
/etc/security

vim (命令)查詢和更改命令的模組

PAM配置格式

auth    [控制標誌] 模組名稱 [模組引數...]
account [控制標誌] 模組名稱 [模組引數...]
password [控制標誌] 模組名稱 [模組引數...]
session [控制標誌] 模組名稱 [模組引數...]

auth:用於進行使用者認證的模組。當使用者嘗試登入時,將使用指定的模組進行身份驗證。
account:用於進行賬戶管理的模組。例如,檢查使用者是否被鎖定或是否允許登入。
password:用於修改使用者密碼的模組。例如,允許使用者透過特定方式更改密碼。
session:用於在使用者登入和登出時進行會話管理的模組。例如,記錄使用者登入和登出事件。

1.required:模組的成功驗證是必需的。如果驗證失敗,則 PAM 將立即返回失敗,並且不會繼續執行後續模組。如果驗證成功,則繼續執行後續模組。
2.sufficient:如果模組成功驗證,則 PAM 將立即返回成功,並且不會繼續執行後續模組。如果驗證失敗,則繼續執行後續模組。如果所有的 sufficient 模組都失敗,則認證失敗。
3.requisite:類似於 required,但是如果驗證失敗,則 PAM 將立即返回失敗,並且不會繼續執行後續模組。如果驗證成功,則繼續執行後續模組。
4.optional:模組的成功驗證是可選的。即使驗證失敗,PAM 也會繼續執行後續模組。通常與 required 或 sufficient 搭配使用。
5.include:包含另一個 PAM 配置檔案中的配置。這允許在配置中重用其他服務的配置。

常用模組:
pam_nologin.so(普通使用者登入限制)
啟用在pamd下建立nologin即可 普通使用者無法遠端登入
{在Centos7以上版本中,使用Systemd替代了之前的SysV。/etc/security/limits.conf檔案的配置作
用域縮小了。/etc/security/limits.conf的配置,只適用於透過PAM認證登入使用者的資源限制,它對
systemd的service的資源限制不生效。因此登入使用者的限制,透過/etc/security/limits.conf
與/etc/security/limits.d下的檔案設定即可。
對於systemd service的資源設定,則需修改全域性配置,全域性配置檔案放在/etc/systemd/system.conf
和/etc/systemd/user.conf,同時也會載入兩個對應目錄中的所有.conf文
件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf
是系統例項使用的,user.conf是使用者例項使用的}

pan.limits.so(資源限制)
/etc/security/limits.conf
/etc/security/limits.d/*.conf

檔案配置
每行一個定義
< domain> < type> < item> < value>
例子:zz - norpc 5

ulimit命令

-H 設定硬體資源限制.
-S 設定軟體資源限制.
-a 顯示當前所有的資源限制.
-c size:設定core檔案的最大值.單位:blocks
-d size:設定資料段的最大值.單位:kbytes
-f size:設定建立檔案的最大值.單位:blocks
-l size:設定在記憶體中鎖定程序的最大值.單位:kbytes
-m size:設定可以使用的常駐記憶體的最大值.單位:kbytes
-n size:設定核心可以同時開啟的檔案描述符的最大值.單位:n
-p size:設定管道緩衝區的最大值.單位:kbytes
-s size:設定堆疊的最大值.單位:kbytes
-t size:設定CPU使用時間的最大上限.單位:seconds
-u size:最大使用者程序數
-v size:設定虛擬記憶體的最大值.單位:kbytes
unlimited 是一個特殊值,用於表示不限制
#說明
查詢時,若不加H或S引數,預設顯示的是軟限制
修改時,若不加H或S引數,兩個引數一起改變

chrony(ntp時間同步)

/etc/chrony.conf 配置
server ntp.alicyuncom iburst #設定同步伺服器
allow 0.0.0.0/0 #設定誰都可以同步
local stratum 10 允許沒有外網也可以同步

chronyc sources -v or ntpdate $ip(cento8以後不在使用) 時間同步

相關文章