知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“服务器”的源代码
←
服务器
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
服务器(Server)是一种计算机,为计算机网络中其他设备(称为客户端)提供服务。 ==服务器类型== ==操作系统== ==服务器软件== {| class="wikitable" style="width: 100%; !名称 !编程语言 !描述 |- |[[Nginx]] |C |是异步框架的web服务器软件,主要要被用作 反向代理 和 负载均衡器,它也常用于 HTTP 服务器。 |- |[[Apache]] |C |是Apache软件基金会的一个开放源码的网页服务器软件。 |- |[[Squid ]] |C++ |是一个开源的web缓存代理服务器软件。主要用于缓存 Web 内容、控制访问权限、提高性能、减少带宽消耗。 |- |} ==安全设置== 以[[Ubuntu]]系统为例。 ===更新系统和软件=== 确保系统和所有软件都是最新的。安全更新修复了许多已知的漏洞。 <syntaxhighlight lang="bash" > # 只更新已安装软件的补丁而不涉及系统级的变化。 sudo apt update && sudo apt upgrade # 更新更激进,它可能会升级系统中的核心组件,或者删除一些不再需要的包。 # 生产环境中,可能会不小心删除一些重要的包,导致系统不稳定。 sudo apt dist-upgrade </syntaxhighlight> ===配置防火墙 (UFW)=== UFW (Uncomplicated Firewall) 是 Ubuntu 中的防火墙工具。你可以使用它来限制进入和退出的网络流量。云厂商上也需要开放或关闭对应端口。 <syntaxhighlight lang="bash" > # UFW 在大多数基于 Debian 的系统(如 Ubuntu)中是预安装的 # sudo apt update # sudo apt install ufw # 允许SSH, # 防止未配置,远程连接断开 # 或指定具体端口:sudo ufw allow 22 sudo ufw allow ssh # 允许 HTTP(端口80)和 HTTPS(端口443) sudo ufw allow http sudo ufw allow https # 允许特定端口(例如8080) sudo ufw allow 8080 # 限制 SSH 连接(每分钟尝试连接次数限制) sudo ufw limit ssh # 默认拒绝所有入站流量 # 默认允许所有出站流量 # 这样可以确保除非显式允许某些流量,所有的入站连接都会被拒绝。 sudo ufw default deny incoming sudo ufw default allow outgoing # 查看详细的防火墙规则 sudo ufw status verbose # 查看防火墙状态 sudo ufw status # 卡其防火墙 sudo ufw enable # 禁用 UFW # sudo ufw disable # 重启防火墙 # sudo ufw reload </syntaxhighlight> ===用户和登录配置=== 创建一个用户,并加入sudo组。 <syntaxhighlight lang="bash" > # 添加一个新用户(假设用户名是 adminuser,你可以换成自己喜欢的名称) # 按提示设置密码,并填写用户信息(可以留空)。 sudo adduser adminuser # 将新用户添加到 sudo 组 sudo usermod -aG sudo adminuser </syntaxhighlight> 本地电脑生成[[SSH]]的生成公钥和私钥 <syntaxhighlight lang="bash"> ssh-keygen # Enter file in which to save the key # 私钥保存位置,直接回车默认位置和名称,也可以保存其他文件: C:\Users\用户名/.ssh/computer_1 # Enter passphrase (empty for no passphrase): # 询问是否设置钥保护密码,可以输入密码或回车不设置密码,如果设置登录时需要提供私钥和私钥保护密码。 </syntaxhighlight> 服务器导入公钥 <syntaxhighlight lang="python" > # Linux 服务器在当前用户目录下创建.ssh目录 mkdir .ssh # Linux 导入示例,本地电脑操作,将本地生成的公钥id_rsa.pub复制到服务器authorized_keys scp C:\Users\username/.ssh/id_rsa.pub user2@46.100.162.172:/home/user2/.ssh/authorized_keys </syntaxhighlight> 禁用 root 账户的 SSH 远程登录,并使用其他具有 sudo 权限的用户。 <syntaxhighlight lang="bash" > # 使用vim或nano编辑文件 sudo vim /etc/ssh/sshd_config # 禁用root的SSH登录,防止黑客直接猜测 root 密码。 PermitRootLogin no # 默认的 SSH 端口是 22,修改为其他端口可以减少被暴力破解的风险。 # 如修改为 2222,注意云厂商后台也要开放改端口的TCP协议。 Port 2222 # 禁用基于密码的认证方式 PasswordAuthentication no # 允许公钥的认证方式 PubkeyAuthentication yes # 修改完成后保存,按ESC键输入:wq 保存。 # 重启 SSH 服务,有些为:sudo systemctl restart ssh sudo systemctl restart sshd </syntaxhighlight> ===云服务商设置=== ==检查脚本== ===简单命令=== ====安全检查==== <syntaxhighlight lang="bash" > #!/bin/bash # 检查系统中UID为0的用户(root-like用户) awk -F: '$3 == 0 {print $1}' /etc/passwd # 检查/etc/sudoers文件中的敏感配置 grep -vE '^#' /etc/sudoers # 检查/etc/passwd文件的权限 ls -l /etc/passwd # 检查是否允许root用户通过SSH登录 grep -i "^PermitRootLogin" /etc/ssh/sshd_config # 检查SSH是否开启密码认证 grep -i "^PasswordAuthentication" /etc/ssh/sshd_config # 检查SSH是否仅允许密钥认证 grep -i "^PubkeyAuthentication" /etc/ssh/sshd_config # 检查当前开放的端口 ss -tuln # 检查当前运行的服务 systemctl list-units --type=service --state=running # 检查系统中失败的登录尝试 grep "Failed password" /var/log/auth.log # 检查是否有SSH登录记录 grep "sshd" /var/log/auth.log # 检查可用的安全更新(Ubuntu/Debian) apt update && apt list --upgradable # 检查系统是否有弱密码(需要john工具) john --list=passwords /etc/shadow # 检查密码长度是否过短 awk -F: '{print $2}' /etc/shadow | while read pass; do if [[ $(echo "$pass" | wc -c) -lt 6 ]]; then echo "Weak password detected!" fi done # 使用AIDE工具检查文件完整性 aide --check # 检查防火墙状态(ufw) ufw status # 检查iptables防火墙规则 iptables -L # 检查系统中已设置的定时任务 crontab -l ls -l /etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.monthly # 检查/etc/ssh/sshd_config文件权限 ls -l /etc/ssh/sshd_config # 检查/etc/passwd文件权限 ls -l /etc/passwd # 检查fail2ban是否已安装 dpkg -l | grep fail2ban # 检查SELinux是否启用 sestatus # 检查AppArmor是否启用 aa-status # 检查文件系统挂载选项是否安全(noexec, nosuid, nodev等) mount | grep -E "noexec|nosuid|nodev" </syntaxhighlight> ===简单脚本=== ==资源==
返回至“
服务器
”。