SSH服务、SUDO命令以及一些小应用(修改版1.0)

SSH服务

本质是实现安全的远程管理,基于DH算法做密钥交换,基于RSA或DSA实现身份验证

CentOS系统默认使用的是openssh软件安装ssh服务

socket:套接字 用来标识应用的唯一地址


SSH—Client

配置文件 /etc/ssh/ssh_config

选项:StrictHostKeyChecking no  可在首次登录时不显示检查信息

客户端命令格式

ssh [USER@]IP_SERVER [CMD] 或者ssh [-l USER] IP_SERVER [CMD]

若服务器的ssh端口号变化,则需要增加“-p PORT”选项,或者是在配置文件 /etc/ssh/ssh_config中,将端口号改为相同

客户端会记录连接过的服务器IP信息,存放在 /root/.ssh/known_host 文件中(普通用户是在家目录下)


SSH服务安全实现原理

用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 “家目录下/.ssh/know_hosts”中,下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接


SSH服务登录验证基于key验证,指定主机指定用户不需要输入目标主机口令

假设A基于key验证去登录B

第一步:A生成公、私钥对

ssh-keygen [-t 加密算法] [-P‘口令’] [-f 路径]           

(需要注意的是不同的加密算法对应生成的公私钥文件名不同,默认为rsa算法)

默认存放路径:

私钥:“家目录下/.ssh/id_rsa”文件中

公钥:“家目录下/.ssh/id_rsa.pub”文件中

第二步:A将生成的公钥文件传给B的用户家目录

ssh-copy-id -i “公钥文件” IP_SERVER

此时B在“家目录下/.ssh/”目录下,会生成authorized_keys

若想要修改密钥口令,使用如下命令:

ssh-keygen -p -f 家目录下/.ssh/id_rsa

在密钥有口令时,为了不想在连接远程服务端时输入密钥口令,可进行代理:在本主机上执行如下命令:

1.ssh-agent bash

 2.ssh-add


基于ssh服务传输文件的一些命令:

scp [options] FILE USER@IP:目标路径

常用options:

-r 拷贝目录递归文件

-p 保留原文件属性

-P PORT  指明远程主机监听端口

rsync只复制不同文件

rsync [options] /Dir USER@IP:目标路径         表示将目录和目录下文件都拷贝

rsync [options] /Dir/ USER@IP:目标路径    表示只对目录下文件拷贝

常用options:

-r 拷贝目录递归文件

-v 显示详细过程

-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)



SSH端口转发:

下列情况基于假设B、C在同一公司内,A处于外部,公司对外设置防火墙

本地转发:(访问固定服务端)

    A:client     B:ssh-server     C:各类服务器

假设C此时为Telnet服务器,A要对C进行访问

A执行如下命令:

1.ssh -L PORT:IP_C:23 IP_B  

A通过SSH加密转发连接至B上,建立桥梁,加上选项“-Nf”可后台启用

2.telnet 127.0.0.1 PORT

可以输入C里普通用户名和密码登录上去(此时C上显示的是B为telnet连接者)

(PORT是A上没有使用的端口号,23是Telnet服务的端口号)

此时数据的传输方式则是如下:

Data <—> A的PORT <--> A的随机端口 <--> B的22端口 <--> B的随机端口 <--> C的23端口

 

远程转发:(访问固定服务端)

    A:远程主机       B:client     C:各类服务器

假设C此时为telnet-server,A要对C进行访问

B执行如下命令:

ssh -R PORT: IP_C:23 IP_A

B通过SSH加密转发连接至A,建立桥梁

(port是A上没有使用的端口号,23是Telnet服务的端口号)

A执行如下命令:

telnet 127.0.0.1 PORT

则可以输入C里普通用户名和密码登录上去(此时C上显示的B为telnet连接者)

此时数据的传输方式则是如下:

Data <—> A的PORT <--> A的22端口<--> B的随机端口1 <--> B的随机端口2 <--> C的23端口



翻墙实验(SSH动态端口转发)(通过代理服务器访问外网)

    X:Client     Y:Proxy      Z:Internet

Client上执行:

    1. X通过SSH加密转发,与Y建立桥梁

ssh -D PORT USER@IP_Y

    (PORT是Client上没有使用的端口号)

2.设置代理

    a.命令行方式:curl --socks5 127.0.0.1:PORT IP_Z

    b.还可以使用图形化界面:

进入虚拟机自带firefox浏览器

设置选项中选择“advanced”中的“network”

对connection进行设置

在socks中输入127.0.0.1以及PORT并选择sock v5版

延伸:

若在X 上执行

ssh -gD PORT IP_Y

则其他的一些客户端,通过设定X的IP为socket,指定PORT ,也可以连接Z



SSH-Server配置

配置文件 /etc/ssh/sshd_config

常用选项:

默认值                                                     建议值

Port 22                                                   建议修改为其他端口

ListenAddress 0.0.0.0                       可修改为指定IP

UseDNS yes                                        修改为no提高远程连接速度

GSSAPIAuthentication yes             修改为no提高远程连接速度

ClientAliveInterval                             非活动连接时间,可指定时间

ClientAliveCountMax                       设定非活动连接时间发生次数,超过次数自动断开

Banner none                                      可增加FILE路径,开启后,ssh连接时会显示FILE里的内容

还有一些可增加选项:

AllowUsers USER_NAME              只允许指定用户连接

AllowGroups GROUP_NAME        只允许指定组连接



Dropbear也是一款可以提供ssh协议的软件,需要编译安装

客户端工具

dbclient -p PORT USER@IP 通过服务端指定端口连接

服务端启动服务:

dropbearkey -t rsa -f /PATH/dropbear_rsa_host_key (启动服务前需要生成指定的key文件,放置在编译指定的配置文件下)

dropbear -p PORT   后台运行(加上“-F -E”选项,可前台运行)



AIDE 入侵检测工具,有对应软件包aide

若需要对一些指定文件进行监控,可在配置文件/etc/aide.conf中,定义相关监控规则,然后执行如下操作来查看文件的变化信息:

1.aide  --init

    初始化默认的AIDE的库,将自定义的监控的文件初始属性信息存放在数据库中,在/var/lib/aide/目录下,名称为aide.db.new.gz

2.若需要进行检测查看,则需要:

修改库文件名为:aide.db. gz

执行命令:aide  --check

在检测结束后,想要更新数据库,则可以执行如下命令:

aide  --init或者aide  --update



SUDO

程序包是sudo,主要作用是授权一些指定用户执行一些制定权限的命令,从而实现用户权限委派

配置文件/etc/sudoers 中可设置指定用户执行指定的命令操作

visudo=vi /etc/sudoers  可直接对配置文件进行编辑,并可检查修改的语法

为了便于观察,可通过 “export  EDITOR=vim”,使visudo有颜色提示

基本的配置格式:

USER   IP_Address=(代表的USER)   [NOPASSWD:]COMMAND

表示授权用户在某个指定IP的主机上代表某个用户执行某命令,若是IP_ADDRESS写为 ALL,则表示所有主机

除授权USER外,还可授权指定组“%GROUP”

visudo  -c  也可检查配置文件/etc/sudoers的语法

除了直接在主配置文件中修改,还可以在/etc/sudoers.d/目录下创建文件,将授权内容按照标准格式写进去,或者直接使用命令进行创建:

visudo  -f /etc/sudoers.d/FILE       (为保证安全建议文件权限440)

在授权结束后,被授权用户登入后若是需要执行被授权命令,需要执行如下格式:

sudo -u “代表的USER” COMMAND  

(若是代表root,可省略-u选项后续还需要输入自己的密码口令,若在授权时使用NOPASSWD,则不需要)

注意:此时COMMAND必须与被授权时的COMMAND内容完全匹配,包括 / 符号,并且若是此时授权的“COMMAND”是“sudoedit”,则被授权用户也可修改所有授权相关的配置文件

所有的授权用户在执行过授权命令后,会生成以用户名作为文件名的信息文件时间戳存放在/var/db/sudo/lectured/目录下

授权用户也可通过sudo命令的相关选项,查看和定义一些内容:

也可定义如下四种别名进行调用使用:

User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias

需要注意的是定义的别名命名格式必须为:“[A-Z]([A-Z][0-9])*”大写字母加数字,列如NAME1,然后直接调用别名名称即可



TCP_Wrappers工具

工作在OSI模型的第四层的TCP协议中

只有在应用软件调用了 libwrap.so 此函数库,才可以通过TCP_Wrappers实现访问控制

通过在配置文件 /etc/hosts.allow(允许)和 /etc/hosts.deny(拒绝)设置来定义,设置后立即生效,基本格式如下:

Daemon_list@Host_IP:Client_IP1  Client_IP2 [options]………

其中Daemon_list:主机相关连接服务的二进制程序文件名,Host_IP:指定主机服务的端口对应的IP

当两配置文件出现冲突时,/etc/hosts.allow生效

其中options有如下:

 

举例如下:

 

 

表示通过自定义的内容来拒绝访问,并显示



PAM 认证机制(Pluggabale Authentication Modules)

本质是提供平台,将有认证功能的程序通过接口连接使得被认证的软件可以进行调用,通过模块的方式进行调用

PAM模块的存放路径:/lib64/security/*.so

每个模块对应的子配置文件存放在:/etc/security/*.conf (属于全局性)

每个程序也会有单独的针对其所调用的模块的配置文件,存放在:/eic/pam.d/APP_NAME

其中/eic/pam.d/APP_NAME配置文件的基本格式:

TYPE(类型)Control(控制)Module-PATH(调用模块)Argument(参数)

Control的简单实现方式:

(需要注意的是修改PAM配置文件是立即生效的)



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值