从内核到网络,40个Linux服务器安全加固小技巧(上)
bigegpt 2024-10-12 07:07 8 浏览
大多数人认为Linux是安全的,其实这是一个错误的假设。想象一下,你的笔记本电脑在没有安全加固的情况下被盗。小偷可能会认为你的用户名是“root”而你的密码是“toor”,因为这是Kali设置的默认密码,很多人一直使用从未修改。
每个Linux系统都将受益于更高的安全性,特别是如果它包含敏感数据。下面跟大家分享40个实用的Linux服务器安全加固的小技巧,希望可以帮助大家更好的保护咱们的Linux服务器安全。
1. 加密Linux服务器的数据通信
通过网络传输的所有数据都可以被监控到。尽可能使用密码或使用密钥/证书加密传输数据。
- 使用scp,ssh,rsync或sftp进行文件传输。你还可以使用一些特殊的工具如:sshfs和fuse,安装远程服务器文件系统或自己的主目录。
- GnuPG支持对数据、通信进行加密和签名,具有通用密钥管理系统以及各种公钥目录的访问模块。
- 使用OpenVPN,经济高效的轻量级SSL VPN。
- 配置和安装 Lighttpd SSL(安全服务器层)Https。
- 配置和安装Apache SSL(安全服务器层)Https(mod_ssl)。
2.避免在Linux上使用FTP、Telnet和Rlogin / Rsh服务
在大多数网络配置下,使用数据包嗅探器的同一网络上的任何人都可以捕获用户名,密码,FTP / telnet / rsh命令和传输的文件。
常见解决方案:
使用OpenSSH,SFTP或FTPS(FTP over SSL),将FTP或TLS加密添加到FTP。输入以下yum命令删除NIS、rsh和其他过时服务:
# yum erase xinetd ypserv tftp-server telnet-server rsh-server
3.最小化程序包达到减少Linux中的漏洞
避免安装不必要的软件从而避免软件漏洞。使用RPM包管理器(如yum或apt-get和/或dpkg)查看系统上所有已安装的软件包集。删除所有不需要的包。
# yum list installed # yum list packageName # yum remove packageName # dpkg --list # dpkg --info packageName # apt-get remove packageName
4.保证每个系统或VM实例单独一个网络服务
在单独的服务器或VM实例上运行不同的网络服务。这限制了可能受到危害的其他服务的数量。例如:如果黑客能够成功利用Apache等软件流,他将获得对整个服务器的访问权限,包括其他服务,如MySQL、PgSQL、电子邮件服务器等。
5.保持使的Linux内核和软件是最新的
应用安全补丁是维护Linux服务器的重要部分。在补丁发布后尽快完成安全的更新。
使用RPM包管理器(如yum和/或apt-get和/或dpkg)来启动所有安全更新。
# yum update 或者 # apt-get update && apt-get upgrade
6.使用Linux安全扩展
Linux附带了各种各样的安全补丁,用于防止错误配置或受损程序。条件允许,可以使用SELinux或者其他Linux安全扩展来强制限制网络和其他程序。
7.SELinux
SELinux提供灵活的强制访问控制(MAC),运行MAC内核可保护系统免受可能损坏或破坏系统的恶意应用程序的影响。
8.Linux root 帐户使用强密码策略
使用useradd / usermod命令可以创建和维护root 帐户。确保拥有强密码策略。例如:一个强密码包括至少8个字符长,以及字母,数字,特殊字符,上下字母等混合。
9.为Linux用户设置密码的时效以提高安全性
chage命令显示密码到期详细信息以及上次密码更改日期。系统使用这些详细信息来确定用户何时必须更改其密码。
禁用密码时效
# chage -M 99999 userName
获取密码到期信息
# chage -l userName
更改任何用户的密码时效
#chage -M 60 -m 7 -W 7 userName
10.限制在Linux上使用旧密码
你可以阻止所有用户在Linux下使用或重复使用相同的旧密码。在pam_unix模块中的参数可以记录不能再用的旧密码的数量。
11.登录失败后锁定root帐户
在Linux下,可以使用faillog命令显示faillog记录、设置登录失败限制,可用于维护故障计数器和限制。
查看失败的登录
faillog
在登录失败后解锁帐户
faillog -r -u userName
注意:可以使用passwd命令锁定和解锁帐户:
# lock account passwd -l userName # unlocak account passwd -u userName
12.验证帐户是否存在空密码
输入以下命令
# awk -F: '($2 == "") {print}' /etc/shadow
锁定所有空密码帐户:
# passwd -l accountName
13.确认除ROOT 之外的用户,UID值 为0
确保只有root帐户具有UID 0且具有访问系统的完全权限。
输入以下命令以显示UID设置为0的所有帐户:
# awk -F: '($3 == "0") {print}' /etc/passwd
14.禁用root登录
不要直接以root用户身份登录。在需要时使用sudo执行根级别命令。sudo极大地增强了系统的安全性,同时提供简单的审计和跟踪功能。
15.物理服务器安全性
保护Linux服务器物理控制台访问。配置BIOS并禁用从外部设备(如DVD / CD / USB笔)启动。设置BIOS和grub 引导加载程序密码来保护这些设置。
16.禁用不需要的Linux服务
禁用所有不必要的服务和守护程序。从系统启动中删除所有不需要的服务。
输入以下命令以列出在运行级别#3启动时启动的所有服务:
# chkconfig --list | grep '3:on'
禁用服务,输入:
# service serviceName stop # chkconfig serviceName off
17.查找侦听网络端口
使用netstat命令列出所有打开的端口和关联的程序:
netstat -tulpn
使用chkconfig命令停止所有不需要的网络服务。
18.删除X Window系统(X11)
不要在基于Linux的专用邮件和Apache / Nginx Web服务器上运行X11。可以禁用和删除X Windows以提高服务器安全性和性能。
编辑/ etc / inittab 并将运行级别设置为3。最后,删除X Windows系统,输入:
在CentOS 7 / RHEL 7服务器上使用以下命令
# yum groupremove "X Window System" # yum group remove "GNOME Desktop" # yum group remove "KDE Plasma Workspaces" # yum group remove "Server with GUI" # yum group remove "MATE Desktop"
19.在Linux上配置基于防火墙的Iptables和TCPWrappers
强烈建议启用Linux内核防火墙以保护对服务器的未授权访问,过滤流量并仅允许必要的流量。使用TCPWrappers,基于主机的网络ACL系统来过滤对Internet的网络访问。
20.Linux内核/etc/sysctl.conf优化
/etc/sysctl.conf文件用于配置在运行时的内核参数,在Linux启动时从/etc/sysctl.conf读取并应用设置。
示例/etc/sysctl.conf:
# Turn on execshield kernel.exec-shield=1 kernel.randomize_va_space=1 # Enable IP spoofing protection net.ipv4.conf.all.rp_filter=1 # Disable IP source routing net.ipv4.conf.all.accept_source_route=0 # Ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.icmp_ignore_bogus_error_messages=1 # Make sure spoofed packets get logged net.ipv4.conf.all.log_martians = 1
内容译自:https://www.cyberciti.biz/tips/linux-security.html
后20条请见下期详解~
相关推荐
- 或者这些Joplin插件也可以帮助你的笔记应用再一次强大
-
写在前面距离上次分享《搭建私有全平台多端同步笔记,群晖NAS自建JoplinServer服务》已过去一段时间,大家是否开始使用起来了呢?如果你和我一样已经使用过Joplin有一段时间了,那或许你也会...
- Three.JS教程4 threejs中的辅助类
-
一、辅助类简介Three.js提供了一些辅助类(Helpers)以帮助我们更容易地调试、可视化场景中的元素。ArrowHelepr:创建箭头辅助器;AxisHelper:创建坐标轴辅助器;BoxH...
- 第2章 还记得点、线、面吗(二)(第二章还能敲钟吗)
-
glbgltf模型(webvrmodel)-gltf模型下载定制,glb模型下载定制,三维项目电商网站在线三维展示,usdz格式,vr模型网,网页VR模型下载,三维模型下载,webgl网页模型下载我...
- 如何检查Linux系统硬件信息?从CPU到显卡,一网打尽!
-
你可能会问:“我为什么要关心硬件信息?”答案很简单:硬件是Linux系统的根基,了解它可以帮你解决很多实际问题。比如:性能调优:知道CPU核心数和内存大小,才能更好地调整程序运行参数。故障排查:系统卡...
- SpriteJS:图形库造轮子的那些事儿
-
从2017年到2020年,我花了大约4年的时间,从零到一,实现了一个可切换WebGL和Canvas2D渲染的,跨平台支持浏览器、SSR、小程序,基于DOM结构和支持响应式的,高...
- 平时积累的FPGA知识点(6)(fpga经典应用100例)
-
平时在FPGA群聊等积累的FPGA知识点,第六期:1万兆网接口,发三十万包,会出现掉几包的情况,为什么?原因:没做时钟约束,万兆网接口的实现,本质上都是高速serdes,用IP的话,IP会自带约束。...
- 芯片逻辑调度框架设计 都需要那些那些软件工具
-
设计芯片逻辑调度框架通常需要使用以下软件工具:1.逻辑设计工具:例如Vivado、Quartus、SynopsysDesignCompiler等,用于设计和实现逻辑电路。2.仿真工具:例如Mo...
- ZYNQ与DSP之间EMIF16通信(正点原子领航者zynq之fpga开发指南v3)
-
本文主要介绍说明XQ6657Z35-EVM高速数据处理评估板ZYNQ与DSP之间EMIF16通信的功能、使用步骤以及各个例程的运行效果。[基于TIKeyStone架构C6000系列TMS320C6...
- 好课推荐:从零开始大战FPGA(从零开始的冒险4399)
-
从零开始大战FPGA引子:本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“...
- 业界第一个真正意义上开源100 Gbps NIC Corundum介绍
-
来源:内容由「网络交换FPGA」编译自「FCCM2020」,谢谢。FCCM2020在5月4日开始线上举行,对外免费。我们有幸聆听了其中一个有关100G开源NIC的介绍,我们对该文章进行了翻译,并对其中...
- 高层次综合:解锁FPGA广阔应用的最后一块拼图
-
我们为什么需要高层次综合高层次综合(High-levelSynthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++...
- Xilinx文档编号及其内容索引(部分)
-
Xilinx文档的数量非常多。即使全职从事FPGA相关工作,没有几年时间不可能对器件特性、应用、注意事项等等有较为全面的了解。本文记录了我自使用Xilinx系列FPGA以来或精读、或翻阅、或查询过的文...
- Xilinx Vivado联合Modelsim软件仿真
-
引言:Xilinx公司Vivado开发软件自带仿真工具,可以实现一般性能的FPGA软件仿真测试,其测试执行效率以及性能都不如第三方专用仿真软件Modelsim强。本文我们介绍下如何进行Vivado20...
- 体育动画直播是怎么做出来的?从数据到虚拟赛场的科技魔法!
-
你是否见过这样的比赛直播?没有真实球员,却能看梅西带球突破?足球比赛变成动画版,但数据100%真实?电竞比赛用虚拟形象直播,选手操作实时同步?这就是体育动画直播——一种融合实时数据、游戏引擎和AI的...
- Dialogue between CPC and political parties of neighboring countries held in Beijing
-
BEIJING,May26(Xinhua)--TheCommunistPartyofChina(CPC)inDialoguewithPoliticalPartiesof...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)