首页 > 系统相关 >【网络安全零基础入门】Linux安全加固(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全零基础入门】Linux安全加固(非常详细)零基础入门到精通,收藏这一篇就够了

时间:2024-10-31 16:19:19浏览次数:3  
标签:文件 入门 etc 目的 就够 vim 修改 Linux pam

大家好,我是向阳。今天将继续带大家入门网络安全linux系统篇安全加固教程,全程干货,建议收藏哈

安全加固方案原则

1.版本升级  
对于系统和应用在使用过程中暴露的安全缺陷,系统或应用厂商会及时发布解决问题的升级补丁包。升级系统或应用版本,可有效解决旧版本存在的安全风险。  
  
2.关闭端口服务  
在不影响业务系统正常运行情况下,停止或禁用承载业务无关的服务和服务端口,可有效避免无关服务造成的安全风险。  
  
3.修改配置项  
操作系统、安全设备、数据库、中间件、第三方应用和业务系统可更改的配置中与安全相关的设置参数等信息,通过修改安全配置,可以为网络和应用提供必要的安全保护。  
  
4.修改代码(可选)  
修改代码一般由系统开发商完成,安全加固支持方仅提供加固建议及加固有效性验证。  
  
5.主机和网络ACL策略  
主机和网络ACL策略是一类临时安全加固方法。  
ACL通常应用在系统的流量控制上,可通过实施ACL有效的部署网络出/入口策略,控制对内网资源的访问能力,来保障资源安全性。  
  
6.部署设备防护(可选)  
部署设备防护的安全加固方式一般由设备厂商完成。  

安全加固测试

我给大家准备了一份全套《网络安全入门+进阶学习资源包》共282G,需要的小伙伴可以扫描下方二维码或链接免费领取~

加固方向

1.账号管理与认证授权

2.通信协议

3.补丁管理

4.服务进程与启动

5.banner与 自动注销

账号管理与认证授权⭐

为不通的管理员分配不通的账号

目的:根据不同用途设置不同账户账号,提高安全层级

# 创建多用途账号  
useradd username  
passwd username  
  
  
# 修改目录权限  
chmod 750 dir  
chown user:group dir  
  
  
# 普通账户使用特定授权命令  
sudo ifconfig  

修改sudo的提权应用

vim /etc/sudoers   或者 命令visudo   
testn   localhost=NOPASSWD:ALL,usr/sbin/useradd,/usr/sbin/ifconfig  
testn   localhost=NOPASSWD:ALL,!/usr/sbin/ifconfig  
# jerry可以在本地使用useradd命令  
jerry localhost=/usr/sbin/useradd  
  
# 注释  
testn:用户名  
localhost:主机名  
NOPASSWD:ALL:sudo时不需要密码  
!:不能执行什么命令  
usr/sbin/useradd,/usr/sbin/ifconfig:多个命令用,隔开  

检查高权限文件

过高的权限或在不应该时间段创建或修改的文件

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

删掉不需要的账号,修改默认账号shell环境

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

# 删除/锁定多余用户与组  
userdel -r username  
groupdel groupname  
passwd -l username  
  
# 修改程序账号的登录shell  
usermod -s /sbin/nologin username  

限制超级管理员远程登录

目的:限制具备超级权限的用户远程登录

1.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  

安全日志

# 显示所有登录用户的信息  
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:防止使用前三次内设置过的密码  

centos7以后设置密码复杂性

文件位置 /etc/security/pwquality.conf   
  
命令:authconfig  
authconfig --passminlen=8 --update        # 密码最短8位  
authconfig --enablereqlower --update	  # 包含一个小写	  
authconfig --enablerequpper --update	  # 包含一个大写  
authconfig --enablereqdigit --update	  # 包含一个数字  
authconfig --enablereqother --update		  # 包含一个字符  

设置强制密码历史

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

# 修改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  

限制硬件资源

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

1.修改限制文件  
vim /etc/security/limits.conf   
# 加入如下内容  
*	soft	core	0  
*	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  

我给大家准备了一份全套《网络安全入门+进阶学习资源包》共282G,需要的小伙伴可以扫描下方二维码或链接免费领取~

对用户使用ls、rm设置别名

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

1.修改当前用户的登录启动脚本  
vim ~/.bashrc   
# 追加别名命令  
alias ls="ls -alh"  
alias rm="rm -i"  

禁止任何人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  
  
  
2.如果需要su切换,将用户加入wheel组  
usermod -g wheel luobo  

去掉所有人SUID和SGID

目的:防止被利用提权

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

对开放目录设置粘滞位

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

# 为/tmp目录添加粘滞位  
chmod +t /tmp/  
  
  
我们都知道,/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  
authpriv.*                                       @@10.0.1.111  
  
注释:  
@:使用tcp协议  
10.0.1.111:把日志内容写入到10.0.1.111机器上  
@@:协议udp协议  
  
  
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

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

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

使用加密的远程管理

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

1.修改sshd配置文件  
vim /etc/ssh/sshd_config   
# 更改默认端口  
Port 2020  
  
# 禁止root远程登录  
PermitRootLogin no  
  
# 开启v2版本  
Protocol 2  
  
  
2.重启sshd服务  
systemctl restart sshd.service 

设置访问控制列表

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

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

固化常用DNS解析

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

修改hosts文件  
vim /etc/hosts  
  
# 加入解析信息  
61.59.123.22 www.baidu.com  
访问IP  服务器域名  

打开syncookie

目的:缓解syn flood攻击

1.修改系统控制文件  
vim /etc/sysctl.conf  
net.ipv4.tcp_syncookies = 1  
  
2.配置生效  
sysctl -p  

不响应ICMP请求

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

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

1.修改网络策略布尔值  
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all  
  
2.配置生效  
sysctl -p  

禁止处理无源路由

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

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"  

FTP使用黑白名单限制

目的:防止非法账户访问ftp

1.检查黑名单文件是否包含高危账户  
cat /etc/vsftp/ftpusers  
# 黑名单用户  
root  
bin  
daemon  
adm  
lp  
sync  
shutdown  
halt  
mail  
news  
uucp  
operator  
games  
nobody  
  
  
2.使用白名单文件  
cat /etc/user_list  
  
cat /etc/vsftpd/vsftpd.conf  
# 配置文件中是否存在  
userlist_deny=NO  
userlist_enable=YES  

FTP设置上传文件后的默认权限

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

检查主配置文件 /etc/vsftpd/vsftpd.conf是否存在如下内容  
cat /etc/vsftpd/vsftpd.conf  
write_enable=YES  
local_umask=022  
anon_umask=022  

FTP设置banner信息

目的:防止泄露服务信息

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

我给大家准备了一份全套《网络安全入门+进阶学习资源包》共282G,需要的小伙伴可以扫描下方二维码或链接免费领取~

配置可信任的NTP服务器,并确保服务开启

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

yum install ntp -y  
  
1.检查主配置文件 /etc/ntp.conf 是否存在如下内容  
cat /etc/ntp.conf  
server X.X.X.X  
  
2.确保服务被启用  
systemctl enable ntpd  
systemctl status ntpd  

检查账户目录是否存在高危文件.netrd、.rhosts

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

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

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  

关闭NFS服务

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

# 检查是否存在敏感进程  
ps aux |grep -E "lockd | nfsd |statd |mountd"  
  
  
# 检查关闭NFS相关服务  
systemctl list-unit-files |grep nfs  
systemctl disable nfs-client.target  

补丁⭐

补丁装载

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

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与自动注销⭐

隐藏系统提示信息

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

1.查看登录banner信息  
cat /etc/issue  
  
  
2.清空banner文件  
echo  > /etc/issue  

设置登录超时注销

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

1.修改 /etc/profile  
vim /etc/profile  
在HISTFILESIZE下面加入  
TMOUT=180  
  
2.生效  
source /etc/profile  

减少history历史数量

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

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  

关闭ctrl+alt+del重启功能

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

删除配置文件  
rm -f /usr/lib/systemd/system/ctrl-alt-del.target  
  
生效  
init q  

969694)]

banner与自动注销⭐

隐藏系统提示信息

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

1.查看登录banner信息  
cat /etc/issue  
  
  
2.清空banner文件  
echo  > /etc/issue  

我给大家准备了一份全套《网络安全入门+进阶学习资源包》共282G,需要的小伙伴可以扫描下方二维码或链接免费领取~

设置登录超时注销

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

1.修改 /etc/profile  
vim /etc/profile  
在HISTFILESIZE下面加入  
TMOUT=180  
  
2.生效  
source /etc/profile  

减少history历史数量

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

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  

关闭ctrl+alt+del重启功能

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

删除配置文件  
rm -f /usr/lib/systemd/system/ctrl-alt-del.target  
  
生效  
init q  

网络安全学习资源分享:

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

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

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

标签:文件,入门,etc,目的,就够,vim,修改,Linux,pam
From: https://blog.csdn.net/A13531922962/article/details/143364182

相关文章

  • 从零到精通大模型!超详细入门知识点汇总,一篇在手,学习无忧!
    采用提问方式,从个人知识盲点开始,渐进式掌握大模型入门知识点。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍1、大模型中7b、70B代表什么在讨论人工智能领域特别是大型语言模型(LLMs)时,“7b”和“70B”均用来表示模型所包含的参数数量。这里的“b”是英文“Billion”......
  • DJango-入门
    1.Django系列之web应用于HTTP协议1.2最简单的web应用程序web应用程序指供浏览器访问的程序,通常也简称为web应用。应用程序有两种模式C/S、B/S。C/S是客户端/服务端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务端应用程序,这类应用程序一般借助浏览器来运行。we......
  • Linux——让程序在后台运行
    Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。点击查看代码#centos安装screenyuminstall-yscreen#在Ubuntu上安装并使用screensudoaptupdate#更新包列表sudoaptinstallscreen#安装screen工具#创建一个新的窗口sc......
  • 用Linux卸载手机上的系统软件
    很多手机系统滥用系统软件定义,把没用的软件归类为系统软件,不让用户卸载。但我们可以用adb卸载这些软件。首先用USB数据线将手机连接到电脑,在手机上切换到文件传输模式(MTP模式)安装adbArchLinux#https://wiki.archlinux.org/title/Android_Debug_Bridgesudopacman-Sandroid......
  • Linux vmstat
    通过vmstat--help查看usage:vmstat[options][delay][count]options指定参数delay统计时间间隔count统计次数options:-a,--activeactive/inactivememory-f,--forksnumberofforkssinceboot-m,--slabsslabinfo-n,......
  • 入门级汽车电子系统设计:中控屏HUD与摄像头的接口与芯片选型分析
    在汽车电子系统设计中,中控屏、HUD(抬头显示器)和仪表通常使用FPD(平面显示技术),而摄像头则常用GMSL(GigabitMultimediaSerialLink)接口。这种设计选择有其特定的原因和优势。中控屏HUD仪表使用FPD的原因图像质量:FPD能够提供高分辨率和良好的色彩还原,适合用于中控屏和HUD,这些......
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解
    一、MongoDB简介MongoDB是一种NoSQL数据库,以文档模型存储数据,具备高性能、弹性扩展性和分布式架构等特点,非常适用于高并发和大数据量的场景。本文将从Linux和Docker环境开始讲解,帮助读者在不同环境下顺利部署MongoDB。二、在Linux(CentOS)上部署MongoDB2.1......
  • “双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机
    “非对称AMP”双系统AMP(AsymmetricMulti-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux+RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立......
  • Linux安装Python 3.11
    Linux安装python在Linux上安装Python3.11,你可以按照以下步骤进行。这些步骤以CentOS为例,但其他Linux发行版的过程大同小异,可能只需稍作调整。1.检查Python版本首先,打开终端,检查系统上是否已安装Python3.11:python3.11--version#或者python3--version如果系统返回的是......
  • 如何搭建一个网站-linux
    准备工作选择Linux发行版在选择Linux发行版时,我们需要权衡不同的特性和需求。以下是几个常用的选择:发行版特点适用场景Ubuntu用户友好,丰富的软件资源初学者,桌面应用CentOS稳定可靠,长期支持服务器环境Debian稳健,注重安全生产环境Ubuntu以其简洁直观......