当前位置: 首页 > news >正文

线上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.lryc.cn/news/611645.html

相关文章:

  • 移动商城平台适配:ZKmall开源商城鸿蒙 / 小程序端开发要点
  • django permission_classes = [AllowAny] 如何限制到具体接口
  • 时间轮算法
  • Java学习第一百一十一部分——Jenkins(二)
  • docker-compose快速部署启动file beat+ELK
  • Git 分支管理:从新开发分支迁移为主分支的完整指南
  • Agent安全机制:权限控制与风险防范
  • 商派小程序商城(小程序/官网/APP···)的范式跃迁与增长再想象
  • C语言基础_排序算法和二分法查找
  • GROUP BY与ORDER BY的索引优化方法
  • 脑洞大开——AI流程图如何改变思维?
  • 深入解析Java NIO在高并发场景下的性能优化实践指南
  • 企业网络安全中人工智能(AI)的影响
  • 使用MatterJs物理2D引擎实现重力和鼠标交互等功能,有点击事件(盒子堆叠效果)
  • HTML应用指南:利用GET请求获取全国OPPO官方授权体验店门店位置信息
  • nlp-词汇分析
  • easyExcel 读取有合并单元格数据
  • EasyExcel高效工具类:简化Excel导入导出,支持多Sheet与枚举转换
  • QT----QAxObject在子线程中调用,发现excel指针为空
  • Excel制作尖刀图,直观展示业绩涨跌
  • EXCEL-业绩、目标、达成、同比、环比一图呈现
  • 从“T+1”到“T+0”:基于SQL构建MES到数据仓库的数据采集通道
  • OpenGL VBO:顶点缓冲对象的深度解析
  • 点穴式优化:用DeepSeek精准识别关键节点的产品体验突破法
  • PostgreSQL报错“maximum number of prepared transactions reached”原因及高效解决方案解析
  • 推荐一款优质的开源博客与内容管理系统
  • Mac安装WebStorm
  • C++11实现线程池(2)固定线程池
  • Java Stream API 详解(Java 8+)
  • 云计算一阶段Ⅱ——12. SELinux 加固 Linux 安全