創建普通用戶
useradd fczxadmin
echo "xxzx#2017admin" | passwd --stdin xxzxadmin
禁止root用戶直接登陸SSH
sed -i 's/\(PasswordAuthentication\) yes/\1 no/' /etc/ssh/sshd_config
配置用戶最小權限
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
許多網絡服務使用的是Linux系統,安裝了Apache服務器軟件。容易受到黑客用NMAP來掃描web網站,現分享一個防範經驗。
我樣可以通過設置,讓Linux對NMAP掃描不理彩。即用iptables工具來過濾網絡信息,讓系統無法迴應掃描請求的信息。以
此來提高服務器的安全性。
需要運行如下命令:www.2cto.com
#iptables -F
#iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j Drop
#iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j Drop
#iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j Drop
#iptables -A INPUT -p tcp --tcp-flags SYN,SYN --dport 80 -j Drop
echo "echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all">>/etc/rc.d/rc.local
先不讓對方PING到
禁用用戶登錄系統
usermod -s /sbin/nologin wangshibo
usermod -L 用戶 //鎖定帳號,-L:lock
usermod -U 用戶 //解鎖帳號,-U:unlock
Linux使用PAM鎖定多次登陸失敗的用戶(含重置錯誤次數)
/etc/pam.d/sshd (遠程ssh)
/etc/pam.d/login (終端)
在第一行下即#%PAM-1.0的下面添加:
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=1200
各參數解釋:
even_deny_root 也限制root用戶;
deny 設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶
unlock_time 設定普通用戶鎖定後,多少時間後解鎖,單位是秒;
root_unlock_time 設定root用戶鎖定後,多少時間後解鎖,單位是秒;
手動解除鎖定:
查看某一用戶錯誤登陸次數:
pam_tally –-user
例如,查看work用戶的錯誤登陸次數:
pam_tally –-user work
清空某一用戶錯誤登陸次數:
pam_tally –-user –-reset
例如,清空 work 用戶的錯誤登陸次數,
pam_tally –-user work –-reset
faillog -r 命令亦可。
如果前幾條沒生效的話,也可以使用命令:
pam_tally2 –u tom --reset將用戶的計數器重置清零(SLES 11.2下用此命令才重置成功)
查看錯誤登錄次數:pam_tally2 –u tom
查看用戶登錄失敗的次數
[root@node100 pam.d]# pam_tally2 --user redhat
Login Failures Latest failure From
redhat 7 07/16/12 15:18:22 tty1
解鎖指定用戶
[root@node100 pam.d]# pam_tally2 -r -u redhat
Login Failures Latest failure From
redhat 7 07/16/12 15:18:22 tty1
密碼複雜度設置
rpm -qa | grep cracklib
/etc/login.defs詳解:
PASS_MAX_DAYS 99999 #密碼的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密碼,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密碼最小長度,使用pam_cracklib module,該參數不再有效
PASS_WARN_AGE 7 #密碼失效前多少天在用戶登錄時通知用戶修改密碼
chage -l root
vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
它表示密碼必須至少包含一個大寫字母(ucredit),兩個小寫字母(lcredit),一個數字(dcredit)和一個標點符號(ocredit)
可用參數說明
debug
此選項使模塊的信息寫入到syslog(3),顯示模塊的行爲(此選項不寫密碼信息到日誌文件)。
type=XXX
默認的動作是模塊使用以下提示時,要求口令:“新的UNIX密碼:“和”重新輸入UNIX密碼:“。默認的Word UNIX可以被替換爲這個選項。
retry=N
改變輸入密碼的次數,默認值是1。就是說,如果用戶輸入的密碼強度不夠就退出。可以使用這個選項設置輸入的次數,以免一切都從頭再來。
difok=N
默認值爲10。這個參數設置允許的新、舊密碼相同字符的個數。不過,如果新密碼中1/2的字符和舊密碼不同,則新密碼被接受。
difignore=N
多少個字符的密碼應收到difok將被忽略。默認爲23
minlen=N
新的最低可接受的大小密碼(加一個,如果沒有禁用學分這是默認值)。除了在新密碼的字符數,貸方(在長度+1),給出了各種人物的不同種類(其他,大寫,小寫,數字)。此參數的默認值是9,它是一個老式的UNIX密碼的字符相同類型的所有好,但可能過低,利用一個MD5的系統增加安全性。請注意,有一個在Cracklib本身長度的限制,一“的方式太短“4極限是硬編碼和定義的限制(6),將不參考minlen檢查對。如果你想允許密碼短短5個字符,你不應該使用這個模塊。
dcredit=N
限制新密碼中至少有多少個數字。
ucredit=N
限制新密碼中至少有多少個大寫字符。
lcredit=N
限制新密碼中至少有多少個小寫字符。
ocredit=N
限制新密碼中至少有多少個其它的字符。
批量執行
cp /etc/profile /etc/profile_lxlbak
cp /etc/login.defs /etc/login.defs_lxlbak
cp /etc/pam.d/sshd /etc/pam.d/sshd_lxlbak
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_lxlbak
sed -i '/PASS_WARN_AGE/s/7/30/' /etc/login.defs
sed -i '/PASS_MIN_LEN/s/5/8/' /etc/login.defs
sed -i '/PASS_MAX_DAYS/s/99999/180/' /etc/login.defs
sed -i '/PASS_MIN_DAYS/s/0/6/' /etc/login.defs
echo 'TMOUT=600' >>/etc/profile
ls -la /etc/passwd
ls -la /etc/shadow
ls -la /etc/group
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
ls -la /etc/passwd
ls -la /etc/shadow
ls -la /etc/group
sed -i "/#%PAM-1.0/a\auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=1200" /etc/pam.d/sshd
sed -i '/#%PAM-1.0/a\password required pam_cracklib.so try_first_pass retry=5 difok=5 minlen=10 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1' /etc/pam.d/system-auth
service sshd restart