Linux安全加固

創建普通用戶

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
發佈了61 篇原創文章 · 獲贊 92 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章