活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS Stream服务配置完全指南从入门到精通详解系统服务网络服务安全服务的安装设置与管理技巧

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-8 21:10:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

CentOS Stream作为RHEL(Red Hat Enterprise Linux)的上游开发平台,为企业和个人用户提供了一个稳定、可靠且功能丰富的操作系统环境。在现代化的IT基础设施中,正确配置和管理系统服务、网络服务和安全服务是确保服务器高效、安全运行的关键。本文将全面介绍CentOS Stream中各类服务的配置方法,从基础入门到高级技巧,帮助读者掌握服务管理的精髓。

CentOS Stream基础

CentOS Stream是CentOS项目的一个新方向,它位于Fedora Linux和RHEL之间,作为RHEL的上游开发分支。与传统的CentOS不同,CentOS Stream提供了一个滚动更新的平台,让用户能够提前体验到即将在RHEL中发布的功能。

安装CentOS Stream

在开始服务配置之前,首先需要安装CentOS Stream系统。以下是安装过程的简要概述:

1. 从官方网站下载CentOS Stream ISO镜像文件
2. 创建启动媒体(USB或DVD)
3. 启动安装程序并按照向导进行安装
4. 完成基本系统配置(网络、主机名、用户账户等)

安装完成后,建议立即更新系统到最新版本:
  1. sudo dnf update -y
复制代码

系统初始化设置

安装完成后,需要进行一些基本的系统初始化设置:
  1. # 设置主机名
  2. sudo hostnamectl set-hostname your-hostname
  3. # 配置网络(以静态IP为例)
  4. sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
  5. sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
  6. sudo nmcli connection modify eth0 ipv4.dns 8.8.8.8
  7. sudo nmcli connection modify eth0 ipv4.method manual
  8. sudo nmcli connection up eth0
  9. # 检查网络状态
  10. ip addr show
  11. ping -c 4 google.com
复制代码

系统服务配置

CentOS Stream使用systemd作为初始化系统和服务管理器。systemd提供了强大的服务管理功能,包括并行启动、依赖关系管理和按需启动等。

systemd基础

systemd使用单元(unit)文件来定义和控制服务。这些单元文件通常位于以下目录:

• /usr/lib/systemd/system/: 系统安装的单元文件
• /etc/systemd/system/: 系统管理员创建或修改的单元文件

单元文件分为多种类型,包括:

• .service: 系统服务
• .socket: 套接字
• .target: 一组服务
• .mount: 文件系统挂载点
• .timer: 定时器

服务管理命令

以下是一些常用的systemd服务管理命令:
  1. # 启动服务
  2. sudo systemctl start service_name
  3. # 停止服务
  4. sudo systemctl stop service_name
  5. # 重启服务
  6. sudo systemctl restart service_name
  7. # 重新加载服务配置
  8. sudo systemctl reload service_name
  9. # 启用服务(开机自启)
  10. sudo systemctl enable service_name
  11. # 禁用服务
  12. sudo systemctl disable service_name
  13. # 查看服务状态
  14. sudo systemctl status service_name
  15. # 查看所有已启用的服务
  16. systemctl list-unit-files --state=enabled
  17. # 查看所有活动的服务
  18. systemctl list-units --type=service --state=active
  19. # 查看服务日志
  20. journalctl -u service_name
  21. # 实时查看服务日志
  22. journalctl -fu service_name
复制代码

创建自定义服务

创建自定义服务是系统管理中的常见任务。以下是一个创建自定义服务的示例:

假设我们要创建一个简单的Web服务,该服务使用Python的内置HTTP服务器:

1. 首先,创建一个简单的Python脚本:
  1. sudo mkdir /opt/simple_web
  2. sudo nano /opt/simple_web/server.py
复制代码

在server.py中添加以下内容:
  1. #!/usr/bin/env python3
  2. import http.server
  3. import socketserver
  4. PORT = 8000
  5. Handler = http.server.SimpleHTTPRequestHandler
  6. with socketserver.TCPServer(("", PORT), Handler) as httpd:
  7.     print("Serving at port", PORT)
  8.     httpd.serve_forever()
复制代码

1. 使脚本可执行:
  1. sudo chmod +x /opt/simple_web/server.py
复制代码

1. 创建systemd服务单元文件:
  1. sudo nano /etc/systemd/system/simple-web.service
复制代码

在simple-web.service中添加以下内容:
  1. [Unit]
  2. Description=Simple Python Web Server
  3. After=network.target
  4. [Service]
  5. Type=simple
  6. User=root
  7. ExecStart=/opt/simple_web/server.py
  8. Restart=on-failure
  9. RestartSec=5s
  10. [Install]
  11. WantedBy=multi-user.target
复制代码

1. 重新加载systemd配置并启动服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start simple-web
  3. sudo systemctl enable simple-web
复制代码

1. 验证服务状态:
  1. sudo systemctl status simple-web
复制代码

服务优化技巧

优化系统服务可以提高服务器的性能和稳定性。以下是一些服务优化的技巧:

可以为服务设置资源限制,防止单个服务占用过多系统资源:
  1. [Service]
  2. ...
  3. # 限制CPU使用率
  4. CPUQuota=50%
  5. # 限制内存使用
  6. MemoryLimit=512M
  7. # 限制进程数
  8. TasksMax=100
复制代码

通过设置服务运行的用户和权限,可以提高安全性:
  1. [Service]
  2. ...
  3. # 以非特权用户运行
  4. User=myuser
  5. Group=mygroup
  6. # 限制文件系统访问
  7. ReadWritePaths=/var/log/myapp
  8. ReadOnlyPaths=/usr/share/myapp
  9. # 禁止特权操作
  10. NoNewPrivileges=true
  11. PrivateTmp=true
  12. ProtectSystem=strict
复制代码

可以通过环境变量配置服务的行为:
  1. [Service]
  2. ...
  3. Environment="DEBUG=false"
  4. Environment="DB_HOST=localhost"
  5. Environment="DB_PORT=5432"
  6. EnvironmentFile=/etc/myapp/environment
复制代码

正确设置服务之间的依赖关系可以确保系统启动的顺序正确:
  1. [Unit]
  2. Description=My Application
  3. After=network.target postgresql.service
  4. Requires=postgresql.service
复制代码

网络服务配置

网络服务是CentOS Stream服务器的重要组成部分,包括网络接口配置、防火墙设置和各种网络服务(如SSH、NTP、DHCP、DNS等)的配置。

网络基础设置

CentOS Stream使用NetworkManager进行网络管理。以下是一些基本的网络配置命令:
  1. # 查看网络连接
  2. nmcli connection show
  3. # 查看网络设备状态
  4. nmcli device status
  5. # 创建新的网络连接
  6. nmcli connection add type ethernet ifname eth0 con-name eth0
  7. # 配置静态IP
  8. nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
  9. nmcli connection modify eth0 ipv4.gateway 192.168.1.1
  10. nmcli connection modify eth0 ipv4.dns 8.8.8.8
  11. nmcli connection modify eth0 ipv4.method manual
  12. # 配置DHCP
  13. nmcli connection modify eth0 ipv4.method auto
  14. # 激活连接
  15. nmcli connection up eth0
  16. # 禁用连接
  17. nmcli connection down eth0
  18. # 删除连接
  19. nmcli connection delete eth0
复制代码

防火墙配置

CentOS Stream使用firewalld作为默认的防火墙管理工具。以下是一些基本的防火墙配置命令:
  1. # 检查firewalld状态
  2. sudo systemctl status firewalld
  3. # 启动firewalld并设置开机自启
  4. sudo systemctl start firewalld
  5. sudo systemctl enable firewalld
  6. # 查看当前防火墙规则
  7. sudo firewall-cmd --list-all
  8. # 开放端口
  9. sudo firewall-cmd --permanent --add-port=80/tcp
  10. sudo firewall-cmd --permanent --add-port=443/tcp
  11. # 开放服务
  12. sudo firewall-cmd --permanent --add-service=http
  13. sudo firewall-cmd --permanent --add-service=https
  14. # 创建自定义服务
  15. sudo nano /etc/firewalld/services/myapp.xml
复制代码

在myapp.xml中添加以下内容:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <service>
  3.   <short>My App</short>
  4.   <description>My Application Service</description>
  5.   <port protocol="tcp" port="8080"/>
  6.   <port protocol="tcp" port="8443"/>
  7. </service>
复制代码

然后加载并应用自定义服务:
  1. sudo firewall-cmd --permanent --add-service=myapp
  2. sudo firewall-cmd --reload
复制代码

常用网络服务配置

SSH(Secure Shell)是远程管理Linux服务器的标准工具。以下是SSH服务的配置和优化方法:
  1. # 安装SSH服务
  2. sudo dnf install openssh-server -y
  3. # 启动SSH服务并设置开机自启
  4. sudo systemctl start sshd
  5. sudo systemctl enable sshd
  6. # 查看SSH服务状态
  7. sudo systemctl status sshd
  8. # 配置SSH
  9. sudo nano /etc/ssh/sshd_config
复制代码

在sshd_config中可以进行以下安全配置:
  1. # 更改默认端口
  2. Port 2222
  3. # 禁用root登录
  4. PermitRootLogin no
  5. # 仅允许特定用户登录
  6. AllowUsers user1 user2
  7. # 禁用密码认证,仅允许密钥认证
  8. PasswordAuthentication no
  9. PubkeyAuthentication yes
  10. # 设置登录超时
  11. LoginGraceTime 60
  12. # 最大尝试次数
  13. MaxAuthTries 3
复制代码

配置完成后,重启SSH服务:
  1. sudo systemctl restart sshd
复制代码

NTP(Network Time Protocol)用于同步系统时间,确保服务器时间的准确性:
  1. # 安装NTP服务
  2. sudo dnf install chrony -y
  3. # 启动NTP服务并设置开机自启
  4. sudo systemctl start chronyd
  5. sudo systemctl enable chronyd
  6. # 查看NTP服务状态
  7. sudo systemctl status chronyd
  8. # 查看时间同步状态
  9. chronyc tracking
  10. # 查看时间源
  11. chronyc sources -v
  12. # 配置NTP服务器
  13. sudo nano /etc/chrony.conf
复制代码

在chrony.conf中可以添加或修改NTP服务器:
  1. # 使用默认的NTP服务器池
  2. pool 2.centos.pool.ntp.org iburst
  3. # 添加特定的NTP服务器
  4. server ntp1.example.com iburst
  5. server ntp2.example.com iburst
  6. # 允许特定网络同步时间
  7. allow 192.168.1.0/24
复制代码

配置完成后,重启NTP服务:
  1. sudo systemctl restart chronyd
复制代码

DHCP(Dynamic Host Configuration Protocol)用于自动分配IP地址和其他网络配置:
  1. # 安装DHCP服务
  2. sudo dnf install dhcp-server -y
  3. # 配置DHCP服务
  4. sudo nano /etc/dhcp/dhcpd.conf
复制代码

在dhcpd.conf中添加以下内容:
  1. # 设置DNS域名
  2. option domain-name "example.com";
  3. # 设置DNS服务器
  4. option domain-name-servers 8.8.8.8, 8.8.4.4;
  5. # 设置默认租约时间
  6. default-lease-time 600;
  7. # 设置最大租约时间
  8. max-lease-time 7200;
  9. # 设置DHCP服务器为权威服务器
  10. authoritative;
  11. # 定义子网
  12. subnet 192.168.1.0 netmask 255.255.255.0 {
  13.   range 192.168.1.100 192.168.1.200;
  14.   option routers 192.168.1.1;
  15.   option broadcast-address 192.168.1.255;
  16.   
  17.   # 固定IP地址分配
  18.   host server1 {
  19.     hardware ethernet 00:0c:29:aa:bb:cc;
  20.     fixed-address 192.168.1.10;
  21.   }
  22. }
复制代码

配置完成后,启动DHCP服务并设置开机自启:
  1. sudo systemctl start dhcpd
  2. sudo systemctl enable dhcpd
复制代码

DNS(Domain Name System)用于将域名解析为IP地址。以下是使用BIND配置DNS服务器的步骤:
  1. # 安装BIND
  2. sudo dnf install bind bind-utils -y
  3. # 配置BIND
  4. sudo nano /etc/named.conf
复制代码

在named.conf中进行基本配置:
  1. options {
  2.     listen-on port 53 { 127.0.0.1; 192.168.1.100; };
  3.     listen-on-v6 port 53 { ::1; };
  4.     directory       "/var/named";
  5.     dump-file       "/var/named/data/cache_dump.db";
  6.     statistics-file "/var/named/data/named_stats.txt";
  7.     memstatistics-file "/var/named/data/named_mem_stats.txt";
  8.     secroots-file   "/var/named/data/named.secroots";
  9.     recursing-file  "/var/named/data/named.recursing";
  10.     allow-query     { localhost; 192.168.1.0/24; };
  11.    
  12.     /*
  13.      - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
  14.      - If you are building a RECURSIVE (caching) DNS server, you need to enable
  15.        recursion.
  16.      - If your recursive DNS server has a public IP address, you MUST enable access
  17.        control to limit queries to your legitimate users. Failing to do so will
  18.        cause your server to become part of large scale DNS amplification
  19.        attacks. Implementing BCP38 within your network would greatly
  20.        reduce such attack surface
  21.     */
  22.     recursion yes;
  23.    
  24.     dnssec-enable yes;
  25.     dnssec-validation yes;
  26.    
  27.     managed-keys-directory "/var/named/dynamic";
  28.    
  29.     pid-file "/run/named/named.pid";
  30.     session-keyfile "/run/named/session.key";
  31.    
  32.     /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
  33.     include "/etc/crypto-policies/back-ends/bind.config";
  34. };
  35. logging {
  36.     channel default_debug {
  37.         file "data/named.run";
  38.         severity dynamic;
  39.     };
  40. };
  41. zone "." IN {
  42.     type hint;
  43.     file "named.ca";
  44. };
  45. include "/etc/named.rfc1912.zones";
  46. include "/etc/named.root.key";
复制代码

创建正向解析区域文件:
  1. sudo nano /var/named/example.com.zone
复制代码

在example.com.zone中添加以下内容:
  1. $TTL 86400
  2. @   IN  SOA ns1.example.com. admin.example.com. (
  3.         2023040101  ; Serial
  4.         3600        ; Refresh
  5.         1800        ; Retry
  6.         604800      ; Expire
  7.         86400       ; Minimum TTL
  8. )
  9. @   IN  NS  ns1.example.com.
  10. @   IN  A   192.168.1.100
  11. ns1 IN  A   192.168.1.100
  12. www IN  A   192.168.1.101
  13. mail IN  A   192.168.1.102
复制代码

创建反向解析区域文件:
  1. sudo nano /var/named/1.168.192.in-addr.arpa.zone
复制代码

在1.168.192.in-addr.arpa.zone中添加以下内容:
  1. $TTL 86400
  2. @   IN  SOA ns1.example.com. admin.example.com. (
  3.         2023040101  ; Serial
  4.         3600        ; Refresh
  5.         1800        ; Retry
  6.         604800      ; Expire
  7.         86400       ; Minimum TTL
  8. )
  9. @   IN  NS  ns1.example.com.
  10. 100 IN  PTR ns1.example.com.
  11. 101 IN  PTR www.example.com.
  12. 102 IN  PTR mail.example.com.
复制代码

设置文件权限并启动DNS服务:
  1. sudo chown -R named:named /var/named/
  2. sudo chmod 640 /var/named/example.com.zone /var/named/1.168.192.in-addr.arpa.zone
  3. sudo systemctl start named
  4. sudo systemctl enable named
复制代码

网络服务优化

通过调整内核参数,可以优化网络性能:
  1. # 创建自定义sysctl配置文件
  2. sudo nano /etc/sysctl.d/99-network.conf
复制代码

在99-network.conf中添加以下内容:
  1. # 增加TCP最大缓冲区大小
  2. net.core.rmem_max = 16777216
  3. net.core.wmem_max = 16777216
  4. # 增加TCP默认缓冲区大小
  5. net.ipv4.tcp_rmem = 4096 87380 16777216
  6. net.ipv4.tcp_wmem = 4096 65536 16777216
  7. # 启用TCP窗口缩放
  8. net.ipv4.tcp_window_scaling = 1
  9. # 启用TCP快速打开
  10. net.ipv4.tcp_fastopen = 3
  11. # 启用BBR拥塞控制算法
  12. net.core.default_qdisc = fq
  13. net.ipv4.tcp_congestion_control = bbr
  14. # 增加最大连接数
  15. net.core.somaxconn = 65535
  16. # 减少TIME_WAIT连接数
  17. net.ipv4.tcp_max_tw_buckets = 1440000
  18. net.ipv4.tcp_tw_reuse = 1
复制代码

应用配置:
  1. sudo sysctl -p /etc/sysctl.d/99-network.conf
复制代码

优化网络接口设置可以提高网络性能:
  1. # 查看当前网络接口设置
  2. ethtool eth0
  3. # 启用GRO(Generic Receive Offload)
  4. sudo ethtool -K eth0 gro on
  5. # 启用TSO(TCP Segmentation Offload)
  6. sudo ethtool -K eth0 tso on
  7. # 启用LRO(Large Receive Offload)
  8. sudo ethtool -K eth0 lro on
  9. # 启用SG(Scatter-Gather)
  10. sudo ethtool -K eth0 sg on
  11. # 设置网络接口队列数
  12. sudo ethtool -L eth0 combined 4
复制代码

要使这些设置永久生效,可以创建NetworkManager配置文件:
  1. sudo nano /etc/NetworkManager/conf.d/99-ethtool.conf
复制代码

在99-ethtool.conf中添加以下内容:
  1. [connection]
  2. ethernet.ethtool-features-gro=true
  3. ethernet.ethtool-features-tso=true
  4. ethernet.ethtool-features-lro=true
  5. ethernet.ethtool-features-sg=true
复制代码

重启NetworkManager:
  1. sudo systemctl restart NetworkManager
复制代码

安全服务配置

安全是服务器管理的重要方面。CentOS Stream提供了多种安全工具和服务,包括SELinux、安全审计和访问控制等。

SELinux配置

SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制(MAC)功能。
  1. # 检查SELinux状态
  2. sestatus
  3. # 临时禁用SELinux
  4. sudo setenforce 0
  5. # 临时启用SELinux
  6. sudo setenforce 1
  7. # 永久禁用SELinux(不推荐)
  8. sudo nano /etc/selinux/config
复制代码

在config文件中修改:
  1. SELINUX=disabled
复制代码
  1. # 查看当前SELinux策略
  2. sestatus -b
  3. # 查看文件的安全上下文
  4. ls -Z /path/to/file
  5. # 修改文件的安全上下文
  6. sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  7. # 恢复文件的默认安全上下文
  8. sudo restorecon -v /var/www/html/index.html
  9. # 查看端口的安全上下文
  10. semanage port -l
  11. # 添加新的端口安全上下文
  12. sudo semanage port -a -t http_port_t -p tcp 8080
  13. # 查看布尔值
  14. getsebool -a
  15. # 设置布尔值
  16. sudo setsebool -P httpd_can_network_connect on
复制代码

当SELinux阻止服务正常运行时,可以按照以下步骤进行故障排除:
  1. # 查看SELinux拒绝日志
  2. sudo grep AVC /var/log/audit/audit.log
  3. # 或者使用ausearch工具
  4. sudo ausearch -m AVC -ts recent
  5. # 安装SELinux故障排除工具
  6. sudo dnf install setroubleshoot -y
  7. # 使用sealert分析日志
  8. sudo sealert -a /var/log/audit/audit.log
  9. # 生成SELinux策略模块
  10. sudo grep httpd /var/log/audit/audit.log | audit2allow -m myhttpd
  11. sudo grep httpd /var/log/audit/audit.log | audit2allow -M myhttpd
  12. sudo semodule -i myhttpd.pp
复制代码

安全审计

Linux审计系统(auditd)提供了强大的安全审计功能,可以记录系统上的安全相关事件。
  1. # 安装审计系统
  2. sudo dnf install audit -y
  3. # 启动审计服务并设置开机自启
  4. sudo systemctl start auditd
  5. sudo systemctl enable auditd
  6. # 查看审计服务状态
  7. sudo systemctl status auditd
  8. # 配置审计规则
  9. sudo nano /etc/audit/rules.d/audit.rules
复制代码

在audit.rules中添加以下内容:
  1. # 删除所有规则
  2. -D
  3. # 设置缓冲区大小
  4. -b 8192
  5. # 设置失败模式
  6. -f 1
  7. # 记录文件删除
  8. -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F exit=-EACCES -F key=access
  9. -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F exit=-EPERM -F key=access
  10. # 记录文件权限修改
  11. -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=-1 -F key=perm_mod
  12. -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=-1 -F key=perm_mod
  13. # 记录用户登录
  14. -w /var/log/lastlog -p wa -k logins
  15. -w /var/run/faillock -p wa -k logins
  16. # 记录sudo使用
  17. -w /var/log/sudo.log -p wa -k sudo_actions
  18. # 记录系统时间修改
  19. -a always,exit -F arch=b64 -S adjtimex -S settimeofday -S stime -S clock_settime -k time_change
  20. # 记录网络配置修改
  21. -w /etc/hosts -p wa -k network_modifications
  22. -w /etc/sysconfig/network -p wa -k network_modifications
  23. # 确保规则被加载
  24. -e 1
复制代码

加载审计规则:
  1. sudo augenrules --load
复制代码
  1. # 查看审计日志
  2. sudo ausearch -i -m USER_LOGIN
  3. # 查看特定时间的审计日志
  4. sudo ausearch -i -ts yesterday
  5. # 查看特定用户的审计日志
  6. sudo ausearch -i -ua username
  7. # 生成审计报告
  8. sudo aureport -x -i
  9. # 查看文件访问日志
  10. sudo ausearch -i -f /etc/passwd
复制代码

访问控制

除了SELinux外,还可以使用其他访问控制机制来增强系统安全性。

PAM提供了灵活的身份验证机制,可以配置各种认证策略。
  1. # 查看PAM配置
  2. ls /etc/pam.d/
  3. # 配置密码策略
  4. sudo nano /etc/security/pwquality.conf
复制代码

在pwquality.conf中添加以下内容:
  1. minlen = 12
  2. minclass = 3
  3. dcredit = -1
  4. ucredit = -1
  5. lcredit = -1
  6. ocredit = -1
  7. maxrepeat = 3
  8. gecoscheck = 1
  9. dictcheck = 1
  10. enforce_for_root
复制代码

配置登录尝试限制:
  1. sudo nano /etc/pam.d/system-auth
复制代码

在system-auth中添加以下内容:
  1. auth        required      pam_tally2.so deny=5 unlock_time=900 onerr=fail
  2. account     required      pam_tally2.so
复制代码

查看登录失败次数:
  1. sudo pam_tally2 -u username
复制代码

解锁用户账户:
  1. sudo pam_tally2 -u username -r
复制代码

TCP Wrappers提供了一种基于主机的访问控制机制。
  1. # 配置允许访问的主机
  2. sudo nano /etc/hosts.allow
复制代码

在hosts.allow中添加以下内容:
  1. sshd: 192.168.1.0/24, 10.0.0.1
  2. vsftpd: 192.168.1.100
复制代码
  1. # 配置拒绝访问的主机
  2. sudo nano /etc/hosts.deny
复制代码

在hosts.deny中添加以下内容:
  1. ALL: ALL
复制代码

安全加固

保持系统更新是安全的基本要求:
  1. # 检查可用更新
  2. sudo dnf check-update
  3. # 安装所有更新
  4. sudo dnf update -y
  5. # 安装安全更新
  6. sudo dnf update --security
  7. # 自动安装安全更新
  8. sudo dnf install dnf-automatic -y
  9. sudo systemctl enable --now dnf-automatic.timer
复制代码
  1. # 禁用不必要的服务账户
  2. sudo usermod -L username
  3. sudo usermod -s /sbin/nologin username
  4. # 设置密码过期策略
  5. sudo chage -M 90 username
  6. # 查看密码过期信息
  7. sudo chage -l username
  8. # 禁用空密码账户
  9. sudo sed -i 's/^nullok//' /etc/pam.d/system-auth
  10. # 限制root用户SSH登录
  11. sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config
  12. sudo systemctl restart sshd
复制代码
  1. # 查找SUID/SGID文件
  2. sudo find / -type f \( -perm -4000 -o -perm -2000 \) -ls
  3. # 查找全局可写文件
  4. sudo find / -type f -perm -o+w -ls
  5. # 查找无主文件
  6. sudo find / -nouser -o -nogroup -ls
  7. # 设置umask
  8. echo "umask 027" >> /etc/profile
  9. echo "umask 027" >> /etc/bashrc
复制代码
  1. # 禁用不必要的服务
  2. sudo systemctl stop telnet.socket
  3. sudo systemctl disable telnet.socket
  4. sudo systemctl stop rsh.socket
  5. sudo systemctl disable rsh.socket
  6. # 查看开放端口
  7. sudo ss -tulpn
  8. # 使用lynis进行安全扫描
  9. sudo dnf install lynis -y
  10. sudo lynis audit system
复制代码

服务监控与故障排除

监控服务状态并及时排除故障是系统管理的重要任务。

服务监控
  1. # 查看服务状态
  2. sudo systemctl status service_name
  3. # 查看服务资源使用情况
  4. systemd-cgtop
  5. # 查看服务日志
  6. journalctl -u service_name
  7. # 实时查看服务日志
  8. journalctl -fu service_name
  9. # 查看服务启动时间
  10. systemd-analyze blame
复制代码
  1. # 安装htop
  2. sudo dnf install htop -y
  3. # 使用htop监控系统资源
  4. htop
  5. # 安装nmon
  6. sudo dnf install nmon -y
  7. # 使用nmon监控系统资源
  8. nmon
  9. # 安装glances
  10. sudo dnf install glances -y
  11. # 使用glances监控系统资源
  12. glances
复制代码
  1. # 安装goaccess
  2. sudo dnf install goaccess -y
  3. # 分析Apache/Nginx访问日志
  4. goaccess /var/log/httpd/access_log -c
  5. # 实时分析Apache/Nginx访问日志
  6. goaccess /var/log/httpd/access_log -c --real-time-html
复制代码

故障排除
  1. # 查看服务状态
  2. sudo systemctl status service_name
  3. # 查看服务日志
  4. journalctl -u service_name -n 100
  5. # 查看系统日志
  6. sudo tail -n 100 /var/log/messages
  7. # 检查配置文件语法
  8. sudo httpd -t
  9. sudo nginx -t
  10. sudo named-checkconf
复制代码
  1. # 检查网络连接
  2. ping -c 4 google.com
  3. # 检查路由
  4. traceroute google.com
  5. # 检查DNS解析
  6. nslookup google.com
  7. dig google.com
  8. # 检查端口监听
  9. sudo ss -tulpn | grep :80
  10. # 检查防火墙规则
  11. sudo firewall-cmd --list-all
  12. # 检查SELinux状态
  13. sestatus
  14. # 检查SELinux拒绝日志
  15. sudo grep AVC /var/log/audit/audit.log | tail -n 10
复制代码
  1. # 查看CPU使用率
  2. top -c
  3. # 查看内存使用情况
  4. free -h
  5. # 查看磁盘使用情况
  6. df -h
  7. # 查看磁盘I/O
  8. iostat -xz 1
  9. # 查看网络I/O
  10. sar -n DEV 1
  11. # 查看系统负载
  12. uptime
  13. # 查看进程资源使用情况
  14. ps aux --sort=-%cpu | head -n 10
  15. ps aux --sort=-%mem | head -n 10
复制代码

最佳实践与高级技巧

1. 自动化服务管理

使用Ansible等自动化工具可以简化服务管理:
  1. # 安装Ansible
  2. sudo dnf install ansible -y
  3. # 创建Ansible playbook
  4. mkdir ~/ansible
  5. nano ~/ansible/service_management.yml
复制代码

在service_management.yml中添加以下内容:
  1. ---
  2. - hosts: all
  3.   become: yes
  4.   tasks:
  5.     - name: Install and start Apache
  6.       dnf:
  7.         name: httpd
  8.         state: present
  9.       notify:
  10.         - Start Apache
  11.         
  12.     - name: Configure firewall for Apache
  13.       firewalld:
  14.         service: http
  15.         permanent: yes
  16.         state: enabled
  17.         immediate: yes
  18.         
  19.     - name: Create website directory
  20.       file:
  21.         path: /var/www/html/mywebsite
  22.         state: directory
  23.         mode: '0755'
  24.         
  25.     - name: Deploy website files
  26.       copy:
  27.         src: files/index.html
  28.         dest: /var/www/html/mywebsite/index.html
  29.         
  30.   handlers:
  31.     - name: Start Apache
  32.       systemd:
  33.         name: httpd
  34.         state: started
  35.         enabled: yes
复制代码

运行Ansible playbook:
  1. ansible-playbook -i inventory service_management.yml
复制代码

2. 容器化服务

使用Podman可以轻松容器化服务:
  1. # 安装Podman
  2. sudo dnf install podman -y
  3. # 创建一个简单的Web服务容器
  4. podman run -d --name myweb -p 8080:80 nginx:latest
  5. # 查看容器状态
  6. podman ps
  7. # 查看容器日志
  8. podman logs myweb
  9. # 停止容器
  10. podman stop myweb
  11. # 启动容器
  12. podman start myweb
  13. # 创建自定义容器镜像
  14. mkdir ~/myweb
  15. cd ~/myweb
  16. echo '<h1>Hello from my custom web server</h1>' > index.html
  17. # 创建Dockerfile
  18. nano Dockerfile
复制代码

在Dockerfile中添加以下内容:
  1. FROM nginx:latest
  2. COPY index.html /usr/share/nginx/html/index.html
  3. EXPOSE 80
  4. CMD ["nginx", "-g", "daemon off;"]
复制代码

构建并运行自定义容器:
  1. podman build -t myweb:latest .
  2. podman run -d --name myweb-custom -p 8081:80 myweb:latest
复制代码

3. 高可用性服务

使用Pacemaker和Corosync可以配置高可用性服务:
  1. # 安装高可用性软件包
  2. sudo dnf install pcs pacemaker corosync fence-agents-all -y
  3. # 设置hacluster用户密码
  4. sudo passwd hacluster
  5. # 启动pcsd服务
  6. sudo systemctl start pcsd
  7. sudo systemctl enable pcsd
  8. # 认证节点(在所有节点上执行)
  9. sudo pcs host auth node1 node2 -u hacluster
  10. # 创建集群
  11. sudo pcs cluster setup mycluster node1 node2
  12. sudo pcs cluster start --all
  13. sudo pcs cluster enable --all
  14. # 查看集群状态
  15. sudo pcs status
  16. # 配置STONITH
  17. sudo pcs property set stonith-enabled=false
  18. # 配置资源
  19. sudo pcs resource create VirtualIP IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s
  20. sudo pcs resource create WebServer systemd:httpd op monitor interval=30s
  21. # 设置资源约束
  22. sudo pcs constraint colocation add WebServer with VirtualIP INFINITY
  23. sudo pcs constraint order VirtualIP then WebServer
  24. # 查看资源状态
  25. sudo pcs resource show
复制代码

4. 服务性能优化

使用tuned可以轻松优化系统性能:
  1. # 安装tuned
  2. sudo dnf install tuned -y
  3. # 启动tuned服务
  4. sudo systemctl start tuned
  5. sudo systemctl enable tuned
  6. # 查看可用的配置文件
  7. sudo tuned-adm list
  8. # 应用性能优化配置文件
  9. sudo tuned-adm profile throughput-performance
  10. # 查看当前配置文件
  11. sudo tuned-adm active
复制代码

以Apache HTTP服务器为例:
  1. # 安装Apache
  2. sudo dnf install httpd -y
  3. # 配置MPM(多处理模块)
  4. sudo nano /etc/httpd/conf.modules.d/00-mpm.conf
复制代码

在00-mpm.conf中启用事件MPM:
  1. LoadModule mpm_event_module modules/mod_mpm_event.so
  2. #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  3. #LoadModule mpm_worker_module modules/mod_mpm_worker.so
复制代码

配置Apache性能参数:
  1. sudo nano /etc/httpd/conf/httpd.conf
复制代码

在httpd.conf中添加或修改以下内容:
  1. <IfModule mpm_event_module>
  2.     StartServers             4
  3.     MinSpareThreads         75
  4.     MaxSpareThreads        250
  5.     ThreadsPerChild         25
  6.     MaxRequestWorkers      400
  7.     MaxConnectionsPerChild 10000
  8. </IfModule>
  9. # 启用KeepAlive
  10. KeepAlive On
  11. MaxKeepAliveRequests 100
  12. KeepAliveTimeout 5
  13. # 启用压缩
  14. AddOutputFilterByType DEFLATE text/plain
  15. AddOutputFilterByType DEFLATE text/html
  16. AddOutputFilterByType DEFLATE text/xml
  17. AddOutputFilterByType DEFLATE text/css
  18. AddOutputFilterByType DEFLATE application/xml
  19. AddOutputFilterByType DEFLATE application/xhtml+xml
  20. AddOutputFilterByType DEFLATE application/rss+xml
  21. AddOutputFilterByType DEFLATE application/javascript
  22. AddOutputFilterByType DEFLATE application/x-javascript
  23. # 启用缓存
  24. LoadModule cache_module modules/mod_cache.so
  25. LoadModule cache_disk_module modules/mod_cache_disk.so
  26. <IfModule mod_cache_disk.c>
  27.     CacheRoot /var/cache/httpd/
  28.     CacheEnable disk /
  29.     CacheDirLevels 2
  30.     CacheDirLength 1
  31. </IfModule>
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

总结

本文全面介绍了CentOS Stream中系统服务、网络服务和安全服务的配置与管理方法,从基础入门到高级技巧,涵盖了服务管理的各个方面。通过本文的学习,读者应该能够:

1. 理解CentOS Stream的基本特点和优势
2. 掌握systemd服务管理的基本命令和技巧
3. 能够创建和优化自定义系统服务
4. 熟练配置网络基础设置、防火墙和常用网络服务
5. 掌握SELinux、安全审计和访问控制等安全服务的配置方法
6. 能够监控服务状态并进行故障排除
7. 了解服务管理的最佳实践和高级技巧

随着技术的不断发展,服务管理的方法和工具也在不断演进。作为系统管理员,我们需要持续学习和实践,不断优化服务配置,提高系统的稳定性、安全性和性能。希望本文能够成为读者在CentOS Stream服务配置和管理道路上的有力参考。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则