网络空间安全(43)Linux实战篇

一、系统配置安全

  1. BIOS安全设置

    • 设置BIOS密码:防止未授权用户修改BIOS设置。
    • 修改引导次序:禁止从软盘启动系统,减少潜在的启动攻击风险。
  2. 文件系统权限管理

    • 最小化SUID权限程序:SUID(Set User ID)程序以root身份运行,是潜在的安全漏洞。除必要的程序(如passwd)外,应限制SUID权限程序的数量。
    • NFS权限设置:如果使用NFS(网络文件系统)服务,确保/etc/exports文件具有最严格的存取权限设置,禁止root写权限,将文件系统挂载为只读。
  3. 关键文件保护

    • inetd.conf文件权限:确保/etc/inetd.conf文件的所有者是root,权限设置为600(仅root可读写)。
    • 防止信息泄露:在/etc/inetd.conf中配置telnet服务时,添加-h标志,避免显示操作系统和版本信息。
  4. 服务配置

    • 禁用不必要的服务:减少系统攻击面,只启用必需的服务。例如,如果不需要远程登录,可以禁用telnet、ftp等服务。
    • 配置TCP Wrappers:使用/etc/hosts.deny和/etc/hosts.allow文件,控制哪些IP地址可以访问特定服务。

二、用户与认证安全

  1. 用户口令管理

    • 强密码策略:要求用户设置复杂密码,避免使用简单的密码如“password”。
    • 定期更换密码:强制用户定期更换密码,减少密码泄露的风险。
  2. 禁用多余账号

    • 检查并禁用未使用的账号:防止未授权用户通过这些账号访问系统。
    • 删除不必要的用户目录:删除不再使用的用户账号及其家目录,减少潜在的安全隐患。
  3. sudo权限配置

    • 合理配置sudo权限:仅赋予用户执行特定命令的权限,避免用户获得过高的权限。
    • 记录sudo操作:配置sudo日志记录,以便审计和追踪用户的操作行为。

三、网络防护

  1. 防火墙配置

    • 使用firewalld或iptables:配置防火墙规则,允许或拒绝特定的网络流量。
    • 设置默认策略:将防火墙的默认策略设置为拒绝,仅允许必要的网络访问。
  2. 防止IP欺骗

    • 配置/etc/host.conf:指定域名解析的顺序,避免IP欺骗攻击。
    • 启用反向路径过滤:在网络设备上启用反向路径过滤功能,防止IP欺骗。
  3. 防止ping探测

           阻止ping请求:通过修改系统配置,禁止系统响应外部或内部的ping请求,增加攻击者探测系统的难度。

四、入侵检测与响应

  1. 日志监控与分析

    • 定期查看系统日志:如/var/log/secure、/var/log/messages等,及时发现异常登录尝试、系统错误等信息。
    • 使用日志分析工具:如Logwatch、Logcheck等,自动化地分析系统日志,提高日志监控的效率。
  2. 入侵检测系统(IDS)

    • 部署开源IDS工具:如Snort、Suricata等,实时监控网络流量,检测潜在的入侵行为。
    • 配置告警机制:为IDS配置邮件、短信等告警机制,以便在检测到入侵时及时通知管理员。
  3. rootkit检测

    • 使用rootkit检测工具:如chkrootkit、rkhunter等,定期扫描系统,检测是否存在rootkit等恶意软件。
    • 系统文件完整性检查:使用rpm -Va(针对RPM包管理的系统)等工具,检查系统文件的完整性和校验和,发现异常的文件修改。

五、数据备份与恢复

  1. 定期备份重要数据

    • 配置自动化备份任务:使用cron、anacron等工具,定期备份系统配置文件、用户数据、数据库等重要信息。
    • 存储备份数据:将备份数据存储在安全的位置,如外部硬盘、云存储等,防止数据丢失。
  2. 灾难恢复计划

    • 制定恢复流程:制定详细的灾难恢复计划,包括系统重装、数据恢复、服务重启等步骤。
    • 定期演练恢复流程:定期模拟灾难场景,演练恢复流程,确保在真实事件发生时能够迅速响应。

六、安全意识与培训

  1. 提高员工安全意识

    • 定期举办安全培训:向员工普及网络安全知识,提高他们的安全意识和防范能力。
    • 发布安全公告:定期发布安全公告,告知员工最新的安全威胁和防范措施。
  2. 建立安全文化

    • 鼓励安全报告:建立安全报告机制,鼓励员工主动报告发现的安全漏洞和可疑行为。
    • 实施安全奖惩制度:对在安全工作中表现突出的员工给予奖励,对违反安全规定的员工进行处罚。

七、实战案例

编译安装nginx搭建小游戏网站

一、环境准备
  1. 更新系统软件包

    sudo apt update
    sudo apt upgrade
  2. 安装必要的依赖
    Nginx编译需要一些库和工具,如GCC、Make、PCRE、OpenSSL和zlib。在Debian/Ubuntu系统上,可以使用以下命令安装这些依赖:

    sudo apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev
二、下载并编译Nginx
  1. 下载Nginx源码
    访问Nginx的官方网站,找到最新稳定版本的源码包,下载并解压:

    wget http://nginx.org/download/nginx-x.x.x.tar.gz
    tar -zxvf nginx-x.x.x.tar.gz
    cd nginx-x.x.x
  2. 配置Nginx
    在源码目录中运行配置脚本,指定安装路径和其他选项:

    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module
  3. 编译并安装Nginx
    使用Make命令编译Nginx,然后安装:

    make
    sudo make install
  4. 启动Nginx
    安装完成后,可以使用以下命令启动Nginx:

    sudo /usr/local/nginx/sbin/nginx
三、配置Nginx服务
  1. 编辑Nginx配置文件
    Nginx的配置文件通常位于/usr/local/nginx/conf/nginx.conf。打开该文件,并根据需要进行修改,例如设置服务器的监听端口、根目录等。

    server {listen 80;server_name your_domain.com;location / {root /path/to/your/game/website;index index.html index.htm;}# 其他配置,如反向代理、缓存等
    }
  2. 测试Nginx配置
    在修改配置文件后,使用以下命令测试配置是否正确:

    sudo /usr/local/nginx/sbin/nginx -t
  3. 重启Nginx
    如果配置测试通过,可以使用以下命令重启Nginx以应用新的配置:

    sudo /usr/local/nginx/sbin/nginx -s reload
四、部署小游戏网站
  1. 准备游戏网站内容
           将小游戏网站的文件(如HTML、CSS、JavaScript、图片等)上传到Nginx配置的根目录。

  2. 确保文件权限
           确保Nginx进程有权限访问和读取这些文件。通常,可以将文件的所有者设置为Nginx用户(如www-datanginx),或者将文件权限设置为可读。

  3. 访问网站
          在浏览器中访问你的域名或服务器IP地址,应该能够看到你的小游戏网站。

五、额外配置(可选)
  1. 启用HTTPS
           为了更安全地访问网站,可以配置Nginx使用SSL/TLS证书来启用HTTPS。你需要获得一个有效的SSL证书,并在Nginx配置中指定它。

  2. 反向代理
           如果你的小游戏网站依赖于后端服务(如Node.js、Python等),你可以在Nginx中配置反向代理来转发请求。

  3. 缓存优化
           为了提高网站性能,你可以在Nginx中配置缓存静态资源,如图片、CSS和JavaScript文件。

  4. 日志记录
           Nginx可以记录访问日志和错误日志。你可以在配置文件中指定日志文件的路径和格式。

       通过以上步骤,你应该能够在Linux系统上成功编译安装Nginx,并搭建一个小游戏网站。记得定期更新Nginx和依赖库,以确保系统的安全性。

二进制方式安装Tomcat部署应用

一、安装前准备
  1. 确保系统已安装Java
    • Tomcat是一个Java应用程序,因此需要在系统上安装Java Development Kit (JDK) 或 Java Runtime Environment (JRE)。建议使用JDK,因为它包含编译Java程序所需的工具。
    • 可以使用以下命令安装OpenJDK(以Ubuntu为例):
      sudo apt update
      sudo apt install openjdk-11-jdk
    • 安装完成后,可以通过运行java -version来验证Java是否安装成功。
  2. 下载Tomcat二进制包
    • 访问Apache Tomcat官方网站,下载适合您操作系统的Tomcat二进制包(通常是.tar.gz格式)。
    • 使用wget命令下载,例如:
      wget https://downloads.apache.org/tomcat/tomcat-10/v10.0.xx/bin/apache-tomcat-10.0.xx.tar.gz
    • xx替换为实际的版本号。
二、安装Tomcat
  1. 解压Tomcat包
    • 使用tar命令解压下载的Tomcat包,例如:
      tar -zxvf apache-tomcat-10.0.xx.tar.gz
    • 解压后,会得到一个名为apache-tomcat-10.0.xx的目录。
  2. 移动Tomcat目录
    • 为了方便管理,可以将Tomcat目录移动到/opt或其他合适的目录下:
      sudo mv apache-tomcat-10.0.xx /opt/tomcat
三、配置Tomcat
  1. 设置环境变量(可选)
    • 为了方便在命令行中运行Tomcat命令,可以将Tomcat的bin目录添加到系统的PATH环境变量中。编辑/etc/profile文件:
      sudo nano /etc/profile
    • 在文件末尾添加以下行:
      export CATALINA_HOME=/opt/tomcat
      export PATH=$PATH:$CATALINA_HOME/bin
    • 保存文件并退出,然后运行source /etc/profile使更改生效。
  2. 配置Tomcat服务(可选)
    • 为了使Tomcat能够像系统服务一样管理,可以创建一个systemd服务单元文件。使用以下命令创建文件:
      sudo nano /etc/systemd/system/tomcat.service
    • 在文件中添加以下内容:
      [Unit]
      Description=Tomcat Web Application Container
      After=network.target[Service]
      Type=forking
      Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
      Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
      Environment=CATALINA_HOME=/opt/tomcat
      Environment=CATALINA_BASE=/opt/tomcat
      ExecStart=/opt/tomcat/bin/startup.sh
      ExecStop=/opt/tomcat/bin/shutdown.sh
      User=tomcat
      Group=tomcat
      UMask=0007
      RestartSec=10
      Restart=always[Install]
      WantedBy=multi-user.target
    • 注意:将JAVA_HOME设置为系统中JDK的实际安装路径。如果不确定,可以使用update-alternatives --config java命令查看。
    • 保存文件并退出,然后重新加载systemd配置:
      sudo systemctl daemon-reload

四、启动和停止Tomcat

  1. 启动Tomcat
    • 如果配置了systemd服务,可以使用以下命令启动Tomcat:
      sudo systemctl start tomcat
    • 还可以将Tomcat设置为开机自启动:
      sudo systemctl enable tomcat
    • 如果没有配置systemd服务,可以直接运行Tomcat的启动脚本:
      /opt/tomcat/bin/startup.sh
  2. 停止Tomcat
    • 如果配置了systemd服务,可以使用以下命令停止Tomcat:
      sudo systemctl stop tomcat
    • 如果没有配置systemd服务,可以直接运行Tomcat的停止脚本:
      /opt/tomcat/bin/shutdown.sh

五、部署Web应用

  1. 准备WAR文件:将要部署的Web应用打包成WAR文件。可以使用IDE(如Eclipse、IntelliJ IDEA)或命令行工具(如jar命令)来完成此操作。
  2. 部署WAR文件
    • 将WAR文件复制到Tomcat的webapps目录下。例如:
      sudo cp /path/to/your/app.war /opt/tomcat/webapps/
    • Tomcat会自动解压缩WAR文件,并在webapps目录下创建一个与WAR文件名相同的目录。
  3. 访问Web应用:启动Tomcat后,在浏览器中访问http://your_server_ip:8080/app,其中app是WAR文件的名称(不包括.war扩展名)。

六、配置防火墙(可选)

         如果服务器配置了防火墙,需要确保Tomcat的默认端口(8080)是开放的。以ufw(Uncomplicated Firewall)为例:

sudo ufw allow 8080/tcp
sudo ufw reload

七、常见问题排查

  1. Tomcat无法启动
    • 检查Tomcat的日志文件(位于$CATALINA_HOME/logs/目录下),查看是否有错误信息。
    • 确保Java环境变量配置正确,Tomcat有权限访问JDK目录。
  2. 无法访问Web应用
    • 检查服务器防火墙设置,确保Tomcat的端口是开放的。
    • 确保Tomcat服务正在运行,并且没有报错。

       通过以上步骤,你应该能够在Linux系统上成功安装Tomcat并部署Web应用。如果遇到任何问题,可以参考Tomcat的官方文档或社区论坛获取帮助。

搭建企业内部yum仓库

一、准备工作
  1. 选择合适的服务器:选择一台性能稳定、网络连接良好的服务器作为YUM仓库服务器。

  2. 安装必要的软件包:在YUM仓库服务器上,安装HTTP服务(如Apache HTTP Server)或FTP服务(如vsftpd),以便客户端可以通过网络访问YUM仓库。

  3. 获取软件包源:可以使用CentOS、RHEL等Linux发行版的官方镜像文件(如ISO镜像),或者从官方仓库下载RPM包集合。

二、搭建本地YUM仓库

       如果企业网络无法访问外部仓库,可以先在本地搭建YUM仓库,然后再将本地仓库的内容同步到网络仓库。

  1. 挂载镜像文件:将ISO镜像文件挂载到本地目录,例如:

    mount -o loop /path/to/centos.iso /mnt/centos
  2. 备份原YUM仓库配置文件:/etc/yum.repos.d/目录下的原仓库配置文件备份到其他目录,以防万一。

  3. 创建本地YUM仓库配置文件:/etc/yum.repos.d/目录下创建一个新的.repo文件,例如local.repo,内容如下:

    [local]
    name=Local Repository
    baseurl=file:///mnt/centos
    gpgcheck=0
    enabled=1
  4. 清理YUM缓存并生成元数据:执行以下命令,清理YUM缓存并生成元数据:

    yum clean all
    yum makecache
三、搭建网络YUM仓库
  1. 配置HTTP服务或FTP服务

    • HTTP服务
      • 安装Apache HTTP Server:
        yum install httpd -y
      • 启动并启用HTTP服务:
        systemctl start httpd
        systemctl enable httpd
      • 将本地YUM仓库的内容复制到HTTP服务的默认目录(如/var/www/html),或者直接在HTTP服务目录下创建软链接指向本地YUM仓库。
    • FTP服务
      • 安装vsftpd:
        yum install vsftpd -y
      • 启动并启用FTP服务:
        systemctl start vsftpd
        systemctl enable vsftpd
      • 将本地YUM仓库的内容复制到FTP服务的默认目录(如/var/ftp/pub)。
  2. 创建网络YUM仓库配置文件

    • 在YUM仓库服务器的/etc/yum.repos.d/目录下创建一个新的.repo文件,例如network.repo,内容如下:

      [network]
      name=Network Repository
      baseurl=http://your_server_ip/centos  # 或者 ftp://your_server_ip/pub/centos
      gpgcheck=0
      enabled=1
    • your_server_ip替换为YUM仓库服务器的实际IP地址。

  3. 生成仓库索引

    • 在YUM仓库的根目录下(如/var/www/html/centos/var/ftp/pub/centos),使用createrepo命令生成仓库索引:

      createrepo .
    • 每次添加或删除RPM包后,都需要重新运行createrepo命令以更新仓库索引。

四、配置客户端
  1. 备份原YUM仓库配置文件:在客户端机器上,将/etc/yum.repos.d/目录下的原仓库配置文件备份到其他目录。

  2. 创建企业内部YUM仓库配置文件

    • /etc/yum.repos.d/目录下创建一个新的.repo文件,例如internal.repo,内容如下:

      [internal]
      name=Internal Repository
      baseurl=http://your_server_ip/centos  # 或者 ftp://your_server_ip/pub/centos
      gpgcheck=0
      enabled=1
    • your_server_ip替换为YUM仓库服务器的实际IP地址。

  3. 清理YUM缓存并生成元数据:执行以下命令,清理YUM缓存并生成元数据:

    yum clean all
    yum makecache
五、测试与维护
  1. 测试安装软件包:在客户端机器上,尝试使用YUM安装软件包,以验证企业内部YUM仓库是否正常工作。

  2. 定期更新仓库:定期从官方仓库下载新的RPM包,并更新到企业内部YUM仓库中。

  3. 监控和日志:监控YUM仓库服务器的性能和日志,确保仓库的正常运行。

       通过以上步骤,你可以成功搭建企业内部YUM仓库,提高软件安装和管理的效率,同时增强网络安全性。

 结语      

如果你与众不同

你就一定会孤独

!!!

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

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

相关文章

软件的常用设计模式。可参考一个一个学习

以下是软件设计中常见的 **23种经典设计模式**(基于《设计模式:可复用面向对象软件的基础》GoF 的经典分类),并结合 **Python 语言特性**的简要说明和典型应用场景。我将它们分为 **创建型、结构型、行为型** 三大类,供…

性能比拼: Go(Gin) vs Python(Flask)

本内容是对知名性能评测博主 Anton Putra Go (Golang) vs Python Performance Benchmark (Kubernetes - OpenTelemetry - Prometheus - S3/Postgres) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在本视频中,我们将比较 Golang 和 Python 的性能。 但…

Android版本更新服务通知下载实现

在日常开发中,我们肯定会有检查版本更新的需求,那我版本更新的轮子网上也是有的,想自己实现一下代码如下: 下载管理类: public class DownLoadManager {private static final String MAIN "main"; //Tagp…

UE5学习笔记 FPS游戏制作33 换子弹 动画事件

新建动画蒙太奇 为Rifle和Launcher各自新建一个动画蒙太奇,拖入动画,注意动画的轨道要和动画蓝图里的一致 在蒙太奇添加动画事件 在通知一栏新增一个轨道,右键轨道,新增一个 换枪完成 通知,不同动画的同名通知需要…

uniapp中uploadFile的用法

基本语法 uni.uploadFile(OBJECT)OBJECT 是一个包含上传相关配置的对象,常见参数如下: 参数类型必填说明urlString是开发者服务器地址。filePathString是要上传文件资源的本地路径。nameString是文件对应的 key,开发者在服务端可以通过这个 …

Android设计模式之责任链模式

一、定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系将这些对象连城一条链,并沿着这条链传递该请求,只到有对象处理它为止。 二、模式结构: 抽象处理者(Handler&#xff…

Oracle数据库数据编程SQL<3.3 PL/SQL 游标>

游标(Cursor)是Oracle数据库中用于处理查询结果集的重要机制,它允许开发者逐行处理SQL语句返回的数据。 目录 一、游标基本概念 1. 游标定义 2. 游标分类 二、静态游标 (一)显式游标 【一】不带参数,普通的显示游标 1. 显式…

逗万DareWorks|创意重构书写美学,引领新潮无界的文创革命

当传统文具陷入同质化泥潭时,逗万DareWorks品牌犹如一颗璀璨的明星,以其独特的创意理念和卓越的产品品质,迅速赢得了广大消费者的青睐。 逗万DareWorks隶属于东莞司贸文教赠品有限公司,后者深耕制笔行业45年,占地4.6万…

写Prompt的技巧和基本原则

一.基本原则 1.一定要描述清晰你需要大模型做的事情,不要模棱两可 2.告诉大模型需要它做什么,不需要做什么 改写前: 请帮我推荐一些电影 改写后: 请帮我推荐2025年新出的10部评分比较高的喜剧电影,不要问我个人喜好等其他问题&#xff…

【React】基于 React+Tailwind 的 EmojiPicker 选择器组件

1.背景 React 写一个 EmojiPicker 组件,基于 emoji-mart 组件二次封装。支持添加自定义背景 、Emoji 图标选择!并在页面上展示! 2.技术栈 emoji-mart/data 、emoji-mart : emoji 图标库、元数据 tailwindcss: 原子化 CSS 样式库 antd : 组…

Qt中绘制不规则控件

在Qt中绘制不规则控件可通过设置遮罩(Mask)实现。以下是详细步骤: ‌继承目标控件‌:如QPushButton或QWidget。‌重写resizeEvent‌:当控件大小变化时,更新遮罩形状。‌创建遮罩区域‌:使用QRegion或QPain…

Parallel_Scheduling_of_DAGs_under_Memory_Constraints论文阅读

内存约束下的 DAG 并行调度 点击阅读原文语雀链接更清晰 摘要 科学工作流通常被建模为任务的有向无环图(DAG),这些任务代表计算模块及其依赖关系,依赖关系表现为任务生成的数据被其他任务使用。这种形式化方法允许使用运行时系统&…

探索MVC、MVP、MVVM和DDD架构在不同编程语言中的实现差异

MVC与MVP/MVVM/DDD架构对比,不同语言实现 MVC 分层架构设计概述 模型-视图-控制器(Model-View-Controller,简称 MVC)是一种经典软件架构设计,通过分层解耦,使得系统结构清晰和易于维护,具有良…

一文读懂 UML:基础概念与体系框架

UML 图是一种标准化的建模语言,在软件开发和系统设计等领域有着广泛的应用。以下是对 UML 图各类图的详细介绍: 1.用例图 定义:用例图是从用户角度描述系统功能的模型图,展现了系统的参与者与用例之间的关系。作用:帮…

Spring 及 Spring Boot 条件化注解(15个)完整列表及示例

Spring 及 Spring Boot 条件化注解完整列表及示例 1. 所有条件化注解列表 Spring 和 Spring Boot 提供了以下条件化注解(共 15 个),用于在配置类或方法上实现条件化注册 Bean 或配置: 注解名称作用来源框架Conditional自定义条件…

【Kafka】深入探讨 Kafka 如何保证一致性

文章目录 Kafka 基本概念回顾​副本角色​ 数据写入一致性​同步副本(ISR)集合​数据读取一致性​故障处理与一致性恢复​总结​ 在分布式系统领域,数据一致性是至关重要的一环。作为一款高性能的分布式消息队列系统,Kafka 在设计…

从入门到精通:SQL注入防御与攻防实战——红队如何突破,蓝队如何应对!

引言:为什么SQL注入攻击依然如此强大? SQL注入(SQL Injection)是最古老且最常见的Web应用漏洞之一。尽管很多公司和组织都已经采取了WAF、防火墙、数据库隔离等防护措施,但SQL注入依然在许多情况下能够突破防线&#…

【算法day27】有效的数独——请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

36. 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例…

leetcode 2360. 图中的最长环 困难

给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 i 到节点 edges[i] 之间有一条有向边。如果节点 i 没有出边,那么 edges[i] -1 。…

PySpur: AI 智能体可视化开发平台

GitHub:https://github.com/PySpur-Dev/pyspur 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI PySpur是一个开源的轻量级可视化AI智能体工作流构建器,旨在简化AI系统的开发流程。通过拖拽式界面,用户…