SuSE Linux設定

2017-01-23

Outline

  1. 檢視SuSE的版本
  2. 新建帳號群組
  3. 設定sudo
  4. 密碼強度設定
  5. 使用者錯三次暫不可登入
  6. 定期修改密碼
  7. 閒置連線自動登出
  8. 不允許root遠端登入
  9. 參考資料

檢視SuSE的版本

1
2
3
4
5
6
7
8
9
10
# 檢視SuSE版本
superuser@> cat /etc/issue
Welcome to SUSE Linux Enterprise Server 11 SP1 (x86_64) - Kernel \r (\l).

# 檢視Linux版本
superuser@> uname -a
Linux CHTASTER-200-2 2.6.32.54-0.91.TDC.1.R.0-default #1 SMP 2016-10-18 14:21:57 +0200 x86_64 x86_64 x86_64 GNU/Linux
# 檢視核心版本
superuser@> uname -r
2.6.32.54-0.91.TDC.1.R.0-default

新建帳號群組

1
2
3
4
5
6
7
8
9
10
11
12
# 新建帳號
root$> useradd superuser
root$> passwd superuser
# 建立帳號的家目錄
root$> mkdir /home/superuser
# 建立群組
root$> groupadd superuser
# 把用戶加入到群組
root$> usermod -g superuser superuser
# 把家目錄(superuser)的權限改成的ower改成superuser,群組改成superuser
root$> chown -R superuser superuser
root$> chgrp -R superuser superuser

設定sudo

1
2
3
4
5
# visudo,加入一個群組,使其能執行所有的指令
# visudo
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
%superuser ALL=(ALL) ALL

密碼強度設定

參照參考資料(1)。不使用pwcheck.so,改用cracklib.so。設定資料會寫到/etc/pam.d/common-password

1
2
3
4
5
6
7
8
9
10
superuser@> /usr/sbin/pam-config -d --pwcheck
superuser@> /usr/sbin/pam-config -a --cracklib
superuser@> /usr/sbin/pam-config -a --cracklib-minlen=12
superuser@> /usr/sbin/pam-config -a --cracklib-lcredit=-1
superuser@> /usr/sbin/pam-config -a --cracklib-ucredit=-1
superuser@> /usr/sbin/pam-config -a --cracklib-dcredit=-1
superuser@> /usr/sbin/pam-config -a --cracklib-ocredit=-1
superuser@> /usr/sbin/pam-config -a --cracklib-retry=3
superuser@> /usr/sbin/pam-config -a --pwhistory
superuser@> /usr/sbin/pam-config -a --pwhistory-remember=3

pam_cracklib.so

參數 意義
nullok 預設上不允許空白成為密碼,加入nullok就可以使用空白為密碼。
retry 使用者有多少次機會可以設定符合規定的密碼。
lcredit 小寫英文的credit。設定數值為-N,代表密碼中至少要有N個該種類字元,其道理類推至大寫、數字以及特殊字元的credit設定。
ucredit 大寫英文的credit
dcredit 數字的credit
ocredit 特殊字元的credit
minlen 密碼最小credit要求。例如:設定密碼為jd9Ge$d3,其長度為8,但含有小寫、大寫、數字跟其他字元,所以一共可以得到4個credit,4+8=12的狀況下還是會被接受。

使用者錯三次暫不可登入

修改/etc/pam.d/common-auth,加入pam_tally2.so的設定,最下面粗體那行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 修改/etc/pam.d/common-auth
superuser@> vim /etc/pam.d/common-auth
#%PAM-1.0
#
# This file is autogenerated by pam-config. All changes
# will be overwritten.
#
# Authentication-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth required pam_env.so

auth required pam_unix2.so
**auth required pam_tally2.so onerr=fail deny=3 unlock_time=30 even_deny_root root_unlock_time=30**

參數 解釋
deny Root及其他使用者登入失敗的次數,超過即鎖定
unlock_time 一般使用者於鎖定後多久才能解鎖,單位為秒
even_deny_root 也限制root
root_unlock_time root於鎖定後多久才能解鎖,單位為秒
onerr 如果有甚麼奇怪的狀況發生時,fail表示回傳error code,而success表示回傳成功。

如果只有改/etc/pam.d/common-auth,當密碼輸入錯誤超過上限時,雖然會自動解開,但是接下來輸入正確的密碼,錯誤次數照樣會增加,而可能會發生問題。因此要在修改/etc/pam,d/common-account,加入account required pam_tally2.so,下表中粗體那行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 修改/etc/pam.d/common-account
superuser@> vim /etc/pam.d/common-account
#%PAM-1.0
#
# This file is autogenerated by pam-config. All changes
# will be overwritten.
#
# Account-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the accountorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired.
#
account required pam_unix2.so
**account required pam_tally2.so**

當使用者被所定時,可以用下列指令解鎖

1
2
3
4
5
6
7
8
9
# 可以檢視使用者的登入犯錯次數
# pam_tally2 --user=superuser
Login Failures Latest failure From
superuser 3

# pam_tally2 --user=superuser --reset=0
# pam_tally2 --user=superuser
Login Failures Latest failure From
superuser 0

定期修改密碼

修改/etc/login.defs中的PASS_MAX_DAYS為90天。

1
2
3
4
5
6
7
8
9
#
# Password aging controls (used by useradd):
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

閒置連線自動登出

1
2
3
4
# 編輯/etc/profile
superuser@> vim /etc/profile
# 設定閒置30分鐘後登出
export TMOUT=1800

不允許root遠端登入

修改/etc/ssh/sshd_config

1
2
3
4
5
6
7
8
9
10
11
# 編輯/etc/ssh/sshd_config
# PermitRootLogin要改為no
superuser@> vim /etc/ssh/sshd_config
#LoginGraceTime 2m
**PermitRootLogin no**
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
# 改完要重啟sshd才會生效
# 不過重啟sshd似乎不影響已連上的連線
superuser@> /etc/init.d/sshd restart

參考資料

  1. SLE11帳戶密碼強度設定 http://blog.xuite.net/misgarlic/weblogic/29368627-SLES11+user+account+password+policy
  2. SLE11SP2 pam.tally2.so的設定方式 https://www.novell.com/support/kb/doc.php?id=7011883
  3. 註解targetpw http://blog.xuite.net/trully.hsiang/man/30309937-%5BSUSE%5D+%E5%BB%BA%E7%AB%8B%E4%BD%BF%E7%94%A8%E8%80%85+%E5%8F%8A+sudo+%E6%AC%8A%E9%99%90
  4. 感謝同事怡文提供整理 :)