linux安全如何去加固,从零基础到精通,收藏这篇就够了!

安全加固?别跟我谈原则,先问问你的系统“扛不扛揍”!

安全加固,听起来像是在给脆弱的系统穿上盔甲。但别忘了,盔甲再硬,也得看里面的人行不行!那些所谓的“安全方案原则”,真能保证你的服务器固若金汤?我看未必!

  1. 版本升级?等等,你确定不是在挖坑? 升级,理论上是解决安全问题的最佳途径。但现实是,新版本Bug满天飞,兼容性问题层出不穷。升级一时爽,回头火葬场!我的建议是:升级需谨慎,小步快跑,灰度验证,别把鸡蛋放在一个篮子里。
  2. 端口服务?关关关,除了关还会啥? 关闭不必要的端口和服务,这操作没毛病。但问题是,你真的清楚哪些服务“无关”吗?别一刀切,把业务也给切没了!服务端口的“生死簿”,必须由业务部门和安全团队共同制定,别拍脑袋!
  3. 修改配置项?小心改出“幺蛾子”! 修改配置,看似简单,实则步步惊心。一个参数改错,轻则服务崩溃,重则系统瘫痪。修改前,务必备份!务必备份!务必备份! 重要的事情说三遍。
  4. 代码?别逗了,那是开发的事儿! 修改代码?那是开发工程师的活儿,安全团队最多提供建议。但说实话,开发工程师真的会听你的?安全左移,从需求阶段就介入,否则只能事后诸葛亮。
  5. ACL?临时抱佛脚,能管啥用? ACL策略,说白了就是“临时工”,只能应对一些突发情况。想靠它来保障安全?别做梦了!ACL只能作为辅助手段,不能作为核心安全策略。
  6. 设备防护?厂商说了算,你信吗? 部署设备防护,听起来高大上,但实际上,你对这些设备了解多少?厂商的话,听听就好,别全信!设备防护,需要结合实际情况,进行定制化配置,别盲目迷信“最佳实践”。

安全加固,测什么?测你的心跳!

安全加固测试流程图,测的是你的系统抗打击能力,更是你的神经!

加固方向?别迷路,找准你的“命门”!

  1. 账号认证:权限这玩意儿,给多了是祸害!
  2. 通信协议:明文传输?嫌命长?
  3. 补丁:亡羊补牢,犹未晚矣!
  4. 服务进程:僵尸进程,必须清理!
  5. Banner与自动注销:细节决定成败,别掉链子!

账号管理与认证授权:管好你的“钱袋子”!⭐

账号分级?别怕麻烦,安全第一!

目的:不同管理员,不同权限,防止“一锅端”。

# 创建多用途账号,密码必须复杂!
useradd username
passwd username

# 修改目录权限,别乱给!
chmod 750 dir
chown user:group dir

# 普通账户使用特定授权命令,sudo大法好!
sudo ifconfig

Sudo提权?悠着点,别玩脱了!
vim /etc/sudoers   # 或者 命令visudo,强烈建议visudo,语法检查更友好!
testn   localhost=NOPASSWD:ALL,usr/sbin/useradd,/usr/sbin/ifconfig # 允许testn免密执行useradd和ifconfig
testn   localhost=NOPASSWD:ALL,!/usr/sbin/ifconfig # 允许testn免密执行所有命令,但禁止ifconfig

# jerry可以在本地使用useradd命令,注意路径!
jerry localhost=/usr/sbin/useradd

# 注释:
# testn:用户名
# localhost:主机名
# NOPASSWD:ALL:sudo时不需要密码,高危操作!
# !:不能执行什么命令
# usr/sbin/useradd,/usr/sbin/ifconfig:多个命令用逗号隔开

Sudo配置,务必谨慎!权限越小越好!

高权限文件?盯紧了,别被钻了空子!

过高的权限或在不应该时间段创建或修改的文件,都是潜在的风险。

find / -type f ( -perm -00007 ) -a -ctime -1 |xargs -I {} ls -lh {}
# -ctime:属性变更
# -mtime:内容修改
# atime:被访问

定期检查高权限文件,发现异常,立即处理!

默认账号?删删删,一个不留!

目的:删除系统不需要的默认账号、更改危险账号的默认shell变量,降低被利用的可能性。

# 删除/锁定多余用户与组
userdel -r username # 彻底删除用户
groupdel groupname # 删除组
passwd -l username # 锁定用户,使其无法登录

# 修改程序账号的登录shell,防止交互式登录
usermod -s /sbin/nologin username

默认账号,是黑客的最爱!

Root远程登录?想都别想!

目的:限制具备超级权限的用户远程登录,降低风险。

# 1.修改sshd配置文件
vim /etc/ssh/sshd_config
# 禁止root用户远程登录
PermitRootLogin no

# 2.重启sshd服务
systemctl restart sshd

Root远程登录,是自杀行为!

UID为0的用户?留着干嘛,赶紧清理!

目的:减少被越权使用的可能性。

# 1.检查哪些账户的UID为0
awk -F: '($3 == 0) { print $1 }' /etc/passwd

# 2.删除账户,或编辑passwd与shadow文件
userdel -r username

UID为0,意味着拥有Root权限!

安全日志?你的“眼睛”,时刻盯着!
# 显示所有登录用户的信息
last

# 显示登录失败的用户信息
lastb

# 安全日志,重点关注!
cat /var/log/secure

定期分析安全日志,发现异常,及时预警!

高权组的账户?查查查,一个都不能放过!

目的:检查是否有账号获取过高权限。

# 1.uid起始值:正常1000以后,特别关注少于1000
grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk '{print $2}'

# 2.能登录系统用户的组id
awk -F: '$3>1000{print $1}' /etc/passwd |xargs -I {} grep {} /etc/group

# 3.能登录系统用户的用户id
grep -v "/sbin/nologin" /etc/passwd |awk -F : '{print $1}' | xargs -I {} grep {} /etc/group

权限最小化原则,时刻牢记!

密码生存周期?别太长,三个月一换!

目的:对于采用静态密码认证的设备,账户密码的生存周期不长于90天。

# 修改文件密码策略文件
vim /etc/login.defs
PASS_MAX_DAYS 90    # 最长使用期限
PASS_MIN_DAYS 0     # 最短使用期限
PASS_MIN_LEN  8     # 密码最小长度
PASS_WARN_AGE 7     # 最长期限到期前7天提醒更改密码

密码定期更换,防患于未然!

密码强度策略?必须有,必须强!

目的:规范使用高强度密码,延长被爆破的时间。

# 修改pam认证文件
vim /etc/pam.d/system-auth
# 添加、修改内容,注意顺序!
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minclass=3 minlen=8

# 注释:
# try_first_pass:修改密码前输入当前密码
# local_users_only:本地用户
# retry:重试次数
# authtok_type:修改密码的提示内容
# dcredit=-1:至少一个数字
# lcredit=-1:至少一个小写字母
# ucredit=-1:至少一个大写字母
# ocredit=-1:至少一个特殊字符
# minclass=3:至少三个字符(大小写字母,数字,特殊字符)
# minlen=8:至少八位密码
# remember=3:防止使用前三次内设置过的密码

密码强度不够,等于裸奔!

CentOS 7密码复杂性?更严格,更安全!
# 文件位置 /etc/security/pwquality.conf

# 命令:authconfig,更方便!
authconfig --passminlen=8 --update        # 密码最短8位
authconfig --enablereqlower --update      # 包含一个小写
authconfig --enablerequpper --update      # 包含一个大写
authconfig --enablereqdigit --update      # 包含一个数字
authconfig --enablereqother --update          # 包含一个字符

CentOS 7,密码策略更强大!

密码历史?记住了,别重样!

目的:防止被社工字典破解。

# 修改pam认证文件
vim /etc/pam.d/system-auth
# 添加、修改内容
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

密码历史记录,防止“旧瓶装新酒”!

账户锁定策略?连续失败,拉黑!

目的:防止被连续试探密码,降低爆破可能性。

vim /etc/pam.d/system-auth
# 加在注释文档后一行就行,连续6次失败,就拉黑
auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=60

# 查看登录失败次数
[root@bogon ~]# pam_tally2 --user hello
Login           Failures Latest failure     From
hello               6    05/31/23 10:36:23  pts/0

# 重置登录失败
pam_tally2 --user hello --reset

账户锁定,是防御爆破的利器!

关键目录权限?别乱动,小心出事!

目的:在设备权限配置能力内,根据用户的企业需要,配置其所需的最小权限,以减少非法访问的可能性。

# 更改账户组文件的权限设置
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group

# 去除多余的写入操作,例如
chmod -R go-w /etc

权限控制,是安全的基础!

Umask值?改一下,更安全!

目的:修改创建文件或目录时的默认权限,防止属于该组的其他用户级别组的用户修改该用户的文件。

# 修改启动脚本文件
/etc/profile
/etc/csh.login
/etc/csh.cshrc
/etc/bashrc

# 在文件末尾加入umask值
umask 027

Umask值,影响文件默认权限!

硬件资源限制?别放纵,控制住!

目的:限制用户对系统资源的使用,减缓DDOS等攻击危害。

# 1.修改限制文件
vim /etc/security/limits.conf
# 加入如下内容
*   soft    core    0 # 禁止生成core dump文件
*   hard    core    0
*   hard    rss     5000 # 限制最大内存使用量
*   hard    nproc   20 # 限制最大进程数
# *     soft   nproc    4096  # 所有的用户默认可以打开最大的进程数为 4096
# root  soft   nproc    unlimited # root 用户默认可以打开最大的进程数 无限制的。

# 2.修改pam的本地登录文件
vim /etc/pam.d/login
# 在文件末尾加入信息
session required /lib64/security/pam_limits.so

# 3.日常收集进程数使用
ps aux |grep httpd |wc -l

硬件资源限制,防止被恶意消耗!

LS和RM别名?加个保险,更放心!

目的:让ls随时看清文件属性,让rm需要确认后删除目标实施方法。

# 1.修改当前用户的登录启动脚本
vim ~/.bashrc
# 追加别名命令
alias ls="ls -alh" # 显示所有文件属性
alias rm="rm -i" # 删除前询问

LS和RM别名,防止误操作!

禁止SU到Root?断了念想,更安全!

目的:避免任何人使用su切换到root,减少提权风险。

# 1.修改su的配置文件
vim /etc/pam.d/su
auth    sufficient  /lib/security/pam_rootok.so
auth    required    /lib/security/pam_wheel.so group=wheel # 只有wheel组的用户才能SU

# 2.如果需要su切换,将用户加入wheel组
usermod -g wheel luobo

禁止SU到Root,防止权限滥用!

去掉SUID和SGID?斩草除根,不留后患!

目的:防止被利用提权。

# 查找具有SUID和SGID的对象
find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -1g {} ;

chmod ugo-s file # 去掉SUID和SGID

SUID和SGID,是提权的“捷径”!

开放目录粘滞位?只许删自己的,不许动别人的!

目的:允许小规模开放目录,用户作为暂存目录使用。

# 为/tmp目录添加粘滞位
chmod +t /tmp/

粘滞位,保护用户文件!

启用日志记录?留个底,心里踏实!

目的:增加审计记录,分布保存日志。

机器准备:

主机名IP
node0110.0.1.110
log(日志服务器)10.0.1.111

node01操作:

# 1.修改应用服务器日志配置文件
vim /etc/rsyslog.conf

# 确认关键日志审计是否存在
# *.info;mail.none;authpriv.none;cron.none     /var/log/messages
# authpriv.*                                   /var/log/secure

# 添加两行转发日志信息
*.info;mail.none;authpriv.none;cron.none         @10.0.1.111 # UDP转发
authpriv.*                                       @@10.0.1.111 # TCP转发

# 注释:
# @:使用udp协议
# @@:协议tcp协议
# 10.0.1.111:把日志内容写入到10.0.1.111机器上

# 2.重启rsyslog
systemctl restart rsyslog.service

log(日志服务器):开启配置文件

# 1.修改应用服务器日志配置文件
vim /etc/rsyslog.conf
#  15 $ModLoad imudp
#  16 $UDPServerRun 514

#  19 $ModLoad imtcp
#  20 $InputTCPServerRun 514

#  22 $template Remote,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%fromhost-ip%.log"

#  47 #### RULES ####
#  48 :fromhost-ip, !isequal, "127.0.0.1" ?Remote
#  49 & stop

# 2.重启rsyslog
systemctl restart rsyslog.service

# 3.查看日志是否有时间段的目录,有了则成功
ls /var/log

# 4.日志服务器实时查看日志,在客户机器输入 logger luobo
tail -f /var/log/2023-05-31/10.0.1.110.log

日志记录,是事后追责的依据!

重要日志权限?640足矣,别太开放!
# 防止日志泄露敏感信息
ls -la /var/log/
chmod -R 640 /var/log

日志权限,控制访问范围!

关键文件底层属性?锁死它,动不了!

目的:增强关键文件的底层属性,降低篡改风险。

# 1.修改关键文件的日志和底层属性
chattr +a /var/log/messages  # 只允许追加
chattr +i /etc/shadow   # 禁止修改
chattr +i /etc/passwd   # 禁止修改
chattr +i /etc/group    # 禁止修改

# 不只限于上述文件,可用lsattr查看更改结果

文件底层属性,是最后的防线!

通信协议:别让你的数据“裸奔”!⭐

Telnet?OUT!赶紧关掉!

目的:降低被抓包后获取系统关键信息

vim /etc/xinetd.d/telnet
disable=yes

Telnet,是明文传输的“活化石”!

加密远程管理?SSH才是王道!

目的:使用安全套接字层加密传输信息,避免被侦听敏感信息。

# 1.修改sshd配置文件
vim /etc/ssh/sshd_config
# 更改默认端口,防止暴力破解
Port 2020

# 禁止root远程登录
PermitRootLogin no

# 开启v2版本,更安全
Protocol 2

# 2.重启sshd服务
systemctl restart sshd.service

SSH,是安全的远程管理工具!

访问控制列表?设个门槛,挡住坏人!

设置访问控制白名单,减少被入侵的风险。

# 修改拒绝策略
vim /etc/hosts.deny
ALL:ALL # 拒绝所有

# 修改允许策略
vim /etc/hosts.allow
# sshd:来访者IP地址
sshd:10.0.1.110
sshd:10.0.1.111

ACL,是简单的访问控制手段!

固化DNS解析?防止劫持,自己做主!

目的:降低被DNS劫持的可能性。

# 修改hosts文件
vim /etc/hosts

# 加入解析信息
61.59.123.22 www.baidu.com # 访问IP  服务器域名

Hosts文件,是你的“私人DNS”!

开启Syncookie?缓解SYN Flood,扛住!

目的:缓解SYN Flood攻击。

# 1.修改系统控制文件
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1

# 2.配置生效
sysctl -p

Syncookie,是防御SYN Flood的“盾牌”!

不响应ICMP?别理它,省点事!

大白话理解:你能ping通别人,别人ping不通你。

目的:不对ICMP请求作出响应,避免泄露信息。

# 1.修改网络策略布尔值
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# 2.配置生效
sysctl -p

不响应ICMP,防止被探测!

禁止无源路由?别被骗了,假的!

目的:防止被无源数据包利用。

# 1.检查是否开启了路由功能
sysctl -n net.ipv4.conf.all.accept_source_route

# 2.禁止路由
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

禁止无源路由,防止被欺骗!

SYN Flood优化?加把劲,再扛扛!

目的:修改半连接上线,缓解SYN Flood攻击。

# 1.查询当前半连接上限
sysctl net.ipv4.tcp_max_syn_backlog

# 2.修改半连接上限
sysctl -w net.ipv4.tcp_max_syn_backlog="2048"

SYN Flood优化,提升防御能力!

FTP黑白名单?管好你的“后花园”!

目的:防止非法账户访问FTP。

# 1.检查黑名单文件是否包含高危账户
cat /etc/vsftp/ftpusers
# 黑名单用户
# root
# bin
# daemon
# ...

# 2.使用白名单文件
cat /etc/user_list

cat /etc/vsftpd/vsftpd.conf
# 配置文件中是否存在
userlist_deny=NO # 允许白名单用户
userlist_enable=YES # 启用白名单

FTP黑白名单,控制访问权限!

FTP默认权限?别乱传,小心病毒!

目的:防止被上传执行脚本。

# 检查主配置文件 /etc/vsftpd/vsftpd.conf是否存在如下内容
cat /etc/vsftpd/vsftpd.conf
write_enable=YES # 允许上传
local_umask=022 # 本地用户上传权限
anon_umask=022 # 匿名用户上传权限

FTP默认权限,防止恶意文件上传!

FTP Banner?亮个身份,别装神秘!

目的:防止泄露服务信息。

# 检查主配置文件 /etc/vsftpd/vsftpd.conf 是否存在如下内容
cat /etc/vsftpd/vsftpd.conf
ftpd_banner=" Authorized users only. All activity may be monitored and reported. "

FTP Banner,声明安全策略!

可信NTP?时间同步,很重要!

目的:保持时间同步,防止某些服务错误。

yum install ntp -y

# 1.检查主配置文件 /etc/ntp.conf 是否存在如下内容
cat /etc/ntp.conf
server X.X.X.X # 可信NTP服务器地址

# 2.确保服务被启用
systemctl enable ntpd
systemctl status ntpd

NTP,保证时间同步!

高危文件?查查查,别留隐患!

目的:防止被使用远程登录漏洞。

脚本执行无返回值表示正常

# 1.检查.netrc脚本
vim find_net.sh
#! /bin/bash
for DIR in `cut -d ":" -f6 /etc/passwd`; do
if [ -e $DIR/.netrc ]; then
echo "$DIR/.netrc"
fi
done

# 执行脚本 脚本执行无返回值表示正常
sh find_net.sh

# 2.检查.rhosts脚本
vim find_rhost.sh
#! /bin/bash
for DIR in `cut -d ":" -f6 /etc/passwd`; do
if [ -e $DIR/.rhosts ]; then
echo "$DIR/.rhosts"
fi
done

# 执行脚本 脚本执行无返回值表示正常
sh find_rhost.sh

.netrc和.rhosts,是远程登录的“钥匙”!

关闭NFS?没必要,就关掉!

目的:防止被外挂文件系统,导致入侵。

# 1.检查是否存在敏感进程
ps aux |grep -E "lockd | nfsd |statd |mountd"

# 2.检查关闭NFS相关服务
systemctl list-unit-files |grep nfs
systemctl disable nfs-client.target

NFS,是文件共享的“通道”!

补丁:亡羊补牢,为时不晚!⭐

补丁?打起来,别犹豫!

可以使用系统版本为最新并解决安全问题。

# 1.使用yum更新(不建议,风险较高)
yum update

# 2.使用rpm安装(推荐,更可控)
# 访问:http://www.redhat.com/corp/support/errata 下载补丁
rpm -Fvh rpm包

# 注意:所有补丁需要在测试环境测试不影响业务服务后才可更新,下载补丁时,一定对文件进行签名合适。

打补丁,是解决安全漏洞的有效手段!

服务进程:砍掉多余的,瘦身!⭐

无用服务?关关关,一个不留!

目的:关闭无用服务,提高系统性能,减低漏洞风险。

# 1.检查有哪些自启动服务,并记录列表
systemctl list-unit-files |grep enabled

# 2.禁用无用服务
systemctl stop 服务名
systemctl disabled 服务名

关闭无用服务,减少攻击面!

建议关闭的服务?看看你的,有没有!

建议关闭的服务,看看你的系统,有没有不需要的!

Banner与自动注销:细节决定成败!⭐

隐藏Banner?别泄露,保持神秘!

目的:避免通过系统提示信息获取系统状态。

# 1.查看登录banner信息
cat /etc/issue

# 2.清空banner文件
echo  > /etc/issue

隐藏Banner,防止信息泄露!

登录超时?别挂机,自动注销!

目的:防止疏忽导致命令被他人使用。

# 1.修改 /etc/profile
vim /etc/profile
# 在HISTFILESIZE下面加入
TMOUT=180 # 180秒后自动注销

# 2.生效
source /etc/profile

登录超时,防止他人滥用!

历史命令?少一点,更安全!

目的:降低之前操作被窃取的风险。

# 1.修改/etc/profile
vim /etc/profile
# 历史记录条数,建议写30-50就行
HISTSIZE=50

# 2.生效
source /etc/profile

历史命令,可能泄露敏感信息!

跳过GRUB?别乱动,保护引导!

目的:防止在grub菜单对引导过程进行修改。

# 修改grub配置文件
vim /boot/grub2/grub.cfg
# 修改grub菜单等待时间
set timeout=0 # 立即启动

跳过GRUB,防止恶意篡改!

关闭Ctrl+Alt+Del?防止手抖,误重启!

目的:防止误操作重启服务器。

# 删除配置文件
rm -f /usr/lib/systemd/system/ctrl-alt-del.target

# 生效
init q

关闭Ctrl+Alt+Del,防止误操作!
```

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接即可前往获取

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
在这里插入图片描述

在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值