对于互联网IT从业人员来说,越来越多的工作会逐渐转移到Linux系统之上,这一点,无论是开发、运维、测试都应该是深有体会。曾有技术调查网站W3Techs于2018年11月就发布一个调查报告,报告显示Linux在网站服务器的系统中使用率高达37.2%,这一数据也表明,Linux系统被广泛应用。其实,除了在网站服务器中的应用,Linux系统还被用于DNS域名解析服务器、电子邮件服务器、一些开源软件的应用(大数据应用:据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建)服务器等之上。

大多数使用者都会认为Linux默认是安全的,有时候这种说法也的确是一个存在争议的话题。Linux默认确实有内置的安全模型。你需要打开它并且对其进行定制,这样才能得到更安全的系统。Linux更难管理,不过相应也更灵活,有更多的配置选项。

对于系统管理员,让产品的系统更安全,免于骇客和黑客的攻击,一直是一项挑战。而且,近些年来对于Linux遭遇攻击的案例很多,所以,如何构建一个安全、强大且牢固的Linux系统一直是一个可探索性的话题。今天,民工哥将从系统的各个层面,给大家分享一下我在日常工作中是如何构建、或者加固Linux系统安全的。希望这些方法对你有所帮助,码字不易,如有帮助,请转发分享加点在看支持一下民工哥。

1、物理安全

这应该说是对于服务器安全保障的第一步。

硬件服务器,首先得专业人的来做专业的维护。其次就是关闭从CD/DVD等这些方面的软启动方式。同时也可以设置BIOS密码,并且要有限制访问的策略与各类流程管控。

还可以禁用USB设备来达到安全的目的:

vim /etc/modprobe.d/stopusb
install usb-storage /bin/true

或者使用下面的命令将USB的驱动程序删除

[root@rs-server ~]# mv /lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz

2、保证系统最新

这个就是说要保证系统无其它漏洞存在,比如:已经有的漏洞要及时的修复。保证系统包含了最新版本的补丁、安全修复和可用内核。

yum updates
yum check-update

这个就需要管理员经常关注国内外关于、系统最新漏洞以及补丁发布的信息了:

2018上半年回顾:网络安全直面五大威胁!

nginx 被爆安全问题致使 1400 多万台服务器易遭受 DoS 攻击

构建高效安全的Nginx Web服务器

3、最小化处理原则

无论是安装系统,还是常用的软件,都必须遵守这个原则:最小化安装,同时也是减少漏洞存在的可能性。

对于系统一些不必要的服务、端口,建议关闭。

[root@rs-server ~]# chkconfig --list |grep "3:on"
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

然后使用下面的命令关闭:

chkconfig service-name off

4、登录与连接

对于Linux服务器来说,一般都是采用远程登录(SSH)连接的方式去进行登录操作。因此:

第一步:就是除了非必要情况,杜绝使用root用户登录,可以使用sudo来进行提权操作,然后利用系统命令将/etc/sudoers文件锁定(除root用户之外的用户无权限修改)。

第二步:建议修改SSH配置文件,比如默认端口号22,禁止root密码登录(有些自有机房的还可以直接禁用root用户通过SSH协议登录)等。

[root@rs-server ~]# vim /etc/ssh/sshd_config
#Port 22
可修改成其它端口号,民工哥常用IP+22混合使用
#PermitRootLogin yes
将yes改成No
#PermitEmptyPasswords no
打开注释即可
#AllowUsers username
指定特定的用户通过SSH协议进行远程连接

对于生产中的服务器,我们还可以使用堡垒机进行连接限制:

手把手从0开始教你搭建Jumpserver,为服务器安全保驾护航!

5、用户管理

Linux是一个可多用户并行操作的系统,所以,系统也对用户进行了划分:超级用户与普通用户。两者权限不同,因此,能干的事也有所不同,所以,对于用户的管理也是非常重要的一步。

设置用户密码:

这个可以通过系统命令passwd来进行设置,一般建议使用强度比较复杂的密码,且各个系统中相同的用户使用不同的密码(日常可以使用管理器来管理)。

[root@rs-server ~]# passwd mingongge
Changing password for user mingongge.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

临时用户管理:

对于这种需要的临时用户管理,一般是使用过后可以删除,也可以在一段时间后将其锁定不让其再登录,在下次需要登录时再次开启权限。

删除用户很简单,可以使用系统命令userdel -r username 进行删除。

锁定用户其实就是修改用户的属性:

[root@rs-server ~]# usermod -L mingongge

我们打开终端尝试登录看看:

这时发现已经无法正常登录连接了,表明刚刚的配置是正确的。等到下次需要登录时,可以使用下面的命令进行解锁:

[root@rs-server ~]# usermod -U mingongge
#-L lock
#-U unlock

6、文件管理

这里的文件管理指的是存储用户信息的重要文件:/etc/passwd、/etc/shadow这两个文件。

[root@rs-server ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 945 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17135889 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-08-06 01:14:37.439994172 +0800
Modify: 2019-08-06 01:14:37.440994172 +0800
Change: 2019-08-06 01:14:37.442994172 +0800
Birth: -
[root@rs-server ~]# stat /etc/shadow
File: ‘/etc/shadow’
Size: 741 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17135890 Links: 1
Access: (0000/----------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-08-06 01:14:37.445994172 +0800
Modify: 2019-08-06 01:14:37.445994172 +0800
Change: 2019-08-06 01:14:37.447994172 +0800
Birth: -

一般从上面的一些文件属性上可以看出是不是这些文件遭遇篡改了,所以,一般情况建议将此两个文件锁定除了root用户之外的用户无权限修改与访问。

7、启用防火墙

利用系统的防火墙来过滤出入站的流量,这是一个很好的预防攻击的策略,而且系统防火墙的规则可以逐条设置,非常强大,强裂建议开启。

Linux系统安全配置iptables服务介绍

8、软件包的管理

对于系统安装的软件,我们使用RPM包管理器来管理,对于使用yum或者apt-get命令列出来的软件,在对其进行删除、卸载时,一定要使用下面的命令进行:

yum -y remove software-package-name

sudo apt-get remove software-package-name

9、禁用Crtl+Alt+Del 重启

多数服务器在按下Crtl+Alt+Del组合键后,都会使用服务器重启,这个对于线上服务器来说是绝对不友好的一个安全因素,必须禁止,否则一个误操作就造成很大的影响。

#CentOS6 禁用Ctrl+Alt+Del重启功能
#方法一:
vi /etc/init/control-alt-delete.conf
#start on control-alt-delete #注释此行 #方法二:
mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bak #注:两种方法都无需重启系统即可生效

对于CentOS7 来说,方法有所不同:

[root@rs-server ~]# cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

这个文件里已经说明了相关的介绍。

经过测试,如果将上面文件中的配置注释掉之后,reboot命令会不生效了:

[root@rs-server ~]# ll /usr/lib/systemd/system/ctrl-alt-del.target
lrwxrwxrwx. 1 root root 13 Mar 14 17:27 /usr/lib/systemd/system/ctrl-alt-del.target -> reboot.target

这个ctrl-alt-del.target这是reboot.target的软链接。所以,最终正确的方法是:移动掉这个文件到其它目录,然后重载配置文件使用其它生效,如果再需要这个功能就只需要重新添加这个软件链接即可。

10、监控用户行为

如果你的系统中有很多的用户,去收集每一个用户的行为和和他们的进程消耗的信息非常重要。可以随后和一些性能优化和安全问题处理时进行用户分析。但是如果监视和搜集用户行为信息呢 ?有两个很有用的工具‘psacct‘ 和 ‘acct‘可以用来监视系统中用户的行为和进程。

[root@rs-server ~]# yum install psacct -y

使用方法如下:

ac 统计用户连接时间
ac       #显示所有用户连接总时间
ac -p    #显示每个用户连接时间
ac -d    #显示每天所有用户连接总时间
ac silence      #显示指定用户连接时间
ac -d silence   #显示指定用户每天连接时间 sa 输出用户活动信息
sa      #显示所有用户执行命令情况
sa -u   #按用户显示执行命令情况
sa -m   #按进程显示执行命令情况
sa -p   #按使用率显示执行命令情况 lastcomm 输出最近执行命令信息
lastcomm            #显示所有执行命令
lastcomm silence    #显示指定用户执行命令
lastcomm ls         #显示指定命令执行情况 其他
last        #查看最近用户登录成功列表
last -x     #显示系统关机、重新开启等信息
last -a     #将IP显示在最后一列
last -d     #对IP进行域名解析
last -R     #不显示IP列
last -n 3   #显示最近3条
lastb       #查看最近用户登录失败的列表

具体的使用例子:

[root@rs-server ~]# ac -p
root 71.88
total 71.88
[root@rs-server ~]# sa -u
root 0.00 cpu 1043k mem 0 io accton 
root 0.00 cpu 3842k mem 0 io systemd-tty-ask 
root 0.03 cpu 72576k mem 0 io pkttyagent 
root 0.00 cpu 32112k mem 0 io systemctl 
root 0.00 cpu 2674k mem 0 io systemd-cgroups 
root 0.07 cpu 37760k mem 0 io ps 
root 0.00 cpu 28160k mem 0 io grep 
root 0.00 cpu 1080k mem 0 io ac 
root 0.14 cpu 0k mem 0 io kworker/u256:0 *
root 0.10 cpu 0k mem 0 io kworker/0:0 *
root 0.02 cpu 0k mem 0 io kworker/0:2 * [root@rs-server ~]# lastcomm sa
sa root pts/0 0.00 secs Tue Aug 6 02:15 [root@rs-server ~]# last -x
root pts/0 192.168.1.14 Tue Aug 6 00:48 still logged in 
root tty1 Tue Aug 6 00:48 still logged in  [root@rs-server ~]# lastb
mingongg ssh:notty 192.168.1.14 Tue Aug 6 01:11 - 01:11 (00:00)
mingongg ssh:notty 192.168.1.14 Tue Aug 6 01:11 - 01:11 (00:00) btmp begins Tue Aug 6 01:11:27 2019

11、定期检查日志

将系统及其重要的日志保存在本服务器之外的专业日志服务器上,从而避免黑客通过分析日志来入侵系统及应用,以下是常见的日志文件:

12、数据备份

这个不用说都知道是非常重要的,尤其是重要的生产数据,必须本地、异地、不同介质备份及保存,同时还需要定期检查数据的完整性、可用性。

Xtrabackup实现数据的备份与恢复

高逼格企业级MySQL数据库备份方案,原来是这样....

关于数据误删后恢复:不小心执行了 rm -f,先别急着跑路 !

13、安全工具

对于系统来说,常用的安全扫描工具是必备的,比如:扫描开放端口nmap。对于系统中的WEB应用等来说,可以使用一些开源的工具:IBM AppScan、SQL Map等,同样这类的商用产品也很多,这里就不做介绍了(又不给我广告费)。

对于文件有文件加密工具,对于系统还有一些入侵检测、漏洞扫描工具,无论是开源还是商业,都是可以根据实际需求与企业成本来决定使用哪一款工具。

14、管理方法

对于安全管理来说,好的流程与管理制度同样也是必须的,否则,上述13点基本的作用为0,有方法,没有制度去让方法落地执行!!

所以,无论对于小企业、大企业来说,流程、管理制度始终是先行于所有的处理方法之前的。人才是世界上最不可控的因素!!

不掉坑,不背锅!史上最全的服务器安全管理规范开源了

希望这些方法对你有所帮助,码字不易,如有帮助,请转发分享加点在看支持一下民工哥。以上就是民工哥结合个人工作经验的一些总结,可能不全也可能会有不正之处,如果你也有不同的理解或强化系统安全的方法,也请文章后面留言分享出来,我们一探讨、一同交流、共同构建更加强大、安全、可靠的Linux系统环境。

关注民工哥技术之路微信公众号,在后台回复关键字:1024 可以获取一份最新整理的技术干货

14个Linux系统安全小妙招,总有一招用的上!的更多相关文章

  1. 与你们分享我学习linux系统的三大妙招

    一说到linux,我们就自然会想到企业服务器系统,目前市场上的网络设备都是使用linux内核操作系统,一些网络服务器也是使用linux操作系统下面的服务搭建实现的:目前操作系统这块也基本被linux占 ...

  2. 【转】一个小妙招能让你在服装上省下好多rmb

    朋友们,你们仔细算过自己每年在淘宝上买衣服消费了多少rmb吗?100?1000?10000?甚至更多? 朋友们,你知道淘宝上大多数店铺的衣服是哪里来的吗? 朋友们,你知道怎么在这上面能节省更多的mon ...

  3. 『学了就忘』Linux基础 — 14、Linux系统的设备文件名和挂载

    目录 1.设备文件名 (1)为什么需要设备文件名 (2)硬件设备文件名命名规则 2.挂载点 3.挂载 (1)什么是挂载 (2)挂载前的分区要求 (3)小结(重点) 1.设备文件名 (1)为什么需要设备 ...

  4. 在Linux系统(centos7)中,安装VScode,并在VScode上编写HTML网页

    [实验目的] 在Linux系统中,搭建编写HTML网页的环境.在VS code官网上,下载VS code安装程序,进行安装.在VS code软件中编写HTML页面,并正确运行. [实验步骤] 1)   ...

  5. 这里有40条提升编程技能小妙招!还有TIOBE 7月份的编程语言排行榜

    如何提高编程技能?恐怕很多开发者思考过这个问题.最近,拥有将近 15 年开发经验的软件工程师 Kesk -*- 写了一篇博客,列举了 40 条对其职业生涯有所帮助的事项.   或许,通过以下 40 个 ...

  6. U盘因为装linux系统变小了

    U盘在Windows下被UltraISO等软件制作成Linux启动盘后会自动被格式化成FAT格式,导致容量变小. 用DiskGenius去修复 http://www.jb51.net/softs/75 ...

  7. 关于MySQL索引知识与小妙招 — get get get

    一.索引基本知识 1.1 索引的优点 大大减少了服务器需要扫描的数据量,加快数据库的检索速度 帮助服务器避免排序和临时表 将随机io变成顺序io 1.2 索引的用处 速查找匹配WHERE子句的行 从c ...

  8. 【CSS】小妙招,各种问题总结方法处理

    1.实现div文字溢出自动省略号截取   overflow:hidden;  /*超过部分不显示*/   text-overflow:ellipsis;  /*超过部分用点点表示*/   white- ...

  9. Angular 开发小妙招1:提交表单数据验证不通过,更改输入组件的样式

    开发表单时,客户端数据完整性校验是必不可少的,在jquery 时代出现了无数的数据验证插件也很好用,开发Angular 应用时,angular 内置了一些常用的数据验证指令.今天要讲的不是这些指令如何 ...

随机推荐

  1. Opengl_入门学习分享和记录_00

    2019.7.4 本着对游戏创作的热情,本人初步了解了一部分的unity引擎的使用,也学习了一点C#可是越学习unity我就反而对引擎内部感兴趣(不知道有没有一样的朋友=,=). 接着了解到了open ...

  2. 工作中常见的五种技术leader

    力不从心型 在工作中有种技术leader,总认为自己是最好的.在方案设计的时候,自己有一种方案,下属有一种方案.leader非要别人听他的.如果两种方案没有优劣之分,比较建议的做法是让真正实施的人按照 ...

  3. bootstrap实战练习中涉及的知识点(很有用哦!)

    看的有关视频做的笔记,对bootstrap中涉及的知识点做了一定的解析,很有用哦!(新手上路,有不合适的地方可以指出哦!) 下面进入正题: Bootstrap是当下最流行的前端框架(界面工具集) 特点 ...

  4. vscode导入已存在的vue.js工程

    1.安装vue_cli 如果安装了npm,直接在命令行输入npm install -g vue-cli,安装在全局组件目录下 完成后,可以在命令测试下 2.导入工程 打开vscode-------&g ...

  5. Docker之- 使用Docker 镜像和仓库

    目录 使用Docker 镜像和仓库 什么是 Docker 镜像 列出 Docker 镜像 tag 标签 Docker Hub 拉取镜像 查找镜像 构建镜像 创建Docker Hub 账号 使用 Doc ...

  6. Hive 系列(八)—— Hive 数据查询详解

    一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件 emp.txt 和 dept.txt 可以从本仓库的resources 目录下载. 1.1 员工表 -- 建表语句 ...

  7. 40 篇原创干货,带你进入 Spring Boot 殿堂!

    两个月前,松哥总结过一次已经完成的 Spring Boot 教程,当时感受到了小伙伴们巨大的热情. 两个月过去了,松哥的 Spring Boot 教程又更新了不少,为了方便小伙伴们查找,这里再给大家做 ...

  8. Hey Future!

    我是蒟蒻QWQ 本人一大蒟蒻 弱的一批 希望大家见谅

  9. 关于Picasso加载图片Callback不执行问题

    关于Picasso加载图片Callback不执行问题 问题背景 代码大致如下,Target或Callback的回调有时候不执行. https://github.com/square/picasso/i ...

  10. Springboot源码分析之@Transactional

    摘要: 对SpringBoot有多了解,其实就是看你对Spring Framework有多熟悉~ 比如SpringBoot大量的模块装配的设计模式,其实它属于Spring Framework提供的能力 ...