线上Linux服务器的优化设置、系统安全与网络安全策略

一、Linux服务器的优化设置

线上Linux的优化配置
序号基础优化配置内容说明
1最小化安装系统【仅安装需要的,按需安装、不用不装】,必须安装的有基本开发环境、基本网络包、基本应用包。
2ssh登录策略优化        

Linux服务器上的ssh服务端配置文件是【/etc/ssh/sshd_config】,在修改该文件前,必须备份此文件,以防配置出错或误删。备份命令是【cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak】

《1》修改SSH的默认连接22端口(将端口修改在1万以上的端口号,可有效避免扫描和攻击)【Port 22222】。;

《2》不使用DNS解析客户端主机名,可提高SSH的连接速度【UseDNS no】。

《3》关闭GSSAPI验证,可提高ssh连接速度【GSSAPIAuthentication no】。

《4》禁止root账号登陆【PermitRootLogin no】。

《5》限制身份验证的最大尝试次数【MaxAuthTries 3】。

《6》显示最后一次登录的日期和时间【PrintLastLog yes】。

《7》禁用空密码【PermitEmptyPasswords no】。

《8》禁用基于受信任主机的无密码登录【IgnoreRhosts yes】。

《9》禁用基于已知主机的访问(即每次连接都需要用户和密码)【IgnoreUserKnownHosts yes】。

《10》设置所有普通用户可使用密码【PasswordAuthentication yes】(如禁用则改为no)

#sshd服务的配置文件修改完成后重启改服务让修改的配置生效
systemctl restart sshd#查看所有的tcp连接信息
netstat -atnlp
3禁用SELinux

SELinux的配置文件路径是【/etc/selinux/config】;SELinux有三种状态:

《1》enforcing 开启状态;

《2》permissive 提醒的状态;

《3》disabled 关闭禁用状态;

#方法一:临时禁用SELinux命令
setenforce  0#方法二:永久禁用SELinux命令(修改SELINUX=disabled)
/etc/selinux/config
grubby --update-kernel ALL --args selinux=0
4更换yum源为国内源

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

华为开源镜像站_软件开发服务_华为云

腾讯软件源

Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式

5自动更新服务器时间
#查看当前系统的版本命令
more /etc/os-release#阿里云的标准时间服务器地址
ntp1.aliyun.com
ntp2.aliyun.com

一、在Centos7版本设置NTP服务器

#1-下载阿里云中centos7的镜像并生成缓存
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.
com/repo/Centos-7.repoyum makecache#2-在Centos7及其低版本安装NTP服务
yum install -y ntp ntpdate#3-手动同步ntp时间
/usr/sbin/ntpdate ntp1.aliyun.com >> /var/log/ntp.log 2>&1;/sbin/hwclock -w#4-设置定时任务同步ntp1.aliyun.com服务器时间(每5分钟同步一次)
crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /var/log/ntp.log 2>&1; /sbin/hwclock -w

二、在Centos8及其更高版本设置NTP服务器

#1-给Almalinux9设置国内的阿里云源并生成缓存sed -e 's|^mirrorlist=|#mirrorlist=|g' \-e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \-i.bak \/etc/yum.repos.d/almalinux*.repodnf makecache  #2-安装时间服务器包(Centos8及其更高版本不再支持ntp服务,推荐使用chrony)
yum install -y chrony#3-可以修改chrony配置文件的默认时间服务器地址(如修改为ntp1.aliyun.com)
pool ntp1.aliyun.com iburst#4-启动chronyd服务并设置开机自启
systemctl start chronyd
systemctl enable chronyd#5-查看时间同步是否正常
chronyc sources -v #6-立即与标准时间服务器同步时间
systemctl restart chronyd#查看当前时间
date
#修改时间为指定日期
date -s "2022-02-22"
date -s "16:33:22"
date -s "2023-06-26 15:23:14"
6

重要文件加锁

#查看文件是否加锁(没有锁的话查询后的结果前面都没有内容)
lsattr /etc/sudoers#1-给指定文件加锁(不能修改和添加内容,只能读取)【chattr +i 文件】
chattr +i /etc/sudoers
#1.1、给指定文件解锁
chattr -i /etc/sudoers#2-给指定文件加锁(不能修改;但可添加内容和读取)【chattr +a 文件】
chattr +a /etc/sudoers
#2.1-给指定文件解锁
chattr -a /etc/sudoers

Linux中需要加锁的四个重要文件进行加锁

#1-Linux系统中给普通用户提权的配置文件
chattr +i /etc/sudoers#2-Linux系统所有用户对应的密码文件
chattr +i /etc/shadow#3-Linux系统用户对应的属性信息文件
chattr +i /etc/passwd#4-Linux系统的启动引导配置文件
chattr +i /etc/grub2.conf
7系统资源参数优化
#查看Linux系统的资源配置
ulimit -a#当前终端临时生效的系统资源配置【终端退出后就恢复了】(如修改 open files 的数量为65535)
ulimit -n 65535#永久设置Linux系统的资源配置
vi /etc/security/limits.conf
#设置所有用户可使用的最大线程数目为3666
* soft nproc 3666
* hard nproc 3666

二、Linux系统安全与网络安全策略

        常见的攻击类型有:口令暴力破解攻击、拒绝服务攻击(DDOS)、应用程序漏洞攻击(挂马、SQL注入)。

 2.1、Linux系统登录安全——复杂密码+普通用户SSH远程登录

Linux系统必学的基础操作命令——快速上手Linux(下)https://coffeemilk.blog.csdn.net/article/details/149037758

        在使用useradd创建用户后,再使用passwd命令设置用户密码时,需要设置复杂密码(即:密码数目大于等于8,且至少有字母数字混合)【为了保证能够创建复杂的密码我们需要对Linux系统中配置密码复杂度的配置文件进行配置】。

注意:在对密码复杂度配置文件、密码有效期配置文件修改前需要先备份一下!!!

#备份密码复杂度配置文件
cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf.bak#备份密码有效期配置文件
cp -p /etc/login.defs //etc/login.defs.bak
Linux系统密码复杂度、密码有效期最佳配置
Linux系统中的密码复杂度配置文件是【/etc/security/pwquality.conf】
序号密码复杂度配置内容说明
1minclass=3

用户密码必须包含大写字母、小写字母、数字、特殊字符中的任意3类

【建议设置为3或4】

2minlen = 8

用户密码长度(这里表示密码长度至少为8位)

【建议设置8及其以上的位数】

Linux系统中的密码有效期配置文件是【/etc/login.defs】

1PASS_MAX_DAYS   90

用户密码的最长有效期(这里表示用户密码最长的有效期是90天,用户每隔90天就必须更改一次密码)

【建议设置为90】

2PASS_MIN_DAYS   7

用户密码修改的最小间隔(这里表示用户密码每7天才能修改一次)

【建议设置为7】

3PASS_WARN_AGE   7

用户密码过期提前警告天数(这里表示用户密码过期前7天开始警告用户)

【建议设置为7】

用户登录系统的日志文件是【/var/log/secure】

#查看最近10条Linux用户登录日志命令
tail -f /var/log/secure#查看最近100条Linux用户登录日志命令tail -n 100 -f /var/log/secure

 2.2、Linux系统登录安全——密钥认证方式远程SSH登录

  2.2.1、设置root用户只能以密钥方式远程登录操作步骤

#1-将sshd的配置文件【/etc/ssh/sshd_config】端口设置为22222、设置root用户必须使用密钥登录不能用密码登录
Port 22222
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys#2-还需要将sshd的另外一个文件【/etc/ssh/sshd_config.d/01-permitrootlogin.conf】允许root登录的配置注释(如下的配置表示可以让root用户使用密码登录且会覆盖/etc/ssh/sshd_config中的配置)
PermitRootLogin yes#3-在Linux服务器上生成公私钥文件(生成一对4096位的RSA密码且带注释coffeemilk@192.168.1.9和密码短语ck)
ssh-keygen -t rsa -b 4096 -C "coffeemilk@192.168.1.9" -N "ck"#4-进入生成的公私钥路径查看
cd /root/.ssh#5-复制一份公钥并重命名为【authorized_keys】
cp -p id_rsa.pub authorized_keys#6-给复制的公钥【authorized_keys】修改权限为只有创建者可读写,其他人都没有任何权限
chmod 600 authorized_keys#7-将生成的私钥【id_rsa】下载到本机(注意:若没有sz命令需要先安装lrzsz命令)
yum install lrzsz -y
sz id_rsa#8-删除生成的初始公私钥密钥对(只在服务器上保留公钥【authorized_keys】)
rm -rf id*#9-重启sshd服务
systemctl restart sshd

ssh-keygen常用选项说明
序号keygen常用选项说明
1-b指定密钥的位大小(如:2048、3072、4096、...)
2-t

指定密钥的类型(优先使用ed25519、否则就是rsa);共有如下四种:

《1》dsa 不安全,已经不再使用;

《2》rsa 目前兼容性最好,且使用广泛,默认生成的就是2048位的rsa密钥对;建议生成rsa时设置最好是大于等于3072位。

《3》ecdsa 政治与技术原因不推荐使用。

《4》ed25519 目前最安全,加解密速度最快的密钥类型,且key的长度比rsa小很多,优先推荐使用;唯一的缺点就是旧版本的ssh可能不支持。

3-C给密钥添加一个注释说明信息(通常用于判断密钥的用途或所属用户)
4-f指定生成的密钥文件的文件名称
5-N为密钥设置密码短语,提高密钥的安全性
6-p更改私钥的密码短语
7-q安静模式,不输出任何信息
8-m指定私钥导出格式
9-i读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥
#密钥生成示例1(默认生成2048位的rsa密钥对)
ssh-keygen#密钥生成示例2(生成4096位不带密码短语的rsa密钥对)
#注意:这里的密钥注释通常是邮箱名称也可以自行设置,只要能够区分出来就行
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -N ""#密钥生成示例3(生成ed25519类型的密钥对)
#注意:这里的密钥注释通常是邮箱名称也可以自行设置,只要能够区分出来就行
ssh-keygen -t ed25519 -C "your_email@example.com"#更改私钥密码短语(系统会提示先输入旧密码,在输入新密码)
ssh-keygen -p -f /root/.ssh/id_rsa#将公钥添加到远程服务器(如远程Linux服务器的SSH端口不是默认的22则需要添加【-p 端口】)
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 端口号 user@remote-hostIP
ssh-copy-id /root/.ssh/id_rsa.pub -p 端口号 user@remote-hostIP

注意事项:

《1》密钥安全性:密钥对的安全性非常高,但如果你的私钥泄露到其他人手中,其他人就可以作为你的身份登录到任何使用该密钥的系统(请保护好你的私钥,并为其设置一个强密码短语)。

《2》权限:确保【/root/.ssh】目录的权限是(只有所有者拥有读写执行700权限)、该目录下的私钥和公钥权限都是(只有所有者拥有读写权限600);且私钥下载到本地后,服务器上的私钥必须删除。

《3》密钥类型和长度:建议优先使用ed25519密钥类型(因为它更短更安全);否则就选择支持和使用最广泛的rsa密钥类型(但是密rsa密钥的长度必须大于等于3072,最好是4096)。

《4》密钥备份:备份好你的密钥对,并做好备注说明。

《5》定期更换密钥对:定期更换密钥对可以提高安全性(特别是自己的SSH密钥对可能被泄露的情况下,应该立即生成新的密钥对,并更新所有使用该旧密钥对的服务器)。

  2.2.2、设置普通用户只能以密钥方式远程登录操作步骤

        《1》如果需要给普通用户设置密钥对登录则切换到普通用户(或直接使用普通用户登录到服务器)执行【ssh-keygen】命令生成密钥,并把公钥名称修改为【authorized_keys】且该公钥的权限设置为只有所有者可读写600【chmod 600 authorized_keys 】,然后将生成的私钥下载到本地保存,私钥在本地保存后必须将服务器上的私钥删除;

#1-切换到普通用户(比如切换到coffeemilk用户)
su - coffeemilk#2-生成一个类型为ed25519类型的密钥
ssh-keygen -t ed25519 -C "ck@192.168.1.9"#3-进入普通用户密钥对的路径(每个用户的路径是/home目录下的用户名称文件夹下)
cd /home/coffeemilk/.ssh/#4-修改公钥名称为【authorized_keys】
mv id_ed25519.pub authorized_keys#5-将公钥文件【authorized_keys】的权限修改为只有所有者具备读写权限600
chmod 600 authorized_keys #6-将私钥文件【id_ed25519】下载到本机保存(注意:若没有sz命令需要先安装lrzsz命令)
yum install lrzsz -y
sz id_ed25519#7-私钥文件保存到本地后删除服务器上生成的私钥文件【id_ed25519】
rm -rf id_ed25519

        《2》若需要强制让所有用户都使用密钥登录不能使用密码登录,则使用root用户登录服务器修改sshd的配置文件(/etc/ssh/sshd_config)将【PasswordAuthentication内容的值设置为no】且保存。注意:在任何时候修改sshd配置文件的时候都需要先对该文件备份!!!

#1-使用root用户修改sshd的配置文件(将PasswordAuthentication设置为no)
vi /etc/ssh/sshd_config#2-修改完成保存后退出查看sshd的配置文件信息
cat /etc/ssh/sshd_config#3-确认修改的sshd配置无误后重启sshd服务
systemctl restart sshd

        《3》在服务器上重启sshd服务【systemctl restart sshd】。

 2.3、Linux网络安全——端口与服务安全

        在Linux系统中,一共定义了65536个可用的端口,这些端口又分为两个部分,以1024作为分割点:

        《1》【只有root用户才能启用的端口】(0-1023端口都需要以root身份才能启用)如:20、21端口是预留给ftp服务的;23端口是预留给telnet服务的;25端口是预留给mail服务的;80、443端口是预留给www服务的。

        《2》【客户端可使用的端口】(1024-65535端口可供客户端使用)这些端口都是软件随机分配的,这些大于等于1024的端口启用不受root用户控制;如:mysql服务默认使用3306端口这个端口就由mysql用户启用、sqlserver数据库默认监听端口是1433这个端口就由sqlserver用户启用、redis默认使用6379端口这个端口就由redis用户启用。

        Linux中关于端口的默认使用与服务对应的列表文件是【/etc/services】。

#查看Linux中默认的端口与服务对应列表
more /etc/services#查看Linux中指定的端口对应的服务列表
cat /etc/services | grep 3306
cat /etc/services | grep 1433
cat /etc/services | grep 6379

        注意:Linux系统中的端口启用后,一般不用给外部放开访问(特别是涉及到数据库的端口);而常见开放给外部访问的端口有(【25对应的mail服务端口】、【80、443对应的www服务端口】)开放端口给外部访问是可以通过Linux自带的防火墙或者硬件防火墙操作。

三、Linux系统自身的常用安全策略

Linux系统自身的常用安全策略
类型操作说明
软件安全yum update glibc定期对Linux服务器上的软件升级
yum update openssl
禁止ping操作
#查看当前Linux系统的ping命令是否被禁用(结果显示1表示禁用)
cat /proc/sys/net/ipv4/icmp_echo_ignore_all#禁用ping命令
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

注意:Linux系统设置禁用ping操作后该服务器就无法ping通了。

云主机开启

安全组

安全组是云主机的网络安全防护工具,建议开启,只开启必要的端口和服务(如:80、443端口,但是如22这类敏感端口建议设置白名单防护)

(云主机的安全主默认是关闭的)

最后就是对于各个应用或网站需要重点排查SQL注入漏洞和日志审查防止被挂马。

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

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

相关文章

基于人眼视觉特性的相关图像增强基础知识介绍

目录 1. 传统的灰度级动态范围优化配置方法 2.基于视觉特性的灰度级动态范围调整优化 1. 传统的灰度级动态范围优化配置方法 传统的灰度级动态范围调整方法主要包括线性动态范围调整及非线性动态 范围调整。线性动态范围调整是最简单的灰度级动态范围调整方法,观察…

Selenium使用超全指南

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QT…

Go通道操作全解析:从基础到高并发模式

一、channel类型 Go 语言中的通道(channel)是一种特殊的类型。它类似于传送带或队列,遵循先进先出(FIFO)原则,确保数据收发顺序的一致性。每个通道都是特定类型的导管,因此在声明时必须指定其元素类型。 channel是一种类型, 一种引用类型。 声明通道类型的格式如下:…

Linux网络--1、网络基础

目录 一、网络发展 二、理解分层 2.1OSI七层模型 2.2TCP/IP分层模型 2.3分层的好处 三、认识协议 3.1初步认识 3.2了解指定组织 3.3具体协议理解 3.3.1是什么 3.3.2为什么 3.3.3与OS的关系 3.4总结 四、网络传输流程 4.1局域网网络传输 4.1.1通信过程 4.1.2概念解析 4.2跨网…

前端视角下关于 WebSocket 的简单理解

参考 RFC 6455: The WebSocket Protocol WebSocket 协议基础 协议本质:在单个 TCP 连接上提供全双工通信通道的协议核心优势: 双向实时通信(服务器主动推送)低延迟(相比 HTTP 轮询)高效数据传输&#xff0…

自动化一键部署 LNMP 环境

第一步:准备环境 & 准备脚本文件1. 你在 CentOS 7 的服务器/虚拟机里打开终端,确认你有 root 权限或者能用 sudo。输入下面命令确认你的系统版本:cat /etc/centos-release你应该看到类似:CentOS Linux release 7.9.2009 (Core…

react之React.cloneElement()

react提供的这个方法克隆组件的方法,可能我们在平常的开发中用的很少,主要可能是我们并不知道或者并不了解这个方法。因为我在之前react的children文章中用到过,所以我就进行了一系列的测试,发现真的非常的好用。我们同样使用一些…

学习Java的Day27

今天学习的主要内容是在IntelliJ IDEA开发环境中,通过部署Tomcat服务器并连接MySQL数据库,实现了一个完整的留言板系统。这个项目涵盖了前后端开发的全流程,具体包括以下关键环节:开发环境搭建使用IntelliJ IDEA Ultimate版&#…

【计算机网络 | 第3篇】物理媒介

文章目录物理媒介介绍与物理媒体的分类🥝成本考量引导型传输媒体🍋引导型传输媒体:双绞线🍋‍🟩双绞线类别双绞线的发展历程双绞线的物理限制引导型传输媒体:同轴电缆🍋‍🟩结构组成…

golang的切片

切片 为什么需要切片 用于元素的个数不确定,所以无法通过数组的形式来进行统计。此时就需要切片 切片,也因此可以粗略地理解为动态数组数组的长度不能用变量来确定,这时候切片slice也就派上用场了 切片地基本介绍 切片的英文是slice切片是数组…

在labview中实现视频播放

这里分享一个迅雷的视频播放控件APlayer,非常的好用。具体操作步骤如下: 1.下载控件: 首先下载http://aplayer.open.xunlei.com/codecs.zip,将codecs文件解压后打开,按快捷键contrlA,随后contrlc复制里面所有的文件;…

ubuntu 22.04 使用yaml文件 修改静态ip

前提: 启动服务 sudo systemctl start systemd-networkd 设置开机自启 sudo systemctl enable systemd-networkd 检查状态(确保显示 active (running)) sudo systemctl status systemd-networkd 若想停止: 停止当前运行的服务 sud…

闸机控制系统从设计到实现全解析:第 4 篇:Redis 缓存与分布式锁实现

第 4 篇:Redis 缓存与分布式锁实现 一、Redis 在系统中的核心作用票证信息缓存:将高频访问的票证数据(如状态、有效期)缓存至 Redis,减少数据库查询,提升验证响应速度。分布式锁:在高并发场景下…

北京天津唐山廊坊沧州打捞日记

北京天津唐山廊坊沧州打捞日记 打捞搜蚯蚓疏通 北京:护城河畔的情谊打捞 清晨,北京的护城河在朝阳的映照下泛着微光。我接到一位年轻小伙的电话,声音中满是焦急。原来,他与女友在河边约会时,不小心将女友送他的定情玉佩…

全志刷机工具:PhoenixSuit-全志芯片处理器-刷机工具安装包及最详细使用教程指南

全志刷机工具:PhoenixSuit-全志芯片处理器刷机工具安装包及最详细使用教程指南,此文章主要是分享机顶盒、电视盒子,全志芯片盒子(其中包含全志处理器、全志芯片、全志CPU等等)的刷机工具、刷机工具安装教程以及如何使用…

浅谈 VM 桥接模式:让虚拟机像真实电脑一样接入网络

在虚拟化环境中,虚拟机(Virtual Machine, VM)与外部网络之间的通信方式有多种,比如 NAT 模式、Host-Only 模式、桥接模式(Bridged Networking) 等。其中,桥接模式是最接近“真实物理机”网络行为…

计算机视觉(1)-图像采集设备选型全景表(工业 + 医疗 + 车载)

图像采集设备选型全景表(工业 医疗 车载)一份面向工程师的“场景—设备—协议”速查表1 工业 & 医疗 & 通用场景应用场景主流设备形态接口 / 协议典型性能突出优势致命短板动态范围工业检测AOI / 量测 / 缺陷工业相机 采集卡Camera Link HSCo…

计算机视觉(3)深度学习模型部署平台技术选型与全栈实践指南

一、部署平台概述与分类 深度学习模型部署平台的分类需兼顾技术特性与应用场景的适配性,基于“技术定位-场景适配”双维度分类法,可将其划分为通用开源框架、云厂商服务及专用边缘工具三大类,各类别在设计目标、核心能力与场景覆盖上呈现显著…

Scratch编程:枪战游戏(附源码)

🎮 操作说明 W / A / S / D 或 方向键:移动 C:滑铲 空格键:取消滑铲 鼠标点击:开火 数字键 1 / 2 / 3 / 4:切换武器 G:快速使用道具 F:近战攻击 Q:瞄准 / 使用技能…

应急响应复现

一、前言:当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案…