1. 程式人生 > >CentOS 7 環境配置

CentOS 7 環境配置

一、Centos7如何修改ssh預設埠22

1. 修改 sshd_config 埠
  • 編輯sshd_config 配置檔案
$ vi /etc/ssh/sshd_config
  • 取消 #Port 22 的註釋,在下一行新增你需要修改的新埠 Port
    10022。(這裡不刪除 22 埠是為了防止修改後新埠無法訪問,造成無法用 ssh 連線伺服器。)
Port 22  
Port 10022  

新增新埠

  • 修改儲存 sshd_config 檔案
    按下esc 退出編輯模式,輸入 :wq,儲存修改並退出

  • 重啟 sshd 服務

$  systemctl restart sshd
2. 配置防火牆 firewalld
  • 啟用防火牆:
$ systemctl enable firewalld
$ systemctl start firewalld
  • 檢視防火牆狀態
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2016-12-20 02:12:59 CST; 1 day 13h ago
 Main PID: 10379 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─10379 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
$ firewall-cmd --state
running  
  • 檢視防火牆當前「預設」和「啟用」zone(區域):
$ firewall-cmd --get-default-zone
public  
$ firewall-cmd --get-active-zones
public  
  interfaces: eth0 eth1

若沒有啟用區域的話,要執行下面的命令。

  • 啟用 public 區域,增加網絡卡介面:
$ firewall-cmd --set-default-zone=public
$ firewall-cmd --zone=public --add-interface=eth0
success  
$ firewall-cmd --zone=public --add-interface=eth1
success  

*新增防火牆規則,開放 10022/TCP 埠:

# 以防新埠不生效,先把 22 埠暴露
$ firewall-cmd --permanent --zone=public --add-port=22/tcp
$ firewall-cmd --permanent --zone=public --add-port=10022/tcp
success  
# 過載防火牆
$ firewall-cmd --reload
# 檢視暴露埠規則
$ firewall-cmd --permanent --list-port

443/tcp 80/tcp 22/tcp 10022/tcp  
$ firewall-cmd --zone=public --list-all
public (default, active)  
  interfaces: eth0 eth1
  sources:
  services: dhcpv6-client ssh
  ports: 443/tcp 80/tcp 22/tcp 10022/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
  • 退出 ssh 會話後,再用新的埠連線:
$ ssh -p 10022 [email protected]

3. 開啟 SELinux 埠

SELinux 全稱 Security Enhanced Linux (安全強化 Linux),是 MAC (Mandatory Access Control,強制訪問控制系統)的一個實現,目的在於明確的指明某個程序可以訪問哪些資源(檔案、網路埠等)。

對於 ssh,SELinux 預設只允許 22 埠,我們可以用 SELinux 管理配置工具 semanage,來修改 ssh 可訪問的埠。

安裝 semanage 工具

$ yum provides semanage
$ yum -y install policycoreutils-python

** 開啟ssh 10022 埠**

# 為 ssh 新增新的允許埠
$ semanage port -a -t ssh_port_t -p tcp 10022
# 檢視當前 SELinux 允許的埠
$ semanage port -l | grep ssh
ssh_port_t                     tcp      10022, 22  

image.png

錯誤處理

當 SELINUX 配置為禁用狀態時,使用 semanage 會報錯提示無法讀取 policy 檔案:

semanage 報錯

修改 /etc/selinux/config 配置,啟用 SELinux:

$ vi /etc/selinux/config
SELINUX=permissive  
# 重啟伺服器
$ init 6
# 重啟後檢視 SELinux 狀態
$ sestatus
# if it shows disable, you can run
$ load_policy -qi

檢查SELINUX配置

$ semanage port -a -t ssh_port_t -p tcp 10022
$ semanage port -l | grep ssh
ssh_port_t                     tcp      10022, 22  
# 重啟 ssh 服務
systemctl restart sshd 

######*注:semange 不能禁用 ssh 的 22 埠:

$ semanage port -d -t ssh_port_t -p tcp 22
ValueError: 在策略中定義了埠 tcp/22,無法刪除。

semange 不能禁用 ssh 的 22 埠

二、新建組和使用者

【組的操作】

  1. 新建組 example
  • 使用groupadd 命令新增組
    用法:groupadd [選項] 組
選項:
  -f, --force		如果組已經存在則成功退出
			並且如果 GID 已經存在則取消 -g
  -g, --gid GID                 為新組使用 GID
  -h, --help                    顯示此幫助資訊並推出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的預設值
  -o, --non-unique              允許建立有重複 GID 的組
  -p, --password PASSWORD       為新組使用此加密過的密碼
  -r, --system                  建立一個系統賬戶
  -R, --root CHROOT_DIR         chroot 到的目錄

example:

# groupadd -g [組的ID] [組名]
$ groupadd -g 10005 example
  1. 刪除組 example
  • 使用 groupdel 命令刪除組
    用法:groupdel [選項] 組
選項:
  -h, --help                    顯示此幫助資訊並推出
  -R, --root CHROOT_DIR         chroot 到的目錄

example:

# groupdel [組名]
$ groupdel example
  1. 刪除組 example
  • 使用 groupdel 命令刪除組
    用法:groupdel [選項] 組
選項:
  -h, --help                    顯示此幫助資訊並推出
  -R, --root CHROOT_DIR         chroot 到的目錄

example:

# groupdel [組名]
$ groupdel example
  1. 修改組資訊 example ,將組example 的id 更改為 10006 ,名稱更改為 exampleGroup
  • 使用 groupmod 來修改組資訊

用法:groupmod [選項] 組

選項:
  -g, --gid GID                 將組 ID 改為 GID
  -h, --help                    顯示此幫助資訊並推出
  -n, --new-name NEW_GROUP      改名為 NEW_GROUP
  -o, --non-unique              允許使用重複的 GID
  -p, --password PASSWORD	將密碼更改為(加密過的) PASSWORD
  -R, --root CHROOT_DIR         chroot 到的目錄

example:

# groupmod -g [組ID] [組名]
$ groupmod -g 10006 example

# groupmod -n [新組名] [組名]
groupmod -n exampleGroup example

####【使用者的操作】

  1. 新建使用者 example
  • 使用adduser 命令來新建使用者
    用法:adduser [選項] 登入
    adduser -D
    adduser -D [選項]
選項:
  -b, --base-dir BASE_DIR	新賬戶的主目錄的基目錄
  -c, --comment COMMENT         新賬戶的 GECOS 欄位
  -d, --home-dir HOME_DIR       新賬戶的主目錄
  -D, --defaults		顯示或更改預設的 useradd 配置
 -e, --expiredate EXPIRE_DATE  新賬戶的過期日期
  -f, --inactive INACTIVE       新賬戶的密碼不活動期
  -g, --gid GROUP		新賬戶主組的名稱或 ID
  -G, --groups GROUPS	新賬戶的附加組列表
  -h, --help                    顯示此幫助資訊並推出
  -k, --skel SKEL_DIR	使用此目錄作為骨架目錄
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的預設值
  -l, --no-log-init	不要將此使用者新增到最近登入和登入失敗資料庫
  -m, --create-home	建立使用者的主目錄
  -M, --no-create-home		不建立使用者的主目錄
  -N, --no-user-group	不建立同名的組
  -o, --non-unique		允許使用重複的 UID 建立使用者
  -p, --password PASSWORD		加密後的新賬戶密碼
  -r, --system                  建立一個系統賬戶
  -R, --root CHROOT_DIR         chroot 到的目錄
  -s, --shell SHELL		新賬戶的登入 shell
  -u, --uid UID			新賬戶的使用者 ID
  -U, --user-group		建立與使用者同名的組
  -Z, --selinux-user SEUSER		為 SELinux 使用者對映使用指定 SEUSER

example: 新建使用者 example ,指定使用者id 為10010

# adduser -u [使用者ID] [使用者名稱]
$ adduser -u 10010 example

# 檢視新建立的使用者
$ id example
uid=10010(example) gid=10010(example) 組=10010(example)

  1. 為新建的使用者設定密碼 passwd [新建使用者名稱]
  • 使用passwd [新建使用者名稱] 命令來設定新使用者密碼

直接輸入passwd,回車,修改的是當前使用者的密碼

example:

$ passwd example
更改使用者 example 的密碼 。
新的 密碼:
無效的密碼: 密碼包含使用者名稱在某些地方
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

在設定密碼的時候,會進行驗證密碼是否包含使用者名稱,是否含有特殊字元,大小寫字母和數字,會有相應的提示,但是繼續輸入,也是可以設定成功的。

  1. 刪除使用者 example
  • 使用 userdel 命令來刪除使用者
    用法:userdel [選項] 登入
選項:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    顯示此幫助資訊並推出
  -r, --remove                  刪除主目錄和郵件池
  -R, --root CHROOT_DIR         chroot 到的目錄
  -Z, --selinux-user            為使用者刪除所有的 SELinux 使用者對映

example: 刪除使用者 example

# userdel [使用者名稱]
$ userdel  example

# 檢視使用者example
$ id example
id: example: no such user

  1. 修改使用者 example 為 exampleUser
  • 使用 usermod 命令來修改使用者資訊
    用法:usermod [選項] 登入
選項:
  -c, --comment 註釋            GECOS 欄位的新值
  -d, --home HOME_DIR           使用者的新主目錄
  -e, --expiredate EXPIRE_DATE  設定帳戶過期的日期為 EXPIRE_DATE
  -f, --inactive INACTIVE       過期 INACTIVE 天數後,設定密碼為失效狀態
  -g, --gid GROUP               強制使用 GROUP 為新主組
  -G, --groups GROUPS           新的附加組列表 GROUPS
  -a, --append GROUP            將使用者追加至上邊 -G 中提到的附加組中,
                                並不從其它組中刪除此使用者
  -h, --help                    顯示此幫助資訊並推出
  -l, --login LOGIN             新的登入名稱
  -L, --lock                    鎖定使用者帳號
  -m, --move-home               將家目錄內容移至新位置 (僅於 -d 一起使用)
  -o, --non-unique              允許使用重複的(非唯一的) UID
  -p, --password PASSWORD       將加密過的密碼 (PASSWORD) 設為新密碼
  -R, --root CHROOT_DIR         chroot 到的目錄
  -s, --shell SHELL             該使用者帳號的新登入 shell
  -u, --uid UID                 使用者帳號的新 UID
  -U, --unlock                  解鎖使用者帳號
  -Z, --selinux-user  SEUSER       使用者賬戶的新 SELinux 使用者對映


example: 修改使用者 example 為 exampleUser ,更改組為 exampleGroup

# usermod -u  [使用者ID] [使用者名稱]
$ usermod -u 10006 example

# 檢視使用者example
$ id example
uid=10006(example) gid=10010(example) 組=10010(example)

# usermod -g  [組ID] [使用者名稱]
$ usermod -u 10006 example

# 檢視使用者example
$ id example
uid=10006(example) gid=10006(exampleGroup) 組=10006(exampleGroup)

# usermod -l  [新使用者名稱] [使用者名稱]
$ usermod -l exampleUser example

# 檢視使用者exampleUser
$ id exampleUser
uid=10006(exampleUser) gid=10006(exampleGroup) 組=10006(exampleGroup)