Openssl隧道
原理
ssh客户端与ssh服务端建立ssh协议连接,将数据封装进ssh协议中进行通信,由ssh服务端代理执行ssh客户端的数据
ssh隧道监听在开启隧道的端口两端,通过端口传输数据
创建隧道
本地端口转发
命令
ssh -L localport:remotehost:remotehostport server
-fN 关闭登录 #建立隧道后默认会登录到对端 f是后台执行,N不开启远程shell
#localport 本地端口 remotehost 目的主机 remotehostport 目的主机目标端口
server ssh服务端,客户端通过端口将命令发送给服务端,由服务端代理执行
commad localport 通过隧道传输命令
iptables -A INPUT -s 10.0.0.8 -j REJECT #拒绝10.0.0.8访问
curl 127.0.0.1:9527 #例,假设本地端口9527
将命令传输给隧道监听端口
远程端口转发
命令
ssh -R serverport:remotehost:remotehostport server
-g #开启网关功能,默认关闭,修改/etc/ssh/sshd_config
GatewayPorts no 改为yes
创建远程端口转发的命令执行在客户端上, server通过远程端口将命令传递
给客户端,由客户端代理执行
动态端口转发
命令
ssh -D localport server -fNg
#客户端将命令通过本机端口传给服务端,服务端代理执行并自行判断调用的端口
例
自代理
命令
ssh -gfND localport localhost
#将客户端与服务端合并,即设置server和host为同一台主机
例
ssh -gfND 9527 10.0.0.18
curl --socks5 10.0.0.18:9527 http://10.0.0.28 #socks5 设置代理
ssh配置文件
客户端
/etc/ssh/ssh_config
服务端
/etc/ssh/sshd_config
ssh服务设置
Port
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes #默认ubuntu不允许root远程ssh登录
strictModes yes #检查.ssh/文件的所有者,权限等
MaxAuthTries6 #最大连接数不能超过设置值的一半
Maxsessions10 #同一个连接最大会话
PubkeyAuthentication yes #基于key验证
PermitEmptyPasswords no #空密码连接
PasswordAuthentication yes #基于用户名和密码连接
GatewayPorts no
clientAliveInterval 10 #单位:秒
clientAlivecountMax 3 #默认3
useDNs yes #提高速度可改为no
GSSAP工Authentication yes #提高速度可改为no
Maxstartups #未认证连接最大值,默认值10
Banner /path/file #登录前提示信息
在配置文件中写入可以控制用户登录
AllowUsers user1 user2 user3
DenyUsersuser1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2
Ubuntu 启用root账户ssh远程登录
vim/etc/ssh/sshd_config #修改sshd服务配置文件
PermitRootLogin prohibit-password 注释掉此行
PermitRootLogin yes #修改为yes
systemctl restart sshd #重启服务
ssh连接优化
关闭项
Use DNS no
GSSAPIAuthentication no
systemctl restart sshd #重启后生效
日志文件
/var/log/secure目录下存放的日志文件中记录ssh’登录信息,包括失败原因
sshfs
将远程主机的文件系统挂载至本机挂载点(centso8目前不支持)
语法格式
sshfs remotehost:/文件或目录 本机挂载点
pssh
实现ssh非交互式操作
命令
sshpass [option] command parameters
-f filename #后跟保存密码的文件名,密码是文件内容的第一行。
-e #将环境变量SSHPASS作为密码,多用于脚本中变量
-p password #后跟明文密码,然后直接登录远程服务器
pssh工具
格式
pssh [OPTIONS]command [...]
将ssh_config配置为StrictHostKeyChecking no
-H 主机字符串,内容格式”[user@]host[:port]”
-h file 主机列表文件,内容格式”[user@]host[: port]”
-A 手动输入密码模式
-i 每个服务器内部处理信息输出
-l 登录使用的用户名
-p 并发的线程数【可选】
-o 输出的文件目录【可选】
-e 错误输出文件【可选】
-t TIMEOUT超时时间设置,O无限制【可选】
-O SSH的选项
-P 打印出服务器返回信息
-v 详细模式
--version:查看版本
pscp.pssh
可以将本机文件复制到多台远程主机,实现批量执行
命令
pscp.pssh -H host localfile 目标目录
pscp.pssh -h host.txt localfile 目标目录
pslurp
将远程主机文件下载至本机
命令
pslurp -H host -L local remotefile newfile
#将host文件下载到本地local目录下,更改名字为newfile
pslurp -h host.txt -L local remotefile newfile
#多台复制会在local目录下生成对应host的目录,下面存更名为newfile
dropbear工具
轻量级安全连接工具,需要编译安装
aide查看完整性
由功能由aide包提供
配置文件
/etc/aide.conf #配置对哪些包进行检测
例
R=p+i+n+u+g+s+m+c+md5
#定义监控项权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值
NORMAL = R+rmd60+sha256
/data/test.txtR
/bin/ps R+a
/usr/bin/crontab R+a
/etcPERMS
!/etc/mtab #"!”表示忽略这个文件的检查
初始化aide库
/usr/local/bin/aide -i 或 --init
生成检查数据库:
cd /var/lib/aide
mv aide.db.new.gz aide.db.gz #需要将生成文件的new去掉使用
检测
aide -c 或--check
更新数据库
aide -u l --update