Day 6-Linux系统管理(下) 目录前言一、系统引导二、systemd - System Manager三、防火墙1.Iptalbes2.filewald四、Apache五、SELinux总结前言本文是一份面向 Linux 系统管理员和运维工程师的实战操作手册旨在系统性地梳理和记录 Linux 系统运维中的几个核心管理领域系统引导修复、systemd 服务管理、防火墙配置、Apache Web 服务器管理以及SELinux 安全增强。文章内容基于 CentOS 7 环境通过大量命令行操作截图和分步讲解详细演示了从 GRUB2 引导故障恢复、使用 systemctl 管理服务生命周期到配置 iptables 和 firewalld 防火墙规则再到部署 Apache 虚拟主机和配置 SELinux 安全策略的全过程。无论您是正在应对紧急的生产环境故障还是希望夯实 Linux 系统管理基础本文提供的步骤和原理剖析都将为您提供清晰的指引和可靠的参考。每个章节都包含实际操作的命令示例和效果截图确保读者能够按图索骥快速掌握关键运维技能。一、系统引导1.Grub2手动引导记录rm-f/boot/grub2/grub.cfg指定 boot 分区setroothd0,msdos1加载正常内核linux16 /vmlinuz-3.10.0-1160.el7.x86_64root/dev/mapper/centos-root rord.lvm.lvcentos/rootrd.lvm.lvcentos/swap rhgb quietLANGen_US.UTF-8net.ifnames0加载内存镜像initrd16 /initramfs-3.10.0-1160.el7.x86_64.img完成后boot执行2.若不小心删掉boot步骤 1进入系统救援模式进入按住fnf2按住shift把光驱调上作为引导项完成后保存退出完成后保存退出按下图继续操作重装内核升级修复引导yuminstall-ykernel此处我安装失败但查看IP网关正常解决方法如下# 1. 修改 DNS 为公共 DNSechonameserver 223.5.5.5/etc/resolv.confechonameserver 223.6.6.6/etc/resolv.conf# 2. 测试pingwww.baidu.com安装grub2-pcyuminstallgrub2-pc把 GRUB 引导写入硬盘 MBRgrub2-install /dev/sda生成 grub.cfg 引导菜单配置grub2-mkconfig-o/boot/grub2/grub.cfg完成后两次exit退出恢复正常引导按上述操作将Hard Drive往上调完成二、systemd - System Managersystemd 是一个初始化系统用于引导用户空间并管理用户进程systemctl[--all]#查询所有单元的状态以验证系统启动情况systemctl--typeservice#仅查询服务单元的状态systemctl is-active sshd;systemctl is-enabled sshd systemctl list-unit-files[--typeservice]#查看所有单元的启用和禁用设置启动和停止服务systemctl status sshd.service[check out PID]systemctl stop sshd.service systemctl start sshd.service[check out PID]systemctl restart sshd.service[check out PID]systemctl reload sshd.service[now, check out PID]管理开机自启服务systemctlenablesshd.service systemctl disable sshd.servicesystemctl mask firewalld#屏蔽服务管理服务 - 单元文件维护者文件 :/usr/lib/systemd/system/管理员文件 :/etc/systemd/system//etc 下的单元文件将优先于 /usr 下的单元文件。三、防火墙特性firewalldiptables管理方式动态运行时修改立即生效静态需重启服务生效配置存储/usr/lib/firewalld/和/etc/firewalld/XML 文件/etc/sysconfig/iptables区域zones支持如 public, trusted, internal 等不支持热更新✅ 支持不中断现有连接❌ 需重启服务图形工具firewall-configsystem-config-firewall底层实现仍然使用iptables/nftablesNetFilter直接使用 NetFilter1.Iptalbesnetfilter内核空间真正防火墙底层框架在内核处理数据包iptables用户空间工具/sbin/iptables只是命令行桥梁把你写的规则下发给 netfilter 生效。按数据包处理优先级raw → mangle → nat → filterLinux系统下从网络数据包到最终文件读写的完整访问控制链条:client- iptables- tcpwrap(libwrap.so.0)-service-filesystem(rwx)-acl-selinux安装Iptablsyuminstall-yiptables iptables-services激活服务systemctlenable--nowiptables/etc/sysconfig/iptables文件是 Iptables 防火墙规则的持久化存储文件。它是 Iptables 规则的“配置文件”/“持久化文件”系统重启或服务重启后会自动从这个文件里读取规则并加载到内核中生效。-L 列出链或所有链的规则 iptables -L-n 以数字形式显示不解析DNS/协议名 iptables -nL-v 显示更详细信息包计数、字节数等 iptables -L -v–line-numbers 显示规则行号方便删除时定位 iptables -L --line-numbers-t 指定表名默认filter iptables -t nat -L -n追加规则末尾iptables-AINPUT-ptcp-jACCEPT#默认filter插入规则开头iptables-IINPUT-pudp-jACCEPT插入规则到指定位置iptables-IINPUT4-picmp-jACCEPT删除规则iptables-DINPUT3常见匹配条件协议匹配# 禁止所有ICMPpingiptables-AINPUT-picmp-jDROP端口匹配22端口iptables-AINPUT-s192.168.48.145-ptcp--dport22-jREJECT80端口修改规则例ICMP类型匹配进入/etc/proc/sys/net/ipv4/自己不能ping别人但是别人可以ping自己:iptables-IOUTPUT-oens32-picmp --icmp-type8-jREJECT# ping发出的请求禁止掉了iptables-IOUTPUT-oens32-picmp --icmp-type0-jREJECT#不给回应icmp包拒绝任何ping的协议iptables-IINPUT-picmp-jDROP拓展匹配iptables-AINPUT-ptcp-mmultiport--dports22,80,443-s192.168.48.145-jREJECT通过网卡接口iptables-IINPUT-iens33-jDROP#谁也连不上了保存和删除规则删除:iptables-DINPUT3#通过查看行号指定行号删除保存:iptables-save/etc/sysconfig/iptables2.filewaldsystemctlenable--nowfirewalld.service# 查看状态sudofirewall-cmd--state# 查看当前区域sudofirewall-cmd --get-active-zones# 查看已开放的服务sudofirewall-cmd --list-services# 放行服务永久sudofirewall-cmd--permanent--add-servicehttpsudofirewall-cmd--reload# 放行端口sudofirewall-cmd--permanent--add-port8080/tcpsudofirewall-cmd--reloadfirewall-cmd --get-default-zone# 查看默认区域四、Apache1.开启服务systemctl start httpd systemctlenablehttpd firewall-cmd--permanent--add-servicehttp firewall-cmd--reload默认发布目录cd/var/www/htmlvimindex.html#新建默认发布页面修改端口为8080vim/etc/httpd/conf/httpd.conf systemctl restart httpdnetstat-antlp|grep:8080由于前面防火墙放行了8080所以此处8080端口允许访问2.设置主机访问控制vim/etc/httpd/conf/httpd.conf systemctl restart httpd.serviceDirectory/var/www/html/adminAllowOverride None Order deny,allow Require all granted allow from192.168.48.145 deny from all/Directory3.用户认证Directory/var/www/html/adminAllowOverride None Order deny,allow Require all granted allow from192.168.48.145 deny from all AuthUserFile /etc/httpd/conf/htpasswd AuthName “Input user name and password” AuthType basic Require user admin/Directoryhtpasswd-c/etc/httpd/conf/htpasswd admin#再次创建需去掉-c命令不然会覆盖cat/etc/httpd/conf/htpasswd也可改成网段访问。4.Apache虚拟主机创建虚拟主机文件名可自取但必须是.conf文件vim/etc/httpd/conf.d/vhost.confvirtualhost *:80servername www.linux.org documentroot /www/www.linux.org customloglogs/www.linux.org.logcombined/virtualhostdirectory /www/www.linux.orgrequire all granted/directory客户端server2做解析基于域名vim/etc/httpd/conf.d/default.confVirtualHost _default_:80DocumentRoot/var/www/html/VirtualHost启用认证virtualhost *:80servername www.linux.org documentroot /www/www.linux.org customloglogs/www.linux.org.logcombined/virtualhostdirectory /www/www.linux.orgAllowOverride None AuthUserFile /etc/httpd/conf/htpasswd AuthNamePlease input admin passwordAuthType basic Require user admin/directory以此类推改文件添加解析virtualhost *:80servername www.westos.org documentroot /www/www.westos.org customloglogs/www.westos.org.logcombined/virtualhostdirectory /www/www.westos.orgAllowOverride None AuthUserFile /etc/httpd/conf/htpasswd AuthNamePlease input admin passwordAuthType basic Require user lb/directory五、SELinux1.SELinux强制生效完成后重启vim/etc/sysconfig/selinux2.开放权限3.永久修改selinux contextyuminstall-ypolicycoreutils-python-2.5-34.el7.x86_64永久更改semanage fcontext-a-thttpd_sys_content_t/www(/.*)?刷新安全上下文不然修改不生效restorecon-vvFR/www4.CGI通用网关接口程序创建 CGI programcd/var/www/cgi-bin/vimtest.cgi#!/bin/bashechoContent-type:text/htmlechols-l/chmodax test.cgi5.SELinux booleans管理 SELinux booleangetsebool-asetseboolhttpd_enable_cgioff Access the website setseboolhttpd_enable_cgion Access the website again永久保持Use-Pto persist SELinux boolean总结通过本文的实践与讲解我们深入探讨了 Linux 系统运维中五个至关重要的模块系统引导 (GRUB2)掌握了在引导配置文件丢失或/boot分区损坏时如何进入救援模式手动指定引导参数、重装内核并重新安装 GRUB 到 MBR从而恢复系统的正常启动流程。关键在于理解grub2-install和grub2-mkconfig命令的作用以及救援环境下的网络与包管理配置。systemd 系统与服务管理作为现代 Linux 系统的初始化和管理核心systemd 提供了统一的systemctl命令集来查询系统状态、管理服务启动、停止、重启、重载、设置服务开机自启以及通过mask/unmask彻底禁用服务。同时我们明确了单元文件的存放路径/usr/lib/systemd/system/与/etc/systemd/system/及其优先级。防火墙管理深入比较了iptables与firewalld两种防火墙解决方案。通过 iptables我们学习了规则链INPUT, OUTPUT, FORWARD、表filter, nat, mangle, raw的概念并实践了规则的追加、插入、删除以及基于协议、端口、IP地址和ICMP类型的匹配条件。而 firewalld 则以其动态管理、区域zone概念和更友好的命令行工具firewall-cmd提供了另一种选择特别适合需要频繁更新规则且不希望中断现有连接的环境。Apache Web 服务器学习了 Apache 的基本配置与管理包括服务启停、端口修改、默认发布目录设置、基于 IP 和主机的访问控制、用户认证配置以及虚拟主机的部署。通过实际案例演示了如何配置基于域名的虚拟主机并启用用户认证为 Web 服务的安全部署提供了完整方案。SELinux 安全增强理解了 SELinux 的强制访问控制机制掌握了如何查看和修改文件安全上下文使用semanage永久修改上下文以及通过setsebool管理 SELinux 布尔值来灵活控制服务权限。特别针对 Apache 的 CGI 程序访问问题演示了完整的 SELinux 权限配置流程。这些技能共同构成了 Linux 系统稳定运行、网络安全防护和 Web 服务部署的基石。建议读者在理解原理的基础上于测试环境中反复演练从而在真实运维场景中做到心中有数应对自如。

本月热点