重拾 SSH:从基础到安全加固

安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,属于应用层协议。OpenSSH 是最流行的 SSH 实现,它是大量操作系统的默认组件 OpenSSH 套件由以下工具组成: 远程操作使用:ssh, scp 和 sftp 密钥管理:ssh-add, ssh-keysign, ssh-keyscan 和 ssh-keygen 服务端: sshd, sftp-server 和 ssh-agent 使用 SSH 连接服务器 1. 客户端创建公私钥对 密钥类型选择 ed25519 椭圆曲线,它生成的公私钥都要比 RSA 更短,具有较高的安全性和性能 # - a KDF (Key Derivation Function) 的迭代次数 默认:16 ,防止暴力破解 # - t 类型 # Ubuntu 22.04 默认:RSA 3072;Mac OS 默认:ED25519 256 # - C 备注,可以备注上创建年月,定期更换私钥 ssh-keygen -a 256 -t ed25519 -C "Brandon+2025-01@MacBook" # 可以手动指定路径和密码,也可以一路回车 在 ~/.ssh 下会生成公私钥对 . ├── [ 411] id_ed25519 ├── [ 98] id_ed25519.pub # 私钥需要妥善保管,避免暴露 cat id_ed25519 -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW QyNTUxOQAAACCRtC9cJJBFwvVsp4vV058ci8lSHNrf2qcx8W+umtK7OwAAAKArJx9PKycf... -----END OPENSSH PRIVATE KEY----- # .pub 结尾为公钥 cat id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJG0L1wkkEXC9Wyni9XTnxyLIt/zHxb66a0rs7 Brandon+2025-01@MacBook 2. 在服务器上添加公钥 将上面客户端生成的公钥 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJG0L1wkkEXC9Wyni9XTnxyLIt/zHxb66a0rs7 Brandon+2025-01@MacBook 加入到服务端 ~/.ssh/authorized_keys,每个私钥占据一行 ...

January 24, 2025

重拾 iptables

iptables 是一个常看常忘的命令,本文试图从应用的角度理解它 iptables 是运行在用户空间的应用软件,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发 一些常用的场景 1. 禁止 ip 访问后端 IP 在 192.168.64.6 上增加规则: # -A INPUT: 将规则添加到 INPUT 链,表示处理进入的流量 # -s 192.168.64.7: 指定源 IP 地址,即要阻止的 IP # -d 192.168.64.6: 指定目标 IP 地址,即后端 IP # -j DROP: 表示丢弃匹配的流量 iptables -A INPUT -s 192.168.64.7 -d 192.168.64.6 -j DROP # -j REJECT: 丢弃流量的同时向源 IP 返回一个拒绝消息。请求方直接提示:Connection refused iptables -A INPUT -s 192.168.64.7 -d 192.168.64.6 -j REJECT # -p 指定协议类型为 TCP # --dport 指定目标端口 iptables -A INPUT -s 192.168.64.7 -d 192.168.64.6 -p tcp --dport 80 -j REJECT # 看当前的 iptables 规则 # -L "list",列出当前的规则 # -n "numeric",即使用数字 IP 地址和端口号而不是主机名和服务名 # -v "verbose",显示详细信息 iptables -L -n -v # 列出带编号的规则 iptables -L --line-numbers # 删除 INPUT 链中的第 1 条规则 # 注意!删除成功后序号会改变,需要重新查询序号 iptables -D INPUT 1 # 清除 INPUT 链所有规则 iptables -F INPUT # 清除当前活跃的表(未指定默认是 filter 表)的所有 iptables 规则 # 等同于 iptables -F -t filter iptables -F 2. 端口转发 默认情况下,Linux 系统不会转发目的 IP 地址不是本地网络的 IPv4 数据包。这是出于安全考虑,防止系统意外成为恶意流量的转发表。要启用 IPv4 数据包转发功能,需要修改内核参数 net.ipv4.ip_forward ...

December 27, 2024

快速重拾 Tmux

Tmux 是一个 Linux (Mac OS也支持)下的终端复用器,相较于 Screen 更为强大,但快捷键和操作逻辑也更复杂,一段时间不用,就很容易忘记相关的命令和快捷键。本文旨在通过一个简单的场景,快速重拾 Tmux Tmux 通常用来保持会话(session),如果我们通过 ssh 连接服务器处理打包等的耗时操作,那么网络波动可能会导致连接断开,使得操作失败,使用 Tmux 会话会被保持,任务依然会继续,我们可以随时恢复会话 Tmux 另一个常用的功能是分屏,快速地创建 Window 和 Pane,方便地在不同的任务间穿梭 修改配置 vim ~/.tmux.conf # 将默认修饰键(prefix) ctrl + b 修改:ctrl + a set -g prefix C-a unbind C-b bind C-a send-prefix # 激活鼠标模式 set-option -g -q mouse on # 修改分屏快捷键 # 左右分屏 bind h split-window -h # 上下分屏 bind v split-window -v # 可以取消默认的分屏快捷键映射 # unbind '"' # unbind % # 将 tmux 的复制模式键绑定设置为 vi 模式 setw -g mode-keys vi # windows 和 panes 的序号从 1 开始 set -g base-index 1 setw -g pane-base-index 1 重新加载 Tmux 配置文件 ...

April 13, 2023