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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章