新手勇闯网络安全 | Linux安全基础(三)

0 阅读8分钟

前两篇掌握了 Linux 命令行和权限机制,这一篇进入系统运维与安全排查的实战层。进程是黑客的藏身之处,端口是攻击的入口,防火墙是最后一道防线。学会查看进程、分析端口、配置防火墙,你就能从"会用命令"进阶到"能排查入侵、能加固系统"。


一、进程和服务管理

1.1 进程管理基础

查看进程

命令说明
ps查看当前用户进程
ps aux查看所有进程(含 CPU、内存占用)
pstree以树形结构展示进程间父子关系
top动态实时查看进程(系统自带)
htoptop 增强版,界面更友好,支持鼠标操作(需手动安装)

渗透视角:ps aux 是应急响应的第一步,恶意进程常伪装成系统服务名。注意内核线程名带 [],不要误杀。

进程控制

命令说明
kill PID优雅终止进程(发送 SIGTERM 信号)
kill -9 PID强制终止进程(发送 SIGKILL 信号,进程无法忽略)
pkill 进程名按名称批量终止进程
killall 进程名按名称终止所有匹配进程

重要提示:按名称匹配容易误杀同名进程。建议先执行 pgrep 进程名 列出所有匹配的 PID,确认无误后再执行终止操作。

优先级调整

  • 优先级数值范围:-20 ~ 19,数值越小优先级越高
  • 默认优先级为 0
  • -20(最高)| 19(最低)
# 为新进程设置优先级
nice -n 10 sleep 100

# 修改已运行进程的优先级
renice -5 -p 1234    # 提高优先级(需 root)
renice 10 -p 1234    # 降低优先级

1.2 systemd 服务管理

现代 Linux 系统中,systemctl 是与 systemd 交互、管理后台服务的核心命令。

命令说明
systemctl start 服务名启动服务
systemctl stop 服务名停止服务
systemctl restart 服务名重启服务
systemctl reload 服务名不停止服务,重新加载配置
systemctl status 服务名查看服务运行状态
systemctl enable 服务名设置开机自启
systemctl disable 服务名禁止开机自启
systemctl list-units --type=service列出所有服务
systemctl --failed列出失败的服务

服务单元文件路径

  • 系统服务:/usr/lib/systemd/system/
  • 用户自定义:/etc/systemd/system/
  • 修改后需执行 systemctl daemon-reload 重新加载

1.3 实战演示:管理 SSH 服务

# CentOS / RHEL 系统
systemctl status sshd      # 查看状态
systemctl start sshd       # 启动
systemctl stop sshd        # 停止
systemctl enable sshd      # 开机自启

# Kali / Ubuntu 系统
systemctl status ssh       # 注意服务名是 ssh 不是 sshd

SSH 连接不上的排查三步

  1. 检查 SSH 服务状态:systemctl status sshd
  2. 检查 SSH 配置文件默认端口是否为 22:vim /etc/ssh/sshd_config
  3. 检查防火墙是否拦截 22 端口

二、网络配置与端口监听

2.1 网络配置命令

IP 地址配置

操作现代命令(推荐)传统命令(需 net-tools)
查看 IPip addr showifconfig
临时配置 IPip addr add IP/掩码 dev 网卡名ifconfig 网卡名 IP netmask 掩码
删除 IPip addr del IP/掩码 dev 网卡名-
启用/禁用网卡ip link set 网卡名 up/downifconfig 网卡名 up/down

路由配置

# 查看路由表
ip route show
route -n

# 添加默认网关
ip route add default via 网关IP

# 添加静态路由
ip route add 目标网络 via 网关IP dev 网卡名

DNS 配置

# 查看当前 DNS 配置
cat /etc/resolv.conf

# 临时修改(推荐追加,避免覆盖)
cp /etc/resolv.conf /etc/resolv.conf.bak
echo "nameserver DNS服务器IP" >> /etc/resolv.conf

# 永久修改(CentOS / RHEL)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 添加:DNS1=DNS服务器IP

疑难杂症:如果 /etc/resolv.conf 无法修改,用 lsattr /etc/resolv.conf 查看文件特殊属性。输出中的 i 表示文件被设置为不可变,任何用户(包括 root)都无法修改。执行 chattr -i /etc/resolv.conf 移除不可变属性后即可正常编辑。

2.2 端口监听分析

命令说明
ss -tulnp查看所有监听端口(现代推荐,更快)
netstat -tulnp查看所有监听端口(传统命令)
ss -tulnp | grep 端口号查看特定端口监听状态
ss -tup查看已建立连接的端口
ss -an查看所有网络连接
netstat -an | grep :端口号 | wc -l统计特定端口连接数

渗透视角:ss -tulnp 是排查后门端口和 C2 通信的关键命令。需要 root 权限才能看到进程名。

2.3 实战演示:分析 Web 服务器端口

# 启动 Web 服务
systemctl start httpd       # CentOS / RHEL
systemctl start apache2     # Kali / Ubuntu

# 查看 80 端口监听
ss -tulnp | grep :80

# 查看 80 端口网络连接状态
netstat -an | grep :80

三、firewalld / ufw 防火墙

3.1 firewalld(CentOS / RHEL)

基本管理

# 查看防火墙状态
systemctl status firewalld

# 启动 / 停止 / 重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld

# 启用 / 禁用开机自启
systemctl enable firewalld
systemctl disable firewalld

# 立刻启动并设置开机自启
systemctl enable firewalld --now

Zone(区域)概念

firewalld 将网络划分为不同的区域,每个区域有不同的信任级别:

Zone描述默认规则
drop丢弃所有流入包只允许流出
block拒绝流入包返回 icmp-host-prohibited
public公共区域(默认)允许 ssh、dhcpv6-client
external外部网络允许 ssh
dmz非军事区允许 ssh
work工作区域允许 ssh、dhcpv6-client、ipp-client
home家庭区域允许 ssh、dhcpv6-client、samba-client、ipp-client
internal内部网络同 home
trusted信任区域允许所有连接

防火墙区域示意图

Zone 常用操作

# 查看默认 zone
firewall-cmd --get-default-zone

# 设置默认 zone
firewall-cmd --set-default-zone=public

# 查看所有 zone
firewall-cmd --get-zones

# 查看指定 zone 的规则
firewall-cmd --zone=public --list-all

# 把网卡绑定到指定 zone
firewall-cmd --zone=public --change-interface=eth0 --permanent

规则配置

  • 临时规则:立即生效,重启 firewalld 后失效
  • 永久规则:加 --permanent,必须执行 --reload 才生效
# 添加端口(临时)
firewall-cmd --zone=public --add-port=80/tcp

# 添加端口(永久)
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 添加服务(临时 / 永久)
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=http --permanent

# 移除端口 / 服务
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-service=http --permanent

# 重新加载规则(使永久规则生效)
firewall-cmd --reload

# 查看所有永久规则
firewall-cmd --list-all --permanent

富规则(Rich Rules)——防火墙高级规则,用于复杂流量控制:

# 允许特定 IP 访问 SSH
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'

# 拒绝特定 IP 访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" drop'

# 查看富规则
firewall-cmd --list-rich-rules

3.2 ufw(Kali / Ubuntu)

基本管理

# 查看状态
ufw status

# 启用 / 禁用
ufw enable
ufw disable

# 重新加载
ufw reload

重要提示:ufw 默认处于禁用状态,所有配置的规则只有在执行 ufw enable 后才会真正生效并拦截流量。

规则配置

# 允许端口
ufw allow 22
ufw allow 80/tcp

# 允许服务
ufw allow ssh
ufw allow http

# 拒绝端口
ufw deny 23

# 允许特定 IP
ufw allow from 192.168.1.100

# 允许特定 IP 访问特定端口
ufw allow from 192.168.1.100 to any port 22

# 查看添加的规则
ufw show added

# 删除规则
ufw delete allow 22

ufw 的 allow/deny 规则默认立即生效且永久保存,无需额外参数。

3.3 firewalld vs ufw 差异对比

功能CentOS / RHEL (firewalld)Kali / Ubuntu (ufw)
服务名称firewalldufw
配置文件/etc/firewalld//etc/ufw/
zone 概念有(9 个 zone)
临时规则firewall-cmd --add-xxxufw allow/deny
永久规则--permanent 参数ufw 命令默认永久
重新加载firewall-cmd --reloadufw reload
服务管理systemctl 管理 firewalld 服务ufw enable/disable
默认状态默认启用默认禁用
图形界面firewall-configgufw(需安装)
复杂规则支持富规则(rich rules)有限支持

3.4 systemctl 差异对比

功能CentOS / RHELKali / Ubuntu
服务名后缀.service 可省略.service 可省略
SSH 服务名sshdssh
防火墙服务firewalldufw(实际是 iptables 前端)
网络服务NetworkManagersystemd-networkd 或 NetworkManager

3.5 修改 SSH 端口的"保命"操作流程

修改 SSH 端口是最容易把自己锁在服务器外的操作,必须按以下顺序执行:

CentOS / RHEL 示例

  1. 防火墙放行新端口:firewall-cmd --zone=public --add-port=2222/tcp --permanent
  2. 重新加载防火墙:firewall-cmd --reload
  3. 修改 SELinux 策略:setenforce 0
  4. 修改 SSH 配置:vim /etc/ssh/sshd_config,将 Port 22 改为 Port 2222
  5. 重启 SSH 服务:systemctl restart sshd
  6. 验证端口监听:ss -tulnp | grep 2222
  7. 不要关闭当前会话,新开终端测试新端口连接

Kali / Ubuntu 示例

  1. 防火墙放行新端口:ufw allow 2222/tcp
  2. 修改 SSH 配置:vim /etc/ssh/sshd_config,将 Port 22 改为 Port 2222
  3. 重启 SSH 服务:systemctl restart ssh
  4. 验证端口监听:ss -tulnp | grep 2222

核心原则:先放行端口,再改配置;改完不关闭当前连接,新开窗口测试。


四、知识小结

知识模块核心内容一句话速记
查看进程ps aux、pstree、top/htop应急响应第一步
终止进程kill PID、kill -9 强制、pkill/killall 按名先 pgrep 确认再杀
进程优先级nice/renice,-20~19,越小越高抢 CPU 资源用
systemctlstart/stop/restart/reload/status/enable服务管理万能命令
SSH 服务名CentOS 用 sshd,Ubuntu 用 ssh记清别输错
网络配置ip addr、ip route、/etc/resolv.conf现代命令替代 ifconfig
端口监听ss -tulnp(推荐)、netstat -tulnp后门排查关键命令
firewalldzone 区域、--permanent 永久、--reload 生效加 permanent 别忘 reload
ufw默认禁用,allow/deny 默认永久配置后记得 enable
改 SSH 端口先放行端口,再改配置,不关闭当前会话保命操作流程