ssh进阶

ssh
   sshfs文件传输
   ssh隧道转发
   dropbearDropbear————轻量级即ssh验证机制
安全验证相关
   AIDE-入侵检测
   TCP_Wrappers-IP访问控制
   sudo-用户身份管理
   PAM-认证机制

回顾:

1、修改当前时间 #date  月 日 时 分 年.秒
date +%m %d %H %M %Y.%S


2、read A B C <<< "1 2 3" 批量赋值给变量     

3、通过awk监听lastb中连接超过十次的主机并放入iptables中
[root@CentOS8 ~]#lastb|awk '/ssh:notty/{ip[$3]++}END{for(i in ip){if(ip[i] >10)system("iptables -A INPUT -s "i" -j REJECT")}}'

4、文件权限
inode里面会包含文件的基本属性,当然包含文件的时间戳。所以,vi在进行修改文件过后,文件的时间戳会改变。当然inode会改变了

5、
pgrep -lu user  查看指定用户进程和PID
OpenSSL管理

服务器端:sshd, 配置文件: /etc/ssh/sshd_config
常用参数:

Port 端口
ListenAddress ip 监听ip
LoginGraceTime 2m 登陆超时时长
PermitRootLogin yes root是否远程登录
StrictModes yes 检查.ssh/文件的所有者,权限等
MaxAuthTries 6 最大验证次数6/2
MaxSessions 10 同一个连接最大会话
PubkeyAuthentication yes 是否允许公钥连接
PermitEmptyPasswords no 空密码
PasswordAuthentication yes 是否允许密码验证
GatewayPorts no
ClientAliveInterval 单位:秒 客户端活动间隔时间
ClientAliveCountMax 默认3 客户端最大存活数
UseDNS yes 是否应该查找远程主机名,并检查已解析的主机名
对于远程IP地址映射回相同的IP地址。
GSSAPIAuthentication yes 提高速度可改为no GSSAPI真实性验证
MaxStartups 未认证连接最大值,默认值10
Banner /path/file

限制可登录用户的办法:

AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups

ssh最佳实践

建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志

sshfs
通过SSH安全地与远程文件交互 >yum install sshfs rpm -ql fuse-sshfs sshfs 192.168.146.128:/data /mnt 远程目录挂载到本机实现映射文件功能

ssh-key存放目录

[root@CentOS6]#ll -d /root/.ssh/
drwx------. 2 root root 4096 Nov 13 20:12 /root/.ssh/   默认存放路径
-rw-------. 1 root root  394 Nov 13 20:09 authorized_keys 生成的公钥对应key
-rw-------. 1 root root 1675 Nov 13 20:09 id_rsa  私钥文件
-rw-r--r--. 1 root root  394 Nov 13 20:09 id_rsa.pub 公钥文件
-rw-r--r--. 1 root root 1319 Nov 13 20:12 known_hosts 曾连接主机记录

实验: 基于同一密钥对,多台主机共用,实现key认证

ssh-keygen A主机生成密钥对
ssh-copy-id 127.0.0.1 添加公钥给自己
ssh-copy-id B 传递公钥
ssh-copy-id C 传递公钥
scp -rp /root/.ssh/* B:/root/.ssh/ 把最终生成的文件传递给两位两个主机
scp -rp /root/.ssh/* C:/root/.ssh/ 检测最终拷贝权限是否一致
ssh隧道转发

在这里插入图片描述

本地转发:

-L localport:remotehost:remotehostport sshserver
选项:
-f 后台启用
-N 不打开远程shell,处于等待状态
-g 启用网关功能
示例
ssh –L 9527:telnetsrv:23 -Nfg sshsrv
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
data <–> localhost:9527 <–> localhost:XXXXX<–> sshsrv:22 <–> sshsrv:YYYYY <–> telnetsrv:23

远程端口转发
要确保ssh server是公网ip

远程转发:
在这里插入图片描述

-R sshserverport:remotehost:remotehostport sshserver
示例:
[root@sshserver ~]#ssh –R 9527:telnetsrv:25 –Nf client
[root@sshserver ~]#ssh -R 9527:192.168.146.128:25 192.168.146.135 -fN
[root@client ~]#telnet 127.0.0.1 9527
让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
Data <–> sshsrv:9527 <–> sshsrv:22 <–> localhost:XXXXX <–> localhost:YYYYY <–> telnetsrv:23

在这里插入图片描述
补充: 邮件服务默认监听在25号端口,包postfix

systemctl start postfix 默认监听本机localhost 127.0.0.1:25
修改配置文件/etc/postfix/main.cf
inet_interfaces = all
systemc restart postfix

动态端口转发
在这里插入图片描述

#iptables -A INPUT -s 192.168.146.135 -j REJECT
[root@client ~]#ssh -D 1080 192.168.146.129 -fN 客户端访问
root@192.168.146.129’s password:
[root@client ~]#curl --socks5 127.0.0.1:1080 192.168.146.128
wello to goole.com
[root@client ~]#curl --socks5 127.0.0.1:1080 192.168.146.128
wello to goole.com
[root@client ~]#curl 192.168.146.128
curl: (7) couldn’t connect to host
[root@client ~]#killall ssh windos访问
[root@CentOS8 ~]#iptables -A INPUT -s 192.168.146.1 -j REJECT
[root@client ~]#ssh -D 1080 192.168.146.129 -fNg
root@192.168.146.129’s password:
[root@client ~]#curl --socks5 127.0.0.1:1080 192.168.146.128
wello to goole.com

X协议转发

所有图形化应用程序都是X客户程序
•能够通过tcp/ip连接远程X服务器
•数据没有加密机,但是它通过ssh连接隧道安全进行
ssh -X user@remotehost gedit
remotehost主机上的gedit工具,将会显示在本机的X服务器上
传输的数据将通过ssh连接加密

dropbearDropbear

是一个相对较小的SSH服务器和客户端。

/apps/dropbear/
├── bin
│   ├── dbclient
│   ├── dropbearconvert
│   ├── dropbearkey
│   ├── dropbear_rsa_host_key
│   └── scp
├── sbin
│   └── dropbear
└── share
    └── man
        ├── man1
        │   ├── dbclient.1
        │   ├── dropbearconvert.1
        │   └── dropbearkey.1
        └── man8
            └── dropbear.8
./configure --prefix=/apps/dropbear --exec-prefix=/etc/dropbear
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvertscp"
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvertscp" install
echo 'PATH=/apps/dropbear/bin:/apps/dropbear/sbin:$PATH' > /etc/profile.d/dropbear.sh
./etc/profile.d/dropbear.sh
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key

dropbear -FEp 9527 客户端前提监听
[89385] Nov 09 21:10:01 Failed loading /etc/dropbear/dropbear_dss_host_key
[89385] Nov 09 21:10:01 Failed loading /etc/dropbear/dropbear_ecdsa_host_key
[89385] Nov 09 21:10:01 Not backgrounding

[root@client ~]#ssh 192.168.146.129 -p 9527 远程ssh主机连接dropbear_server
root@192.168.146.129's password: 

[root@sshserver ~]#dbclient 192.168.146.135 服务端连接其他ssh主机
root@192.168.146.135's password: 
Unable to get valid context for root
Last login: Sat Nov  9 09:04:44 2019 from 192.168.146.1
My hostname is client

scp默认无法使用,因为默认文件执行不同创建对应软连接即可
scp /etc/fstab 192.168.146.135:/data
/usr/bin/dbclient: No such file or directory
lost connection

ln -s /apps/dropbear/bin/dbclient /usr/bin
[root@sshserver ~]#scp /etc/fstab 192.168.146.135:/data 
root@192.168.146.135's password: 
AIDE(Advanced Intrusion Detection Environment高级入侵检测环境)

是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了
在这里插入图片描述

yum install aide
配置文件 /etc/aide.conf
!表示忽略指定文件或文件夹检查
R=p+i+n+u+g+s+m+c+md5 权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值

初始化默认的AIDE的库:

/usr/local/bin/aide --init
生成检查数据库(建议初始数据库存放到安全的地方)
cd /var/lib/aide
mv aide.db.new.gz aide.db.gz
检测: /usr/local/bin/aide --check
更新数据库
aide --update

sudo

在这里插入图片描述

授权用户在指定主机上运行默写命令,并提供日志记录,使用时间戳文件,维持用户默认存活期5min,使用与普通用户使用,su命令切换身份适合管理员使用
visudo -c 检查语法
visudo -f /etc/sudoers.d/test
默认sudo首次输入密码后5分钟内不用再次输入

保存时间戳文件目录 #ll /run/sudo/ts
日志文件 /var/log/secure
配置文件 /etc/sudoers /etc/shdoers.d/file
支持通配符glob

配置文件规则有两类
1、别名定义:不是必须的
2、授权规则:必须的

用户 登入主机=(代表用户) 命令
user host=(runas) command
运行者 通过哪些主机 以哪个用户身份运行 运行的命令

User_Alias NETADMIN= netuser1,netuser2
Cmnd_Alias NETCMD= /usr/sbin/ip
NETADMIN ALL=(root) NETCMD
root    ALL=(ALL)       ALL
student ALL=(root)  /sbin/pidof,/sbin/ifconfig
#hjq     ALL=(root)      /usr/bin/yum install vsftpd
hjq     ALL=(ALL)    /usr/sbin/,!/usr/sbin/useradd
## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       NOPASSWD:ALL

sudo -l 列出可使用和不可用的命令

查看指定目录下的所有文件,不涉及到其他文件或目录

TCP_Wrappers

(使用简单场景中的ip访问控制)
帮助文档 man 5 hosts_opetions
工作在第四层(传输层)的TCP协议
对有状态连接的特定服务进行安全检测并实现访问控制
以库文件形式实现
某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的
判断服务程序是否能够由tcp_wrapper进行访问控制的方法:

ldd /PATH/TO/PROGRAM|grep libwrap.so
strings PATH/TO/PROGRAM|grep libwrap.so

配置文件 /etc/hosts.allow /etc/hosts.deny(默认允许吧 )
centos8不再支持
基本语法

daemon_list@host: client_list [ :options :option… ]
@对某个ip生效,如某主机有多个ip
使用逗号或空格分隔客户端列表
centos7net/prefixlen
centos6ip/mask

EXCEPT用法

/etc/hosts.deny
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
禁止整个172.16网段host连接,排除172.16.100.0网段都可可以连接,再排除172.16.100.1主机不能连接到本机

可以在allow中定义deny
sshd: 192.168.146.135 deny

在deny中定义allow
sshd: 192.168.146.129 allow

spawn 启动一个外部程序完成执行的操作
twist 实际动作是拒绝访问,使用指定操作替换当前服务,标准输出和ERROR发送到客户端,默认至/dev/null

测试工具:

tcpdmatch [-d] daemon[@host] client
-d 测试当前目录下的hosts.allow和hosts.deny

pam:一种认证框架,自身不做认证

模块文件目录: /lib64/security/*.so
环境相关设置: /etc/security/
主配置文件 /etc/pam.conf 默认不存在
为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
注意:如/etc/pam.d存在,/etc/pam.conf将失效

pam认证认证顺序
server --> PAM(配置文件) --> pam_*.so

PAM认证过程
PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
在这里插入图片描述
查看帮助文档 man -k pam_

pam_limits.so模块
ulimit 临时测试用,仅对当前登录终端有限
/etc/security/limits.conf 配置文件 永久生效

模块:pam_securetty.so
功能:只允许root用户在/etc/securetty列出的安全终端上登陆

模块:pam_securetty.so
功能:只允许root用户在/etc/securetty列出的安全终端上登陆

模块:pam_limits.so
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值