插件窝 干货文章 如何增强Linux和Unix服务器的安全性

如何增强Linux和Unix服务器的安全性

log 安全 SSH 策略 143    来源:    2025-04-23

增强Linux/Unix服务器安全性需要多层次防御策略,以下是从系统配置到持续监控的完整方案:

一、基础加固措施 1. 最小化安装原则 - 仅安装必要软件包:yum --setopt=install_weak_deps=False install package(CentOS/RHEL) - 删除无用组件:apt purge --auto-remove package(Debian/Ubuntu)

  1. 账户安全强化

- 强制复杂密码策略: pam_cracklib.so: minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 - 配置SSH证书登录: bash ssh-keygen -t ed25519 -a 100 ssh-copy-id -i ~/.ssh/id_ed25519 user@server

二、网络防护层 1. 防火墙精细化控制(以nftables为例):

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;

    # 允许已建立连接
    ct state established,related accept

    # SSH仅允许特定IP段
    ip saddr {192.168.1.0/24} tcp dport 22 accept

    # 允许ICMP限速
    icmp type echo-request limit rate 5/second accept
  }
}
  1. 服务隐藏技术:

- 修改SSH默认端口并启用端口敲门: ```bash # /etc/knockd.conf [options] logfile = /var/log/knockd.log

[openSSH] sequence = 7000,8000,9000 seq_timeout = 15 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22222 -j ACCEPT ```

三、内核级防护 1. 启用SELinux/AppArmor:

# SELinux策略生成
audit2allow -a -M mypolicy < /var/log/audit/audit.log
semodule -i mypolicy.pp
  1. 内核参数加固(/etc/sysctl.conf):
# 禁止IP转发和源路由
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0

# 内存保护
vm.mmap_min_addr = 65536
kernel.kptr_restrict = 2

四、高级安全模块 1. 系统调用过滤(seccomp):

// Chrome示例策略
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["ptrace","fork"],
      "action": "SCMP_ACT_ERRNO"
    }
  ]
}
  1. eBPF实时监控:
// 检测可疑进程行为
SEC("tracepoint/syscalls/sys_enter_execve")
int bpf_prog(struct syscalls_enter_execve_args *ctx) {
  char comm[TASK_COMM_LEN];
  bpf_get_current_comm(&comm, sizeof(comm));
  if (comm == "exploit_attempt") {
    bpf_send_signal(9);  // 发送SIGKILL
  }
  return 0;
}

五、持续安全监控 1. 自动化审计工具链:

# 使用Osquery进行配置检查
osqueryi --config-path /etc/osquery/osquery.conf \
  --logger_path /var/log/osquery \
  --query "SELECT * FROM processes WHERE on_disk = 0;"
  1. 机器学习异常检测(Python示例):
from sklearn.ensemble import IsolationForest
import pandas as pd

# 分析SSH登录模式
log_data = pd.read_syslog()
clf = IsolationForest(contamination=0.01)
clf.fit(log_data[['src_ip','time','auth_method']])
anomalies = clf.predict(log_data)

六、应急响应准备 1. 内存取证工具包:

# 使用LiME获取内存快照
insmod lime-$(uname -r).ko "path=/mnt/evidence/memdump.lime format=lime"
vol.py -f memdump.lime linux_pslist
  1. 自动化入侵报告脚本:
#!/usr/bin/env python3
import subprocess
from datetime import datetime

def collect_artifacts():
    return {
        "date": datetime.now().isoformat(),
        "network": subprocess.getoutput("ss -tulnp"),
        "processes": subprocess.getoutput("ps auxf"),
        "auth_logs": subprocess.getoutput("grep 'fail' /var/log/auth.log")
    }

实施建议: 1. 使用Ansible等工具实现配置自动化:

- name: Harden SSH configuration
  lineinfile:
    path: /etc/ssh/sshd_config
    regexp: "^{{ item.regex }}"
    line: "{{ item.line }}"
  with_items:
    - { regex: '^#PermitRootLogin', line: 'PermitRootLogin no' }
    - { regex: '^X11Forwarding', line: 'X11Forwarding no' }
  1. 定期进行渗透测试:
# 使用OpenSCAP合规扫描
oscap xccdf eval --profile stig \
  --results scan-results.xml \
  --report scan-report.html \
  /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml

关键维护要点: - 每周审计sudo权限:visudo -c && grep -r 'NOPASSWD' /etc/sudoers* - 实时监控文件完整性:aide --check - 保持安全更新:dnf updateinfo list sec (RHEL) 或 apt-listchanges --security (Debian)

通过组合这些技术手段,配合定期的安全评估和员工培训,可构建企业级的安全防护体系。注意根据实际业务需求调整安全策略的严格程度。