全网最全安全加固指南之linux系统加固

简介: 全网最全安全加固指南之linux系统加固

全网最全安全加固指南之linux系统加固

Linux系统安全加固

系统用户

账号分类:
超级管理员     uid=0,
系统默认用户    系统程序使用,从不登录
新建普通用户    uid大于500

/etc/password

/etc/shadow

liunx用户管理

#添加用户
useradd <用户名>
#删除用户
userdel [-r][-f] <用户名>

#锁定/解锁用户
passwd -l <用户名>
passwd -u <用户名>

#用户属性
usermod -L  <用户名>锁定用户 
usermod -U <用户名>解锁用户

#查看当前用户
id

解析文件权限

执行ls -l .. .. 命令查看

输出命令包括7个字段

权限与归属

  • 访问权限

读取:允许查看内容-read

写入:允许修改内容-write

可执行:允许运行和切换-excute

  • 归属关系

所有者:拥有此文件/目录的用户-user

所属者:拥有此文件/目录的组-group

其他用户:除所有者、所属组以外的用户-other

所有用户:以上三类归属称-all

文件系统安全

查看权限:
      ls -l
修改权限:
    chmod 777 test    
    
    chown 123:123 test

    chgrp root test

设置合理的初始文件权限

UMASK命令:

umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644和755
文件夹其权限规则为:777-022=755
文件其权限规则为: 777-111-022=644(因为文件默认没有执行权限)
修改UMASK值:
1、直接在命令行下umask xxx (重启后消失)
2、修改/etc/profile中设定的umask值

linux提权漏洞

由于Linux 内核的内存子系统在处理 Copy-on-Write 时出现竞争条件(漏洞),导致私有的只读内存映射被破坏、获取读写权限后低权限用户可以进一步提权。

1.检查是否有内核升级包:yum check-update |grep kernel
2.升级内核:yum update kernel
3.确认下新版本的内核或 initrd/initramfs 是否有xen-vbd和virtio_blk驱动:

#lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk' -rwxr--r-- 1 root root 23448 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko -rwxr--r-- 1 root root 54888 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko

如果没有,则需要给initrd/initramfs安装驱动,然后执行第三步后重启。

锁定系统中多余的自建帐号

执行命令

cat /etc/passwd
cat /etc/shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,

adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。

加固方法:
  使用命令passwd -l <用户名>锁定不必要的账号。

  使用命令passwd -u <用户名>解锁需要恢复的账号。

检查shadow中空口令帐号

检查方法:

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

加固方法:

#锁定不必要的账户
passwd -l <用户名>

#解锁需要恢复的账户
passwd -u <用户名>

#为用户设置密码
passwd <用户名>

设置系统密码策略

执行命令
cat /etc/login.defs|grep PASS  #查看密码策略设置
加固方法:
vi /etc/login.defs修改配置文件
    PASS_MAX_DAYS        90       #用户的密码最长使用天数
    PASS_MIN_DAYS        0       #两次修改密码的最小时间间隔
    PASS_MIN_LEN        7       #密码的最小长度
    PASS_WARN_AGE    9       #密码过期前多少天开始提示

禁用root之外的超级用户

检测方法:

#检查用户ID为0的用户
awk -F ":" '($3=="0"){print $1}' /etc/passwd

加固方法:

#锁定用户
passwd -l <用户名>

限制能够su为root的用户

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

加固方法
在头部添加:

auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root

#将test用户加入到wheel组
usermod -G10 test

重要文件加上不可改变属性

#把重要文件加上不可改变属性
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/gshadow
chattr +i /etc/group
chattr +i /etc/inetd.conf
chattr +i /etc/httpd.conf

ssh安全

禁止root用户进行远程登录
检查方法:

#是否为no
cat /etc/ssh/sshd_config | grep PermitRootLogin 

加固方法

vi /etc/ssh/sshd_config 
PermitRootLogin no

更改服务端口

vi /etc/ssh/ssh_config
Port 2222                更改ssh端口

屏蔽SSH登录banner信息
检查方法:

#查看文件中是否存在banner字段,或banner字段为NONE
cat /etc/ssh/sshd_config
#查看文件内容,该处内容作为banner信息显示给登录用户
cat /etc/motd 

加固方法:

vim /etc/ssh/sshd_config

添加:

banner NONE
#vim /etc/motd

删除全部内容或更新成自己想要添加的内容

仅允许SSH协议版本2

有两个SSH协议版本,仅使用SSH协议版本2会更安全。

SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。

编辑/etc/ssh/sshd_config文件并查找下面这样的行:

Protocol 2,1 

修改为

Protocol 2 

防止误使用Ctrl+Alt+Del重启系统

检查方法:

查看输出行是否被注释

cat /etc/inittab |grep ctrlaltdel
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

加固方法:

vim /etc/inittab

在行开否添加注释符号“#”

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

设置账户锁定登录失败锁定次数锁定时间

检查方法:

cat /etc/pam.d/system-auth|grep auth 

查看有无auth required pam_tally.so 条目的设置
加固方法:

#设置为密码连续错误6次,锁定时间300秒
vi /etc/pam.d/system-auth
auth required pam_tally.so oneer=filad deny=6 unlock_time=300 

解锁用户:faillog -u <用户名> -r

修改账户TMOUT值,设置自动注销时间

检查方法:

#查看有无TMOUT的设置
cat /etc/profile|grep TMOUT 

加固方法:

vim /etc/profile

增加

TMOUT=600 

无操作600秒后自动退出

设置BASH保留历史命令的条目

检查方法:

cat /etc/profile | grep HISTSIZE
HISTSIZE=1000

加固方法:

vim /etc/profile

修改

HISTSIZE=5

即保留最新执行的5条命令

用户注销时删除命令记录

检查方法:
查看/etc/skel/.bash_logout文件,增加如下行

rm -f $HOME/.bash_history

这样,系统中的所有用户注销时都会删除其命令记录,如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件增加相同的一行即可。

设置系统日志策略配置文件

日志的主要用途是系统审计、监测追踪和分析统计。
为了保证 Linux 系统正常运行、准确解决遇到的各种各样的系统问题,认真地读取日志文件是管理员的一项非常重要的任务。
UNIX/ Linux采用了syslog工具来实现此功能,如果配置正确的话,所有在主机上发生的事情都会被记录下来,不管是好的还是坏的。

CentOS6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!

检查方法:

ps -aef | grep syslog #确定syslog服务是否启用
cat /etc/rsyslog.conf #查看syslogd的配置,并确认日志文件日否存在
#系统日志 (默认)   
/var/log/messages
#cron日志 (默认)   
/var/log/cron
#安全日志 (默认)   
/var/log/secure

阻止系统响应任何从外部/内部来的ping请求

加固方法:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

其他客户端就不能ping通你的服务器了。

目录
相关文章
|
5月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
484 3
Linux系统禁用swap
|
5月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
989 3
|
6月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
6月前
|
存储 Ubuntu Linux
「正点原子Linux连载」第二章Ubuntu系统入门
在图2.8.2.4中,我们使用命令umount卸载了U盘,卸载以后当我们再去访问文件夹/mnt/tmp的时候发现里面没有任何文件了,说明我们卸载成功了。
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
577 0
Linux系统初始化脚本
|
6月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
419 18
|
5月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
536 1
|
5月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1170 1
|
6月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1937 10
|
6月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
1022 0