增强服务器安全性能,加强Linux服务器安全的20项建议

9013c46d4cceb47fbb3dba9b397288b5.png

很多人都说 Linux 在默认配置下很安全,我在一定程度上同意这个说法(很值得商榷的话题)。不过 Linux 内置的安全模型和工具做得确实很到位,用户只需进行简单的调整和自定义就可以加强 Linux 服务器安全。

与恶意用户做斗争对于所有 Linux 系统管理员来说都是一项艰巨的任务,本文我们将介绍如何加强 Linux 服务器安全的 20 项建议,希望对保护你的系统有所帮助。

1. 物理安全

在服务器 BIOS 中禁用光驱、软驱、U盘等可引导的外部设备,并启用 BIOS 密码及 GRUB 密码来限制对系统的物理访问。

2. 磁盘分区

我们可以通过使用不同的分区来分散存储数据以获得更高的数据安全性,当发生任何灾难时,由于数据是隔离存储的,会将数据损失的几率降到最低。

3. 尽量减少软件包以减少漏洞

建议管理员尽量避免在 Linux 中安装非必要的软件包,而且不要使用来源不明的包,以尽可能的避免程序漏洞。当一个服务出问题时,很可能会波及到其它服务甚至整个系统,所以「非必要的服务就不运行」这是一个铁则。

对于 CentOS 系统可以使用 chkconfig 来查看运行在 runlevel 3 的服务:

/sbin/chkconfig --list |grep '3:on'

一旦发现有不需要的服务正常运行,可以使用如下命令禁用:

chkconfig serviceName off

对于使用 RPM 包或 DEB 安装的服务可以使用 yum 或 apt-get 找出包名称并用如下命令移除:

yum -y remove package-name

sudo apt-get remove package-name

4. 查看网络侦听端口

使用 netstat 命令可以看到什么样的网络应用正在侦听哪些端口,找出不必要的程序之后再用上面的方面来处理。

netstat –tulpn

5. 使用安全的远程连接(SSH)

Telnet 和 rlogin 都使用明文的协议,而且已被证实存在多种已经安全漏洞,SSH 是一种安全的协议,它可以使用加密技术与服务器进行通讯。

非必要时,不要使用 root 账户登录 SSH,要习惯使用 sudo 来切换身份。

SSH 22 端口目标过于明显,建议大家改成一个不常用的高端口并在 vi /etc/ssh/sshd_config 配置文件中至少配置如下选项:

#禁用root登录

PermitRootLogin no

#仅允许特定用户

AllowUsers username

#SSH协议版本

Protocol 2

6. 保持系统更新

尽量始终保持系统内核、应用补丁及安全修复处在最新状态:

yum updates

yum check-update

7. 锁定定时任务

cron 可以指定哪些用户可以使用,只需将允许的用户添加到 /etc/cron.allow 或将禁用的用户添加到 /etc/cron.deny 中即可。如果希望禁用所有用户使用任务计划,只需将ALL添加到cron.deny文件当中。

echo ALL >>/etc/cron.deny

8. 禁用USB存储设备检测

很多时候我们都需要禁用 USB 存储设备以防数据拷出,此时可以创建一个/etc/modprobe.d/no-usb文件并填入如下内容即可禁用 USB 存储设备检测:

install usb-storage /bin/true

9. 启用SELinux

安全增强型 Linux(SELinux)是在内核中提供的强制访问控制的安全机制。很多网络文章为了方便配置都建议大家禁用 SELinux 功能,我在这里到是建议大家在考虑关闭 SELinux 前应该三思。

SELinux 提供用户三种基本操作模式:

Enforcing:启用和执行机器上的 SELinux 策略(默认配置)

Permissive:在此种模式下,SELinux 不会强制执行系统上的安全策略,只会产生相应日志和警告。Permissive 模式在 SELinux 排错时经常会乃至。

Disabled:禁用 SELinux 功能

如果你想查看当前系统 SELinux 的状态可以使用:

sestatus

如果要从禁用状态启用 SELinux 可以使用:

setenforce enforcing

以上配置只对当前系统状态有用,重启会失效。要一劳永逸开关 SELinux 可以更改其配置文件/etc/selinux/config。

10. 移除KDE/GNOME桌面

不论你是运行 LAMP 的专属服务器还是其它类型服务器,KDE 或 GNOME 这样 X Window 桌面环境是没多大必要使用的,禁用之后可以提高服务器性能和增强安全性。使用如下命令即可完全卸载:

yum groupremove "X Window System"

11. 禁用IPv6

IPv6 目前还没有大规模普及,如果你不使用 IPv6 协议,可以在 /etc/sysconfig/network 配置文件中将其禁用。

NETWORKING_IPV6=no

IPV6INIT=no

12. 限制用户重复使用旧密码

很多用户习惯在强制定期更换密码时重复循环使用以前的密码,这对于服务器管理员来说是一种非常不好的习惯。因此建议大家限制用户重复使用旧密码,该功能可以通过 PAM 来实现。

RHEL/CentOS/Fedora:/etc/pam.d/system-auth

Ubuntu/Debian/Linux Mint:/etc/pam.d/common-password

在上述配置文件中的auth区块添加一行:

auth sufficient pam_unix.so likeauth nullok

在password区块添加一行:

password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5

配置好后,服务器会禁止使用最近 5 个被使用过的用户密码。

13. 配置密码过期策略

Linux 中,用户密码是被加密存储到/etc/shadow文件当中的,要配置密码过期的详细信息需要用到change命令。例如要查看某个账户的密码过期日期和时间,可以使用如下命令:

chage -l username

要更改密码过期策略可以使用类似如下命令:

chage -M 60 username

chage -M 60 -m 7 -W 7 username

-M 密码使用最长天数

-m 密码使用最短天数

-W 密码过期提示天数

14. 手动锁定或解锁账户

在不从系统中移除账户的情况下,对账户进行锁定和解锁是非常有用的一个安全手段。需要锁定一个账户时,可以使用如下命令:

passwd -l accountname

账户锁定同样适用于 root 账户,当某账户被锁定时会增加 (!) 字串,账户解锁时移除 (!) 字串。需要解锁时使用如下命令:

passwd -u accountname

15. 强制使用强密码

弱密码或用生日密码之类的密码太容易被字典和社会工程学攻破了,所以建议大家打开强密码要求。Linux 中的强密码要求还是使用 PAM 模块,只需编辑/etc/pam.d/system-auth文件:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. 启用Iptables

强烈建议大家使用 Iptables 来保护 Linux 服务器安全,Iptables 可以在不同的链上配置不同的规则来处理数据包。

17. 在Inittab中禁用Ctrl+Alt+Delete

大多数 Linux 发行版中按下「Ctrl+Alt+Delete」时都会重启系统,对于 Linux 生产服务器来说,这几乎是一个白痴设计。如果你希望关闭这个默认重启功能,可以将/etc/inittab配置文件中的如下两千注释掉:

# Trap CTRL-ALT-DELETE

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. 查看空密码账户

如果系统中存在有权限的空密码账户,就相当于开了一扇门。所以建议大家仔细清查一下:

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. 忽略ICMP或广播请求

要忽略 ICMP 或广播请求我们可以编辑/etc/sysctl.conf配置文件:

net.ipv4.icmp_echo_ignore_all = 1

net.ipv4.icmp_echo_ignore_broadcasts = 1

配置文件改好之后使用如下命令载入生效:

sysctl –p

20. 定期审查日志

建议大家将日志文件进行专门的集中存放和处理,这样可以比较有效避免入侵者对日志进行篡改,下面是 Linux 常见的默认日志路径:

/var/log/message – 系统日志或当前活动日志

/var/log/auth.log – 验证日志

/var/log/kern.log – 内核日志

/var/log/cron.log – 任务计划日志

/var/log/maillog – 邮件服务器日志

/var/log/boot.log – 系统启动日志

/var/log/mysqld.log – MySQL 服务器日志

/var/log/secure – 包含验证和授权方面信息

/var/log/utmp或/var/log/wtmp – 登录记录文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阴阳师师徒系统不同服务器,阴阳师体服师徒系统未收录改为随机SSR

昨天下午,受到很多争议的体服“师徒系统”更新啦!新版的“师徒系统”修改了徒弟的条件,总的来说能剔除压级大佬,并且之前奖励未收录SSR降低为随机SSR式神,难怪很多阴阳师都说:“大快人心!”的确…

Mysql union联合查询_Mysql联合查询union和union all的使用介绍

一、UNION和UNION ALL的作用和语法UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同.SQL UNION…

ios 查看同文件名_实战恢复cisco 2950交换机的IOS

本来想用两台思科交换机做实验的,可是通过console口进入其中一台交换机后却发现这个台交换机的IOS文件丢失了。本来正常进入交换机后应该是首先进入到用户模式的,而且提示符应该是“>”,而现在提示符却成了“:”,如…

repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...

在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID。一般有序自增主键的ID,极易被爬虫抓取数据,…

bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...

实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它。下面我们尝试一下自己实现一致性哈希算法。一. 简述一致性哈希算法这里不详细介绍一致性哈希算法的起源了,网…

系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!

一年只考一次的系统架构设计师7月7日通关指南开课系统架构设计师考试,是2009年11月计算机资格考试新增专业,这个级别属于高级资格考试。与该考试同级别的还有系统分析师、信息系统项目管理师、系统规划与管理师以及网络规划设计师。系统架构设计师每年考…

pythonhelloworld实例_Python基于Tkinter的HelloWorld入门实例

本文实例讲述了Python基于Tkinter的HelloWorld入门实例。分享给大家供大家参考。具体分析如下:初学Python,打算做几个Tkinter的应用来提高。刚学的HelloWorld,秀一下。我用Python3.2的,Windows版本的。源代码如下: #导…

tensorflow提取mel谱特征_【脑电信号分类】脑电信号提取PSD功率谱密度特征

点击上面"脑机接口社区"关注我们更多技术干货第一时间送达本文是由CSDN用户[frostime]授权分享。主要介绍了脑电信号提取PSD功率谱密度特征,包括:功率谱密度理论基础、matlab中PSD函数的使用介绍以及实验示例。感谢 frostime!1. 序…

从mysql中取出代理ip_GitHub - lican09/IPProxyTool: 抓取大量免费代理 ip,提取有效 ip 使用...

IPProxyTool使用 scrapy 爬虫抓取代理网站,获取大量的免费代理 ip。过滤出所有可用的 ip,存入数据库以备使用。可以访问我的个人站点,查看我的更多有趣项目 awolfly9个人项目欢迎加微信吐槽如果在使用中有任何疑问,或者项目中有任…

docker卸载 windows版本_DevOps系列 006 - Docker安装

这是DevOps系列的第六节,我们开始安装DockerDebian 上安装可以基于最新debian10的发行版,我现在还用着debian9,不过随后,我会发出Windows / macOs / Ubuntu的参考。安装如果您已经是root用户,则无需使用sudo1、卸载任何…

tab vue 竖排_vue 实现tab切换保持数据状态

页面做tab切换,由于组件每一次切换都会重新实例化组件,我们想要页面不论怎么切换都仍然保持tab里面的内容不会刷新,减少页面重新渲染以及减少请求实现方法:使用包裹组件 列表页面跳转详情 ,列表页面保持上一次操作状态…

multisim连接MySQL_首次使用Multisim软件进行电路仿真设计

第一次接触使用Multisim进行电路仿真设计,通过使用这款软件,从中也学习到了很多东西,在这里想简单介绍一下这款软件的最主要也是最重要的功能和特点。创建电路,必定要放置元器件,这就需要用到元器件工具栏,…

mysql到pg怎么高效_干货 | Debezium实现Mysql到Elasticsearch高效实时同步(示例代码)

题记来自Elasticsearch中文社区的问题——MySQL中表无唯一递增字段,也无唯一递增时间字段,该怎么使用logstash实现MySQL实时增量导数据到es中?logstash和kafka_connector都仅支持基于自增id或者时间戳更新的方式增量同步数据。回到问题本身&a…

java thread safe_Java 线程安全 Thread-Safety

在 Java 的线程安全是老生常谈的问题。经常是各种写法说法一大堆,感觉很多的来源都是在面试的时候,很多考官都喜欢问线程安全的问题。起源这个问题的起源就是 Java 是支持多线程的。如果对进程和线程是什么不太清楚的话,可以恶补下大学课程《…

java socket调用接口_Java中socket接口调用

最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方。在贴代码之前,还是要了解一下关于socket的基础知识。Socket的基本概念1.建立连接当需要建立网络连接时,必须…

protobuf java 编译_Maven项目中,编译proto文件成Java类

新建Maven项目新建一个 Maven 项目:pom定义了最小的maven2元素,即:groupId,artifactId,version。 groupId:项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如org.codehaus.mojo生成的相对路径为&#xff1a…

python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...

https://wenku.baidu.com/view/dc356290af1ffc4fff47ac0d.html?rec_flagdefault&sxts1538121950212利用灰色关联分析的步骤是:1.根据分析目的确定分析指标体系,收集分析数据。设n个数据序列形成如下矩阵:其中m为指标的个数&a…

aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍

从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持,称为Java AIO(asynchronous IO)。因为AIO的实…

java请假审批怎么实现_java实现请假时间判断

笔记:需求分析:每周上班6天夏季早上8:30-12:00下午14:00-17:30冬季早上8:30-12:00下午14:30-18:00请假最低为半天按照上午8:00-12:00,下午14:00-18:00计算,包括了夏季和冬季时间,规律分布如下public String getDouble(HttpServletRequest request) throws ParseException {//参…

java原子整数_多线程(四、原子类-AtomicInteger)

案例10个线程并发累加一个整数,每个线程累加1000,保证线程安全Unsafe类,来源于sun.misc包。该类封装了许多类似指针操作,可以直接进行内存管理、操纵对象、阻塞/唤醒线程等操作。package com.jane;import java.util.ArrayList;imp…