Linux 服务器安全加固方案
基于 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 服务器安全加固方案相关推荐
- Linux服务器分区的方案
Linux服务器分区的方案 1. Linux服务器分区的方案: 分区类型 分区的实际大小 / 1G-2G (最少要150–250MB) /boot 32M-100M (启动分区,最多只要100M左右) ...
- linux主机安全加固,linux主机安全加固方案.doc
. . PAGE word版本 PAGE 2 目 录 TOC \o "1-3" \h \z \u LINUX加固方案 1 1.安装最新安全补丁 4 2.网络和系统服务 4 3.核心 ...
- Linux(Centos)安全加固方案总结
Linux安全加固方案总结 本人菜鸟一枚,通过CSDN文章,总结日常工作.学习到的经验,供自己日常查阅与有需要伙伴查阅. Linux系统加固主要通过以下几个方面,实现系统安全加固.本文以Centos7 ...
- Linux 服务器安全加固 10条建议
作者:研究僧 链接:https://cloud.tencent.com/developer/article/1623140 以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍, ...
- Linux服务器开发,定时器方案红黑树,时间轮,最小堆
─────────────────────────────────────────────────────────────── ┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ ...
- linux服务器加固的命令,Linux 服务器安全加固
一.summary 随着互联网的发展,隐私以及安全被大家看的越来越重视,越来越多的重要交易正在通过网络完成,与此同时数据被损坏.截取和修改的风险也在增加.优秀的系统应当拥有完善的安全措施,应当足够坚固 ...
- CentOS服务器的加固方案
>>>Centos账户安全 对Centos的加固首先要控制用户的权限,用户权限主要涉及到/etc下的/passwd,/shadow和/group三个文件 /passwd文件主要是存储 ...
- Linux服务器加固方案
前言:本人在几家小厂做开发,主Java,因人手问题,前端/安卓/服务器等都有涉猎.这里我结合网上各位大佬的经验和自己收获总结.对Linux服务器安全 和 防火墙的配置 和 服务器加固方案 进行简单的讲 ...
- 【安全运维】 linux 系统账户,网络,简易安全加固方案(第一部分),经测试可行...
前言 讲到linux系统账户的管理以及安全,就必须涉及 /etc/passwd /etc/shadow 这2个文件 这里以截图中文字说明的方式,来分析这2个文件的内容,并且给出一些实用的安全加固 ...
- 悬镜 linux防黑加固平台,悬镜答疑丨悬镜服务器防护CC效果如何?
原标题:悬镜答疑丨悬镜服务器防护CC效果如何? 随着悬镜用户数量的增多,粉丝在使用悬镜服务器卫士的过程中也遇到越来越多的问题,小编针对悬镜用户在产品互动群提出的疑问,给大家做了一个整理,大家在用的过程 ...
最新文章
- 计算机网络按功能自底而上划分,大连理工大学2011计算机期末模拟题3
- Redis 与 MQ 的区别
- tl r402路由器设置_家里新安装宽带如何连接路由器 家里新安装宽带连接路由器方法【详解】...
- java 域的隐藏_Windows Server 2008R2\2012\2016使用域策略自定义隐藏指定驱动器
- 京东公布618第一小时战报:成交金额同比增长65%
- c防止随机数重复_铝及铝模板等焊接常见缺陷、和防止措施12招
- Java分段函数选择结构,编程流程作业选择结构(50题)
- 数据可视化之下发图实践
- 3m格式的文件怎么转换成mp3_怎么将电脑上的mp4文件转换成mp3格式
- 走遍中国《中国古镇全集》
- cni k8s 插件安装_实现K8S中Pod带宽限制
- 最新MATLAB R2020b超详细安装教程(附完整安装文件)
- select设置默认的option
- 怎么批量删除 Word、Excel 以及文本文档中的空白行?
- netcfg.exe
- package.json与package-lock.json
- 浮动的简介——CSS
- Kafka的数据是如何存储的
- 青软集团U+新工科智慧云平台助力西北民族大学编程竞赛成功举办!
- 07 情商上来了-自卑也能出奇迹