基于 centos7 安全加固

  • 背景
  • 分析
  • 方案
  • 各位有好的建议可以在评论区补充

背景

去年买了台云主机玩玩,一开始以为网络安全这个领域对我来说还太远了,黑客根本不可能攻击我的主机,但是没过多久我的主机就被黑客无情攻击了,直到收到一条云主机服务商发的短信告诉我主机被植入了挖矿程序,一脸懵逼的我以为杀掉这个挖矿进程,然后再删掉这个挖矿程序文件就可以了,结果现实打脸的比较快,不到5分钟,挖矿程序再次启动,cpu 继续打满 100%,被删掉的挖矿程序文件再次出现在同样的目录,之后也排查过 crontab 定时任务,也没发现什么问题,最终通过请教大神,把挖矿文件内容清空,然后通过 chattr +i 命令给这个文件加锁,之后这个挖矿程序就再也没有启动了。我以为这个问题解决了,但事实上之后 nginx 总是会莫名其妙的被杀掉,这时候让我对 Linux 系统安全引起了重视和兴趣,我决定把 Linux 系统安全加入到我的学习计划中,通过总结和请教,写下了这篇 linux 安全加固方案。

分析

上面说到我的主机被攻击,通过事后分析,我也总结了几点原因:
1.端口开放比较随意,redis、zookeeper、tomcat都是使用默认的端口,而且入方向规则是所有地址均可访问。
2.开放了 root 远程登录的权限。
3.使用 sshd V1 版本的协议(推荐使用 V2 版本,因为 V1 有bug)。
其实我的主机问题包括但不限于以上问题,列出来的是比较低级的问题。

方案

1.创建用于登录的用户 admin
因为接下来我们要将 root 远程登录权限给卸掉,但有时又需要使用 root 权限,这时候就应该用一个低权限普通账户登录,然后再 su root 来使用,所以先创建一个 admin 的普通用户,并将其添加至 wheel 组。

[root@kilobytech ~]$ useradd admin -g wheel
[root@kilobytech ~]$ passwd admin 回车下一步
输入密码******回车确认
再次输入密码******回车确认

2.限制 su 命令使用的条件

[root@kilobytech ~]$ vim /etc/pam.d/su

添加下面两行,其中 auth 后面是两个 tab 键,sufficient 和 required 后面是一个 tab 键

auth            sufficient      pam_rootok.so
auth            required        pam_wheel.so use_uid

限定非 wheel 组内用户不得使用 su 命令

[root@kilobytech ~]$ vim /etc/login.defs

在文件末尾添加 SU_WHEEL_ONLY yes 保存文件,这一步是为了配置只允许特定的 wheel 组内用户 su 到 root。

SU_WHEEL_ONLY yes

3.配置 sshd 服务安全加固

[root@kilobytech ~]$ vim /etc/ssh/sshd_config

修改以下配置项

# 禁止 root 远程登陆,若需要使用 root 权限,必须使用低权限普通账户登录主机后 su 切换到 root
PermitRootLogin no
# ssh 修改默认的登陆端口 22,记得需要在安全组规则里配置修改后端口入方向权限,并删除原 22 端口的规则
Port 7722
# 禁止空密码登录
PermitEmptyPasswords no
# 允许三次尝试
MaxAuthTries 3
# 在20秒内不能完成登录,则断开连接
LoginGraceTime 20
# 600秒后无动作就自动断开连接
ClientAliveInterval 600
# 闲置会话最多3个
ClientAliveCountMax 3
# 确保SSH LogLevel设置为INFO,记录登录和注销活动
LogLevel INFO
# SSHD强制使用V2安全协议
Protocol 2
# 重启 ssh 服务
[root@kilobytech ~]$ systemctl restart sshd.service

4.调整和关闭非必须的服务

# 关闭 postfix 服务。如无必要,禁止该服务。
[root@kilobytech ~]$ systemctl disable postfix
# 服务器禁 ping
[root@kilobytech ~]$ vim /etc/sysctl.conf
在最后一行追加  net.ipv4.icmp_echo_ignore_all = 1
# 执行命令 (配置文件才能生效):sysctl -p
[root@kilobytech ~]$ sysctl -p

5.将进程的内存空间地址随机化

# 增大入侵者预测目的地址难度,从而降低进程被成功入侵的风险
[root@kilobytech ~]$ sysctl -w kernel.randomize_va_space=2

6.修改历史命令保留数目为 5

[root@kilobytech ~]$ sed -i 's/^HISTSIZE=1000/HISTSIZE=5/' /etc/profile
# 当然也可以追加一个好看的日志输出格式变量
[root@kilobytech ~]$ export HISTTIMEFORMAT="%F %T"
[root@kilobytech ~]$ source /etc/profile

7.安装检测工具 chkrootkit 和 rkhunter
chkrootkit 安装&使用

[root@kilobytech ~]$ yum install -y gcc
[root@kilobytech ~]$ yum install -y gcc-c++
[root@kilobytech ~]$ yum install -y make
[root@kilobytech ~]$ yum install -y glibc-static
[root@kilobytech ~]$ mkdir /usr/local/etc/chrootkit
[root@kilobytech ~]$ cd /usr/local/etc/chrootkit/
[root@kilobytech ~]$ wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
[root@kilobytech ~]$ tar zxvf chkrootkit.tar.gz
[root@kilobytech ~]$ cd chkrootkit-0.53/
[root@kilobytech ~]$ make sense       #编译
[root@kilobytech ~]$ ./chkrootkit     #检测命令,若出现INFECTED那就要小心了(./chkrootkit | grep INFECTED)

chkrootkit 在检查 rootkit 的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时 chkrootkit 的检测结果将变得完全不可信。为了避免 chkrootkit 的这个问题,可以在服务器对外开放前,事先将 chkrootkit 使用的系统命令进行备份,在需要的时候使用备份的原始系统命令让 chkrootkit 对 rootkit 进行检测。这个过程可以通过下面的操作实现:

[root@kilobytech ~]$ mkdir /usr/share/.commands
[root@kilobytech ~]$ cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands
# 使用备份过的命令来检测
[root@kilobytech ~]$ /usr/local/etc/chrootkit/chkrootkit-0.53/chkrootkit -p /usr/share/.commands/ | grep INFECTED
[root@kilobytech ~]$ cd /usr/share/
# 打压缩包备份命令更稳妥
[root@kilobytech ~]$ tar zcvf commands.tar.gz .commands

rkhunter 安装&使用

# 官网下载 https://sourceforge.net/projects/rkhunter/files/
[root@kilobytech ~]$ mkdir /usr/local/etc/rkhunter/
# 把文件下载到 /usr/local/etc/rkhunter/
# 解压
[root@kilobytech ~]$ tar xfz rkhunter-1.4.6.tar.gz
# 安装
[root@kilobytech ~]$ cd /usr/local/etc/rkhunter/rkhunter-1.4.6
[root@kilobytech ~]$ ./installer.sh --layout default --install
# 开始检测
[root@kilobytech ~]$ rkhunter -c
# 检测结果绿色的代表安全,红色的需要引起注意

最后,对所有重要文件进行锁定,不解锁的情况下 root 都无法删除修改

[root@kilobytech ~]$ chattr +i  /etc/passwd  /etc/group  /etc/shadow /etc/gshadow /etc/inittab /etc/pam.d/su /etc/sudoers /etc/login.defs /etc/ssh/sshd_config /usr/share/commands.tar.gz

各位有好的建议可以在评论区补充

Linux 服务器安全加固方案相关推荐

  1. Linux服务器分区的方案

    Linux服务器分区的方案 1. Linux服务器分区的方案: 分区类型 分区的实际大小 / 1G-2G (最少要150–250MB) /boot 32M-100M (启动分区,最多只要100M左右) ...

  2. linux主机安全加固,linux主机安全加固方案.doc

    . . PAGE word版本 PAGE 2 目 录 TOC \o "1-3" \h \z \u LINUX加固方案 1 1.安装最新安全补丁 4 2.网络和系统服务 4 3.核心 ...

  3. Linux(Centos)安全加固方案总结

    Linux安全加固方案总结 本人菜鸟一枚,通过CSDN文章,总结日常工作.学习到的经验,供自己日常查阅与有需要伙伴查阅. Linux系统加固主要通过以下几个方面,实现系统安全加固.本文以Centos7 ...

  4. Linux 服务器安全加固 10条建议

    作者:研究僧 链接:https://cloud.tencent.com/developer/article/1623140 以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍, ...

  5. Linux服务器开发,定时器方案红黑树,时间轮,最小堆

    ─────────────────────────────────────────────────────────────── ┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ ...

  6. linux服务器加固的命令,Linux 服务器安全加固

    一.summary 随着互联网的发展,隐私以及安全被大家看的越来越重视,越来越多的重要交易正在通过网络完成,与此同时数据被损坏.截取和修改的风险也在增加.优秀的系统应当拥有完善的安全措施,应当足够坚固 ...

  7. CentOS服务器的加固方案

    >>>Centos账户安全 对Centos的加固首先要控制用户的权限,用户权限主要涉及到/etc下的/passwd,/shadow和/group三个文件 /passwd文件主要是存储 ...

  8. Linux服务器加固方案

    前言:本人在几家小厂做开发,主Java,因人手问题,前端/安卓/服务器等都有涉猎.这里我结合网上各位大佬的经验和自己收获总结.对Linux服务器安全 和 防火墙的配置 和 服务器加固方案 进行简单的讲 ...

  9. 【安全运维】 linux 系统账户,网络,简易安全加固方案(第一部分),经测试可行...

    前言 讲到linux系统账户的管理以及安全,就必须涉及 /etc/passwd   /etc/shadow  这2个文件 这里以截图中文字说明的方式,来分析这2个文件的内容,并且给出一些实用的安全加固 ...

  10. 悬镜 linux防黑加固平台,悬镜答疑丨悬镜服务器防护CC效果如何?

    原标题:悬镜答疑丨悬镜服务器防护CC效果如何? 随着悬镜用户数量的增多,粉丝在使用悬镜服务器卫士的过程中也遇到越来越多的问题,小编针对悬镜用户在产品互动群提出的疑问,给大家做了一个整理,大家在用的过程 ...

最新文章

  1. 计算机网络按功能自底而上划分,大连理工大学2011计算机期末模拟题3
  2. Redis 与 MQ 的区别
  3. tl r402路由器设置_家里新安装宽带如何连接路由器 家里新安装宽带连接路由器方法【详解】...
  4. java 域的隐藏_Windows Server 2008R2\2012\2016使用域策略自定义隐藏指定驱动器
  5. 京东公布618第一小时战报:成交金额同比增长65%
  6. c防止随机数重复_铝及铝模板等焊接常见缺陷、和防止措施12招
  7. Java分段函数选择结构,编程流程作业选择结构(50题)
  8. 数据可视化之下发图实践
  9. 3m格式的文件怎么转换成mp3_怎么将电脑上的mp4文件转换成mp3格式
  10. 走遍中国《中国古镇全集》
  11. cni k8s 插件安装_实现K8S中Pod带宽限制
  12. 最新MATLAB R2020b超详细安装教程(附完整安装文件)
  13. select设置默认的option
  14. 怎么批量删除 Word、Excel 以及文本文档中的空白行?
  15. netcfg.exe
  16. package.json与package-lock.json
  17. 浮动的简介——CSS
  18. Kafka的数据是如何存储的
  19. 青软集团U+新工科智慧云平台助力西北民族大学编程竞赛成功举办!
  20. 07 情商上来了-自卑也能出奇迹

热门文章

  1. win10黑客教学(5)--xscan漏洞探测
  2. 大象英语-电脑键盘练习工具儿童版(学英语、学电脑)
  3. phpstorm设置鼠标滚动缩放代码字体大小
  4. ExtJs教程 3.0
  5. C++ --对象和类
  6. console application
  7. 初入python,被面试官问道,它的环境有几个。
  8. VRay5.0 for 3dsMax2016-2021及素材库
  9. shm 共享内存 android,共享内存
  10. word手动设置编号起始值