Linux系统加固

Linux系统加固要从三个方面来考虑

1.账号和口令安全


1.  /etc/login.defs


这个文件定义了/etc/passwd以及/etc/shadow配套的用户限制,这个文件的缺失不会影响系统的使用,但是有些时候,会产生一些情况。(各种提示权限不够)
如果/etc/passwd以及/etc/shadow与/etc/login.defs文件产生了冲突,系统会以/etc/passwd以及/etc/shadow为准,所以这两个文件的优先级较高。

grep -Ev "^#|^$" /etc/login.defs

去掉空格和注释查看该文件。

Linux系统加固_第1张图片

我们主要修改的就是

1.密码最大有效期                 PASS_MAX_DAYS 
2.密码两次修改间隔最小时间        PASS_MIN_DAYS		
3.密码最小长度                   PASS_MIN_LEN
4.密码过期前n天开始提示           PASS_WARN_AGE

2.  减少多余无用账号,降低安全风险

userdel 用户名 删除账号
passwd -l  锁定账号

3.限制用户进行su

在/etc/pam.d/su中修改
auth required pam_wheel.so group=test
只允许test组用户su

2.SSH登录安全

因为黑客或者管理员大部分都是通过ssh登录到系统,对系统进行操作,所以我们可以在这里做文章

/etc/ssh/sshd_config

我们被登录所以作为服务端,在这里进行修改一些配置

1.改掉sshd的端口号(如果有必要)

2.更改sshd的服务绑定地址   istenAddress 

可以改为跳板机或者堡垒机的ip地址,就只允许跳板机或者堡垒机进行ssh登录

跳板机和堡垒机的区别就是跳板机是服务,堡垒机有硬件设施。

3.修改连接主机时输入密码的时间    LoginGraceTime 1m  

m是分钟,也就是ssh进行连接输入密码时,超过1min就会自动断开

4.是否允许root用户进行远程登录    PermitRootLogin 

5.尝试密码错误的最大次数           MAXAuthTries 3

当ssh连接后输入的密码错误次数超过三次时,会断开ssh的连接,防止对方暴力破解

6.登录安全白名单和黑名单

/etc/hosts.deny  系统登录的黑名单 
设置sshd:ALL  禁止所有用户进行ssh登录
/etc/hosts.allow  系统登录的白名单

建议配置
黑名单禁止所有登录,也就是sshd:ALL
白名单配置只允许登录的ip
sshd:ip

3.文件安全

1.设置umask值

/etc/bashrc  和  /etc/profile

这两个文件中的umask值需要同时修改,避免出现问题

umask值改为027

文件夹初始的权限为777,文件的初始权限为666

而最终生成文件夹和文件的权限是777或者666减去umask值

当umask值改为027时候,文件夹和文件的权限为750和640

1.文件所有者可读可写可执行7                                  
2.与文件所有者同属一个用户组的其他用户可读可执行5           		      
3.其他用户组无权限0                                               

1.文件所有者可读可写6
2.与文件所有者同属一个用户组的其他用户可读可写4
3.其他用户组无权限0

改完后使生效

source /etc/bashrc
source /etc/profile

4.服务安全

一些常用的服务端口可以进行修改,用nmap扫描一下自己系统,看看哪些对外开放,对外开放的端口不使用默认的端口。防止黑客入侵

一般修改的都在服务的配置文件中config

5.日志安全

记得开启日志功能

systemctl start rsyslog.service

记录所有用户登录和操作日志

运行vim /etc/profile打开配置文件。

粘贴以下内容

 history
 USER=`whoami`
 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
 if [ "$USER_IP" = "" ]; then
 USER_IP=`hostname`
 fi
 if [ ! -d /var/log/history ]; then
 mkdir /var/log/history
 chmod 777 /var/log/history
 fi
 if [ ! -d /var/log/history/${LOGNAME} ]; then
 mkdir /var/log/history/${LOGNAME}
 chmod 300 /var/log/history/${LOGNAME}
 fi
 export HISTSIZE=4096
 DT=`date +"%Y%m%d_%H:%M:%S"`
 export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
 chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null

运行source /etc/profile  生效

然后history就可以查看所有用户的操作记录和具体时间

也可以

/var/log/history

进行查看

你可能感兴趣的:(运维,linux,运维,服务器)