linux系统加固方案

1、删除或停用多余用户:

#删除默认账号   

userdel -r 用户名

#查看用户状态

 

passwd -S 用户名

 

 

 

 

#锁定无关用户:这个方法修改之后虽然不能直接登录,但是可以su登录

passwd -l 用户名   或usermod -L 用户名

 

#禁用无用账号、修改用户的shell为/sbin/nologin:这个方法修改之后不再能登录,修改之后可以去/etc/passwd查看$7

usermod -s /sbin/nologin 用户名

 

2、修改默认账号和口令:

usermod -l 新用户 旧用户
sudo pkill -9 -u 旧用户名    杀掉旧用户进程

sudo usermod -d /home/新用户名 -m 新用户名

修改口令:

passwd 用户名

 

3、账号配置锁定阈值

1、执行命令 vim /etc/pam.d/system-auth或vim /etc/pam.d/ login

2、执行命令 vim /etc/pam.d/sshd 

3、在上面2行编辑中添加配置

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

设置为密码连续错误3次锁定,锁定时间30秒,root密码连续错误3次锁定,时间为 100秒 

 

 

4、禁止root账户登录

vim /etc/ssh/sshd_config

找到这一行,并将其改为 no

重启sshd服务

systemctl restart sshd

 

5、限制能够su为root的用户(因为禁止root登录之后,其他用户还是可以su到root的)

操作目的:检查是否使用pam认证模块禁止wheel组之外的用户su为root

检查方法:cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so这样的配置条目

加固方法:vim /etc/pam.d/su

在头部添加 auth required /lib/security/pam_wheel.so group=wheel

 

6、使用非root账户,并授权root权限

useradd sss     #新增用户sss

passwd sss      #设置sss用户密码

chmod -v u+w /etc/sudoers      #增加 sudoers 文件的写的权限,默认为只读

vim /etc/sudoers     #修改sudoers,增加下面一行后,保存退出

 

chmod -v u-w /etc/sudoers      #删除 sudoers 的写的权限

 

7、超时自动断开ssh连接

vim /etc/profile在末尾加上TMOUT=100   (单位秒) 

source /etc/profile  使修改生效

表示100秒内不操作,自动退出登录

 

8、禁用无关的组

 

vim /etc/group

 

在需要禁用的组前面加上#

 

 

 

 

 

 

7、口令定期修改

方法一:chage -M 30 test

表示设置test这个用户的密码有效期30天

方法二:

vim /etc/login.defs 修改配置文件

PASS_MAX_DAYS   60  新建用户的密码最长使用天数
PASS_MIN_DAYS   0     新建用户的密码最短使用天数
PASS_WARN_AGE   7   新建用户的密码到期提前提醒天数

 

8、口令的复杂度设置

vim /etc/pam.d/system-auth

 

找到 password requisite pam_cracklib.so这么一行替换成如下(没有就直接新增一行吧):
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
参数含义:
尝试次数:5
新旧密码最少不同字符:3
最小密码长度:10
最少大写字母:1
最少小写字母:3
最少数字:3

 

9、查看linux账号锁定情况:

cat /etc/shadow

文件中字段主要含义为:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号
  2. “口令”字段存放的是加密后的用户口令字:

    1. 如果为空,则对应用户没有口令,登录时不需要口令;
    2. 星号代表帐号被锁定;
    3. 双叹号表示这个密码已经过期了;
    4. $6$开头的,表明是用SHA-512加密;
    5. $1$表明是用MD5加密;
    6. $2$ 是用Blowfish加密;
    7. $5$ 是用 SHA-256加密;

查看linux用户禁用情况:/etc/passwd

awk -F: '{if($7=="/sbin/nologin") {printf "\033[1;31m%s'、'\033[0;39m",$1}}' /etc/passwd可以查看出禁用的账号

因为需要用shell脚本去直接显示出禁用和启用的账号,所以整理出shell脚本,执行之后可以展示启禁用的账号

 

 

10、检查特殊账号:查看空口令和root权限的账号

查看root权限账号:通过判断uid是否为0来查找系统是否存在特权用户,使用命令awk即可查出       

awk -F: '$3==0 {print $1}' /etc/passwd

uid为0的账号应该只有root 使用usermod -u uid 用户名

 

查看是否存在空口令用户:通过使用命令来查找是否存在该字段长度为0的用户

awk -F: 'length($2)==0 {print $1}' /etc/shadow

 

awk -F: '($2 == "") { print $1 }' /etc/shadow

 

检查是否存在空口令用户,如果存在则设置密码

 

passwd 用户名

 

 

11、bash历史命令、设置bash保留历史命令的条数(上下键只能显示你设置的历史命令条数)

vim /etc/profile 修改配置文件

HISTSIZE=5  即保留5条命令

 

12、锁定关键文件/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,锁定关键的系统文件可以防止服务器提权后被篡改

1、对关键文件进行加锁,任何用户都不能对这些文件进行修改和删除,包括root用户,除非解锁后才可修改

chattr +i 文件名

比如chattr +i /etc/shadow

2、解锁

chattr -i 文件名

3、查看加锁状态,显示了就表示加锁

lsattr 文件名

 

13、设置history命令时间戳

vim /etc/profile
在文件的末尾添加参数
export HISTTIMEFORMAT="%F %T `whoami` "
source /etc/profile 使配置生效
在ssh中输入history显示情况如下:

 


 14、防止IP Spoof

IP spoof即IP地址欺骗,是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术


vim /etc/host.conf添加nospoof on

 

 

15、禁止IP源路由

允许 IP 源路径路由(IP source routing)会使得黑客能够欺骗你的计算机,截取信息包.强烈建议禁止,使用如下命令:

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

将accept_source_route 设置为0,并将上述命令加到/etc/rc.d/rc.local 中去,每次重启动将自动执行

 

16、删除潜在危险文件

.rhosts,.netrc,hosts.equiv等文件都具有潜在的危险,如果没有应用,应该删除  
操作步骤
find / -name .rhosts  
find / -name .netrc
find / -name hosts.equiv
若存在相关文件,加上.bak后缀
mv .rhost .rhost.bak  
mv .netr .netr.bak  
mv hosts.equiv hosts.equiv.bak 

 

17、检查是否禁用root用户或匿名用户登录FTP(见博客https://www.cnblogs.com/mihoutao/p/13373220.html

 

18检查用户目录缺省访问权限设置

编辑vim /etc/login.defs,在文件中设置umask 027或UMASK 027,表示其他用户无法使用这个文件或文件夹

因此新建文件夹是777-027=750(rwxr-x---),新建文件是666-027=640(rw-r-----)将缺省目录访问权限设置为750,文件访问权限设置为640

 

 19、禁止coredump打开,打开coredump会耗费大量的磁盘空间

ulimit -c 输出如果为0,则说明coredump没有打开

ulimit -c 输出如果为unlimited,则说明coredump已打开

通过 ulimit -c unlimited 就可以打开它,

通过 ulimit -c 0 就可以关闭它

 

通过上面的命令修改后,一般都只是对当前会话起作用,当你下次重新登录后,还是要重新输入上面的命令,所以很麻烦。我们可以把通过修改/etc/profile文件 来使系统每次自动打开。 步骤如下:

1.首先打开/etc/profile文件 一般都可以在文件中找到 这句语句:ulimit -S -c 0 > /dev/null2>&1.ok,根据上面的例子,我们只要把那个0 改为unlimited 就ok了。然后保存退出。

2.通过source /etc/profile 使当期设置生效。

3.通过ulimit -c 查看下是否已经打开。

 

20、停止或禁用与系统无关的服务

who -r 或 runlevel查看当前init的级别

 

chkconfig --list查看当前服务列表的状态

 

根据实际情况在各init级别启用、禁用、重置服务chkconfig --level 级别 服务名 on|off|reset

 

 

posted on 2020-07-08 14:22  金龟子大战猕猴桃  阅读(2252)  评论(0编辑  收藏  举报