首页 > 系统相关 >16、Linux安全加固

16、Linux安全加固

时间:2023-11-01 19:35:59浏览次数:35  
标签:查看 16 etc systemctl Linux 加固 日志 root pam

Linux安全加固

目录

安全加固思路

账户安全 -> 密码策略 -> 当前开放的服务是否存在高危服务 -> 排查当前的系统中是否存在内核漏洞 -> 排查主机所在信息系统所对应的管理制度是否恰当。

所有修改均需要root账号下,修改前务必先备份,备份命名建议使⽤"⽂件名.日期.bak或⽂件名.bak"

1、账号和口令

①禁用或删除无用账号
#目的:减少系统无用账号,降低安全风险。
操作步骤:
使用命令 userdel <用户名> 删除不必要的账号。
使用命令 passwd -l <用户名> 锁定不必要的账号。
使用命令 passwd -u <用户名> 解锁必要的账号。


②检查特殊账号
#目的:检查是否存在空口令和root权限的账号。确认UID为零的账号只有root账号。
操作步骤:
查看空口令和root权限账号,确认是否存在异常账号:
使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令账号。
使用命令 awk -F: '($3==0)' /etc/passwd 查看UID为零的账号。
加固空口令账号:
使用命令 passwd <用户名> 为空口令账号设定密码。


③添加口令策略
#目的:加强口令的复杂度等,降低被猜解的可能性。
1.使用命令 vim /etc/login.defs 修改密码策略配置文件。
操作步骤:
cp /etc/login.defs /etc/login.defs.bak
PASS_MAX_DAYS 90 	#密码最大使用期限	--等保要求密码过期时间不能大于90天
PASS_MIN_DAYS 0  	#密码最少使用天数 	--多少天后可以更改密码,至少1天
PASS_MIN_LEN  5  	#密码最小长度       --至少8位,且必须包含字母,数字和字符中每样至少一个
PASS_WARN_AGE 7 	#密码到期前警告天数
以上密码周期修改需要重启系统才能⽣效,但不影响已创建的⽤户。

2.使用chage命令修改用户设置。
//例如,chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>表示将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户。
//设置连续输错三次密码,账号锁定五分钟。使用命令vim /etc/pam.d/common-auth修改配置文件,在配置文件中添加 auth required pam_tally.so onerr=fail deny=3 unlock_time=300。
命令解读:
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
vim /etc/pam.d/system-auth
password requisite pam_cracklib.so minlen=8 ucredit=-2 lcredit=-1 dcredit=-4 ocredit=-1 在pam_cracklib.so后⾯配置参数 如果原来就有配置,可以不⽤改
deny:允许输错密码次数
unlock_time:解锁时间,单位秒
account required pam_tally2.so deny=5 unlock_time=300

3.修改密码复杂度设置
Debian/Ubuntu:修改⽂件vim /etc/pam.d/common-password
CentOS/RedHat/Fedora:修改⽂件vim /etc/pam.d/system-auth
password '[tab]' requisite '[tab]' pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 
说明:
# difok=3 允许的新、旧密码相同字符的个数为3
# minlen=8 最小长度为8
# ucredit=-1 限制新密码中最少有1个大写英文字符 负数表示最少,正数表示最多
# lcredit=-1 限制新密码中最少有1个小写英文字符
# dcredit=-1 限制新密码中最少有1个数字字符
# ocredit=-1 限制新密码中最少有1个标点字符
# 注:这个密码强度的设定只对普通用户有限制功能,root用户无论修改root的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功


④限制用户su
#目的:限制能su到root的用户。
操作步骤:
使用命令 vim /etc/pam.d/su修改配置文件,在配置文件中添加行。
例如,只允许test组用户su到root,则添加 auth required pam_wheel.so group=test。


⑤禁止root用户直接登录
#目的:限制root用户直接登录。
操作步骤:
创建普通权限账号并配置密码,防止无法远程登录。
使用命令 vim /etc/ssh/sshd_config修改配置文件将PermitRootLogin的值改成no,并保存,然后使用service sshd restart重启服务。

2、服务、端口

①关闭/禁用不必要的服务
#目的:关闭不必要的服务(如普通服务和xinetd服务),降低风险。
1.操作步骤:
使用命令 systemctl disable <服务名> 设置服务在开机时不自动启动。
说明:对于部分老版本的Linux操作系统(如CentOS 6),可以使用命令chkconfig --level <init级别> <服务名> off设置服务在指定init级别下开机时不自动启动。需要关闭的服务有 cups, telnet, vsftpd, rlogin, rsh, printer, sendmail, ypbind, kshell, lpd, ident, tftp, time, ntalk, bootps, chargen, nfs, daytime, nfslock,echo, discard, klogin chkconfig --list

2.关闭服务
redhat 6.x 版本:service vsftpd stop
redhat 8.x 版本:systemctl stop vsftpd

3.关闭开机启动
chkconfig vsftpd off


②SSH服务安全
#目的:对SSH服务进行安全加固,防止暴力破解成功。
操作步骤:
使用命令 vim /etc/ssh/sshd_config 编辑sshd服务端的配置文件。
1.不允许root账号直接登录系统:设置PermitRootLogin的值为no。//禁止root账户登录
2.修改SSH使用的协议版本:设置Protocol的版本为 2。
3.修改允许密码错误次数(默认6次):设置MaxAuthTries的值为 3。
4.配置文件修改完成后,重启sshd服务生效。


③黑白名单文件
远程登录方式必须使用密文传输,远程登录时不能使用默认管理员账户进行登录(如Linux系统的root,Windows系统的administrator)
SSH[密文-符合];Telnet[明文-不符合]
Liunx白名单文件:/etc/hosts.allow
Liunx黑名单文件:/etc/hosts.deny
相比于Linux的其他配置文件,改黑白名单文件可以即时生效。且白名单的优先级大于黑名单。
黑白名单添加格式:协议:地址


④关闭/禁用不必要的端口
1.需要禁⽤ 21 ftp 23 telnet 80:netstat -an | grep LISTEN
2.查看端⼝使⽤的PID:lsof -i:21
3.关闭对应的服务:service vsftpd stop
4.直接杀死进程:kill -9 pid
5.关闭512、513、514端⼝
systemctl stop rsh.socket # 514 
systemctl stop rlogin.socket # 513
systemctl stop rexec.socket # 512
systemctl disable rsh.socket
systemctl disable rlogin.socket
systemctl disable rexec.socket
systemctl disable xinetd
systemctl stop xinetd
6.关闭53端⼝(DNS服务)
systemctl stop named.service
systemctl disable named.service
systemctl stop dnsmasq
systemctl disable dnsmasq
7.关闭25端⼝
systemctl disable postfix
systemctl stop postfix
gateway=`netstat -rn | grep 0.0.0.0 | awk '{ if($1=="0.0.0.0") {print $2} }'`

3、文件系统

①设置umask值
#目的:设置默认的umask值,增强安全性。
操作步骤:
使用命令 vim /etc/profile 修改配置文件,添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。


②设置登录超时
#目的:设置系统登录后,连接超时时间,增强安全性。
操作步骤:
使用命令 vim /etc/profile 修改配置文件,将以 TMOUT= 开头的行注释,设置为TMOUT=180,即超时时间为三分钟。


③三权分立
#目的:等保要求禁用默认账户和超级管理员账户,并设置三权分立账户
root超级管理员-->禁用
创建三权分⽴账户
useradd sysadmin(安全员--负责安全策略--sec)
useradd audadmin(系统管理员--系统配置--sys)
useradd secadmin(审计员--日志审查--audit)
设置密码:密码不得与⽤户名⼀样,需含⼤写字⺟,特殊符号,数字。(设置了密码,该账户才可正常登入)
passwd sysadmin
passwd audadmin
passwd secadmin

4、日志

①syslogd日志
#目的:启用日志功能,并配置日志记录。
操作步骤:
Linux系统默认启用以下类型日志:
系统日志(默认)/var/log/messages
cron日志(默认)/var/log/cron
安全日志(默认)/var/log/secure
注意:部分系统可能使用syslog-ng日志,配置文件为:/etc/syslog-ng/syslog-ng.conf 可以根据需求配置详细日志。


②记录所有用户的登录和操作日志
#目的:通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。
操作步骤:
运行 [root@xxx /]# 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
运行 [root@xxx /]# source /etc/profile 加载配置生效。
注意:/var/log/history是记录日志的存放位置,可以自定义。
通过上述步骤,可以在/var/log/history目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外)。同时,建议使用OSS服务收集存储日志。


③审计功能查询:
service rsyslog status
service auditd status
审计功能如果想要符合等保需求如下:
1.审计记录大于6个月
2.审计日志必须转发到日志服务器进行备份  [通过U盘进行备份也可以]
3.审计记录必须包含重要的参数(时间,用户,事件的成败)
4.审计功能要保证除了审计员以外的账户无法关闭


④查看⽇志记录是否开启,默认情况下系统开启了syslogd和audit服务,可通过以下⽅法查询:
ps -ef syslogd
ps -ef audit

5、内核漏洞

①系统漏洞
查看系统漏洞是否存在,如果有是否有修补,是否定期扫描(不需要人为排查)
工具:nessus漏洞扫描工具对内网主机进行扫描


②杀软
系统中是否存在可以杀毒和防止入侵(入侵检测)的软件
windows----火绒/360/腾讯电脑管家/瑞星
Linux------ClamAV【开源】

6、其他

1、查看内核版本
①[root@localhost ~]# cat /proc/version【CentOS7版本】
Linux version 3.10.0-1160.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020
②[root@localhost ~]# uname -a【CentOS7版本】
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux


2、查看操作系统版本
lsb_release -a
cat /etc/issue
cat /etc/release


3、登录超时设置root下配置
cp /etc/profile /etc/profile.bak
vim /etc/profile
最后⾯添加⼀⾏TMOUT=600


4、⼿动锁定和解锁(passwd为小写参数)
usermod -L ⽤户名 锁定
usermod -U ⽤户名 解锁


5、限源访问
cp /etc/hosts.allow /etc/hosts.allow.bak
cp /etc/hosts.deny /etc/hosts.deny.bak


6、查看主机IP地址 ifconfig 只允许本⽹段访问
vim /etc/hosts.allow
sshd:192.168.1.0/24:allow
vim /etc/hosts.deny
sshd:all

7、等保测评Linux测评命令

①账户策略:
1.cat /etc/shadow查看口令,查看账户
2.cat /etc/ssh/ssh_config permitemptypasswords 注释或者后面加no 不允许空口令远程登录
3.cat /etc/pam.d/system-auth 查看密码复杂度
grep pam_cracklib.so模块查看,centos7之后是pam_pwquality.so模块。限制root用户,添加 enforce_for_root
4.cat /etc/login.defs 查看口令更换周期。修改vi /etc/login.defs设置仅影响创建用户,而不影响现有用户。
或chage -l 用户名 查看口令修改周期。
配置:chage -M 天数 用户名 —修改某用户的最大修改期限
chage -m 最小期限 -w 到期前提醒。
配置与passwd和shadow有冲突时,以passwd和shadow文件为准。
②登录策略:
5.cat /etc/pam.d/system-auth和/etc/pam.d/sshd 查看登录失败策略
在#%PAM-1.0下的前两行是否有auth required pam_tally2.so onerr=fail deny=6 unlock_time=300 even_deny_root root_unlock_time=300
注意:必须是头两行。登录失败配置详解
6.cat /etc/profile 查看登录超时是否自动退出
查看是否有TMOUT=300
注意:必须是TMOUT,不能是timeout,TIMEOUT等。 登录超时策略配置
7.service --status-all | grep sshd 查看是否采用ssh加密方式管理
centos7可用systemctl --type=service | grep sshd命令
8.netstat -an | grep 22 查看ssh服务对应端口是否打开
9.ps -e | grep sshd 查看是否开启ssh服务
10.systemctl is-enabled telnet.socket查看telnet服务是否可用
11.ls -l /etc/passwd,查看文件的权限值
12. id 0查看uid=0的用户有哪些
13. ps -ef | grep java 查看中间件运行用户,非root用户运行
14. cat /etc/ssh/sshd_config 是否允许root远程登录;文件中的permitrootloginno 表示不允许root账户远程登录
15. systemctl status rsyslog.service查看服务是否开启
16. cat /etc/audit/audit.rules对passwd等文件地读写执行产生审计日志。
③配置策略:
17. cat /etc/rsyslog.conf,是否成功指向日志服务器。
18. cat /etc/redhat-release 查看Linux版本
19. uname -a 查看内核版本
20. systemctl list-unit-files命令列出所有可用单元。查看是否有多余组件和应用程序。
21. yum list installed 查看已安装的rpm包
22. netstat -antpl | grep LISTEN 查看有无多余端口
23. cat /etc/hosts.at llow /etc/hosts.deny 是否合理限制访问地址 配置策略   

标签:查看,16,etc,systemctl,Linux,加固,日志,root,pam
From: https://www.cnblogs.com/carmi/p/17803904.html

相关文章

  • linux进程管理
    初识进程进程状态:进程介绍:进程唯一标识符:PID三种状态:就绪状态:已经具备运行条件,但CPU还没分配运行状态:占用并在cpu中运行阻塞状态:进程因等待某些事发生而暂停不能运行查看进程静态查看:   使用ps命......
  • Linux命令
    [root@centos02~]#超级管理员root用户[ly@centos02root]$普通用户ly普通用户无法更改系统配置和管理服务[ly@centos02root]$whoamily[ly@centos02root]$hostnamecentos02[ly@centos02root]$pwd/rootLinux的命令提示符由环境变量PS1控制,可以通过全局配......
  • 常见的linux 命令
    常见的linux命令ifconfig查看系统网络配置pwd查看当前工作目录(printworkingdirectory)mkdir创建文件夹,不能创建文件ll查看当前目录下的文件和文件夹,查看权限等详细信息)cd+相对路径,切换到当前工作目录的下一级目录cd+绝对路径,可以在任意位置切换到任意目录cd..切换到上......
  • Linux进程管理01
    查看进程静态查看进程:“psaux"查看当前目录的进程查看cpu占用率时,一般会希望进程按照cpu占用百分比的降序排列,使用“psaux--sort-%cpu”使用“psaxo”命令自定义显示的字段如:psaxopid,ppid,user,%cpu,command动态查看进程使用top查看命令动态查看进程进程优先级使......
  • linux中kill -9
    在linux中使用kill-9结束进程时,linux中进程结束了,但是注册中心中的链接还有,坑!在启用tomcat程序时,怎样用"./shutdown.sh"时,结束注册中心,linux中的进程也结束记录tomcat进程pid,shutdown时强制关闭进程1、进入tomcat的bin目录,使用vimcatalina.sh命令编辑文件,使用./搜索PRGDIR=......
  • P4067 [SDOI2016] 储能表 题解
    [SDOI2016]储能表-洛谷题目详情-[SDOI2016]储能表-BZOJbyHydroOJ一道很好的数位dp题不过这题有一个比较有意思的性质:当\(n,m\)为\(2^k\)的形式时,最终得到的数组对每一行排序后为\(0\simm-1\)的排列,如果有的话说不定可以作为一个部分分?遇到二进制运......
  • Linux操作之存储空间相关
    1、内存(1)、简介Linux中swap与memory。对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。除此之外,内存的断电丢失数......
  • Linux【CPU100% 问题定位】
    一、场景     在我们项目部署上线的时候,我们是不是会经常去Linux服务器上查查服务器的CPU使用率,或者是运维经常会盯Linux的CPU使用率。如果CPU使用率一直100%,如何查找并解决问题?二、步骤    2.1、定位到进程        使用top和ps分析工具报告......
  • Linux操作(第四周)
    这节课无缝衔接接着上节课的cat命令,cat命令0用于查看内容比较少的文件,而今天的more命令是以逐页的方式来显示文件内容的,其中空格键用以向下翻页,“b”键用于向上翻页。学习的第二个命令则是head命令,该命令用以查询文件的前几行,我们还可以用head-n的方式来查询前n行内容。与head......
  • linux学习记录:进程管理
    1.进程:正在运行的程序,包括这个程序所占用的系统资源。每个进程都有唯一的进程标识pid,一个pid只能识别一个进程,ppid是父进程id。进程状态:就绪、运行、阻塞。2.查看进程静态查看进程:psaux(捕捉某一瞬间某一个进程的状态)-a:显示所有用户的进程,包括完整路径-u:显示使用者的名......