ssh简介与使用
使用SSH的优点:
1)利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,也能够防止DNS欺骗和IP欺骗。
2)使用SSH传输的数据是经过压缩的,所以可以加快传输的速度 。
但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。
1在客户端(本地)生成密钥对
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录,这里密钥锁码设置为空。完成上述步骤后,在 root 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件,其中id_rsa 为私钥,id_rsapub 为公钥。
如何在linux下配置ssh和sftp使用不同的端口号?
1、两个deamon
要实现ssh和sftp分离,分别监听不同的端口,可以通过创建两个‘/usr/sbin/sshd’后台程序,一个监听22端口(ssh),一个监听20022端口(sftp),为了区分ssh和sftp服务的后台程序,这里将ssh服务的后台程序保持为/usr/sbin/sshd,而将sftp服务的后台程序改为/usr/sbin/sftpd。/usr/sbin/sftpd是/usr/sbin/sshd的一个链接,其内容完全相同(ln-sf/usr/sbin/sshd/usr/sbin/sftpd)。
2、两个service
SLES12使用systemd管理系统服务,ssh服务对应/usr/lib/systemd/system/sshdservice文件,实现sftp服务时可以将/usr/lib/systemd/system/sshdservice复制到/etc/systemd/system/sftpdservice,然后修改sftpdservice文件内容。(使用修改好的sftpdservice文件即可)
3、其他文件系统的ssh服务是通过安装openssh实现的,可以通过rpm-qlopenssh查看该rpm包含哪些文件。总结实现ssh和sftp分离的相关的文件有:
ssh服务sftp服务
/usr/lib/systemd/system/sshdservice/etc/systemd/system/sftpdservice(通过修改/usr/lib/systemd/system/sshdservice文件得到)
/etc/pamd/sshd/etc/pamd/sftpd(通过复制/etc/pamd/sshd文件得到)
/etc/ssh/sshd_config/etc/ssh/sftpd_config(通过复制/etc/ssh/sshd_config文件得到)
/usr/sbin/rcsshd/usr/sbin/rcsftpd(ln-sf/usr/sbin/service/usr/sbin/rcsftpd)
/usr/sbin/sshd/usr/sbin/sftpd(ln-sf/usr/sbin/sshd/usr/sbin/sftpd)
/etc/sysconfig/ssh/etc/sysconfig/sftp(通过修改/etc/sysconfig/ssh文件得到)
至此,我们已经实现了两个服务。
但是,ssh服务和sftp服务并没有真正的分离,此时已然可以通过22号端口使用ssh服务和sftp服务,而新开的20022端口也可以使用ssh服务(ssh-p20022username@serverip)和sftp服务(sftp-oPort=20022username@serverip)。
4、关闭22号端口下的sftp服务编辑/usr/sbin/sshd的配置文件/etc/ssh/sshd_config文件,将Subsystem参数注释掉,然后重启sshd同时也可以设置可访问22号端口的用户白名单:编辑/etc/ssh/sshd_config文件,设置AllowGroups参数(假设设置为AllowGroupssshonly),限制仅AllowGroups组内的用户可通过22号端口ssh登录系统(对于需要ssh登录系统的用户可通过usermod-Asshonlyusername>将其加入到AllowGroups组内)
5、“关闭20022号端口下的ssh服务”sftp作为一个子服务,它的开启依赖于ssh服务,因此不能从本质上关闭ssh服务而只开启sftp服务。可以用以下方式来规避:/usr/sbin/sftpd的配置文件/etc/ssh/sftpd_config中包含Subsystem参数配置(推荐使用Subsystemsftpinternal-sftp-lINFO-fAUTH)/etc/ssh/sftpd_config中包含AllowGroups参数(假设为AllowGroupssftponly),限制仅AllowGroups组内的用户可以访问20022端口将AllowGroups组内的用户的shell改为/bin/false(usermod-s/bin/falseusername>),使AllowGroups组内的用户仅能sftp登录系统(如果一个用户即需要ssh,又需要sftp,则不能将其shell改为/bin/false)
6、用户白名单配置配置之后,需将系统内需要ssh访问系统的用户加入到sshonly组内,需将系统内需要sftp访问系统的用户加入到sftponly组,同时需要ssh和sftp的用户则sshonly和sftponly组都要加入。
7、重启ssh服务和sftp服务,并设置开机启动
servicesshdrestartservicesftpdrestart
linux怎么通过ssh访问另一台服务器?
举例说明: 如用root帐号连接一个IP为1921681102的机器,输入:“ssh1921681102-lroot”, 回车后输入root帐号的密码再回车确认即可。 如果该服务器的ssh端口不是默认的22端口,是自定义的一个如1234,则可在命令后面加参数-p, 如:“ssh1921681102-lroot-p1234”
在Linux系统下使用SSH实现端口映射的方法?
从技术角度来分析,几个要求:
1、从安全方面看,sftp会更安全一点
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh48p1以后都支持chroot,我现在用的是centos63,自带的openssh已经是53p1,足够了。
可以输入:
#ssh-v
来查看openssh的版本,如果低于48p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
#groupaddsftp
2、创建一个sftp用户,名为mysftp
#useradd-gsftp-s/bin/falsemysftp
#passwdmysftp
3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
#mkdir-p/data/sftp/mysftp
#usermod-d/data/sftp/mysftpmysftp
4、配置sshd_config
编辑/etc/ssh/sshd_config
#vim+132/etc/ssh/sshd_config
找到如下这行,并注释掉
subsystemsftp/usr/libexec/openssh/sftp-server
添加如下几行
subsystemsftpinternal-sftp
matchgroupsftp
chrootdirectory/data/sftp/%u
forcecommandinternal-sftp
allowtcpforwardingno
x11forwardingno
解释一下添加的几行的意思
subsystemsftpinternal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
matchgroupsftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
当然,也可以匹配用户
matchusermysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
chrootdirectory/data/sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://wwwibmcom/developerworks/cn/linux/l-cn-chroot/
forcecommandinternal-sftp
指定sftp命令
allowtcpforwardingno
x11forwardingno
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定chroot目录权限
#chownroot:sftp/data/sftp/mysftp
#chmod755/data/sftp/mysftp
错误的目录权限设定会导致在log中出现”fatal:badownershipormodesforchrootdirectoryxxxxxx”的内容
目录的权限设定有两个要点:
1、由chrootdirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由chrootdirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp
2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立sftp用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
#mkdir/data/sftp/mysftp/upload
#chownmysftp:sftp/data/sftp/mysftp/upload
#chmod755/data/sftp/mysftp/upload
7、重启sshd服务
#servicesshdrestart
到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。
如果还是不能在此目录下上传文件,提示没有权限,检查selinux是否关闭,可以使用如下指令关闭selinux
修改/etc/selinux/config文件中的selinux=""为disabled,然后重启。或者
#setenforce0
如何关闭linux下的ssh服务?
chkconfig--level2345sshdon--level指定系统在2345运行级别时,通常在35中开启就行,开启(on)sshd服务,关闭则用(off)临时控制启动停止则用:/etc/rcd/initd/sshdstart|stop|restart
ssh只能登linux吗?
ssh并不是只能登linux操作系统。ssh是unix操作系统用于远程登录的程序。
ssh的开源免费版是openssh,它源于openBSD操作系统。在服务器端启用sshd之后,就可以从远程登录服务器。目前所有类unix的操作系统都操供ssh服务。所以ssh能登录所有类unix操作系统。
推荐一款我正在使用的免费云服务器——阿贝云。
在阿贝云上可以申请免费的虚拟主机和免费的云服务器。具体步骤是:
1打开阿贝云网站注册账号
2实名认证(测试期间只要03元就可以)
3开通免费云服务器
Windows下连接Linux的ssh工具有哪些作为一个Windows操作系统用户,如果想要连接Linux服务器来进行文件之间的传送,那么需要一个Secure Shell软件(简称SSH的)。实际上,SSH是一个网络协议,允许通过网络连接到Linux和Unix服务器。SSH使用公钥加密来认证远程的计算机。通常有多种途径使用SSH,自动连接或是使用密码认证登录。
为大家搜集整理了几种可以连接Linux服务器的工具:
putty
Putty是最有名的SSH和telnet客户端,由Simon Tatham为Windows平台开发。Putty是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持。
Putty易于安装和使用,通常大部分的配置选项不需要修改。用户只需要输入少量基本的参数,就可以开始很简单地建立连接会话。
2Bitvise SSH Client
Bitvise SSH是一款支持SSH和SFTP的Windows客户端。由Bitvise开发和提供专业支持。这款软件工具性能突出,易于安装、便于使用。Bitvise SSH客户端拥有功能丰富的图形界面,通过自动重连功能的内置代理进行动态端口转发。
据了解,Bitvise SSH客户端对个人用户使用是免费的,同时对于在内部的个人商业使用同样免费。
3MobaXterm
MobaXterm是远程计算的终极工具箱。在 单独一个Windows应用里,MobaXterm为程序员、网站管理员、IT管理员及其它用户提供了远程操作一揽子功能。
另外,MobaXterm提供了所有重要的远程网络工具(如SSH、X11、RDP、VNC、FTP、MOSH等),以及Windows 桌面上的Unix命令(bash、ls、cat、sed、grep、awk、rsync等),这些均是由一个开箱即用的单一的便携可执行文件提供,并对个人使用免费。
4DameWare SSH
DameWare SSH是最好的免费SSH客户端。该免费工具是一个终端模拟器,可以从一个易用的控制台建立多个telnet和SSH连接。
将常用的会话保存在 Windows 文件系统中
使用多套保存的证书来轻松登录不同的设备
使用telnet、SSH1和SSH2协议连接计算机和设备
花生壳内网穿透接下来主要通过:注册域名、搭建内网网站服务、发布外网这3步来介绍搭建独立网站。
内网穿透原理:
当信息由局域网向因特网传递时,源地址从专有地址转换为公用地址。由路由器跟踪每个连接上的目的地址和端口。
当数据返回路由器时,通过记录的连接跟踪数据来决定该转发给内部网的哪个主机;如果此时如果有多个公用地址可用,当数据包返回时,则会客户机的端口号可以用来分解数据包。
内网穿透,即NAT(Network Address Translator)穿透,是指计算机在内网(局域网)内使用私有IP地址,在连接外网(互联网)时使用全局IP地址的技术。该技术被普遍使用在有多台主机但只通过一个公有IP地址访问的私有网络中。
举个例子:比如我在实验室配置了一个服务器 Server A,当我在实验室的时候,就可以通过自己的笔记本使用SSH连接因为我和服务器处于一个局域网。
当我回宿舍以后,就没有办法直接使用SSH连接了因为我和服务器不在一个局域网,这个时候就需要进行NAT穿透,让我在宿舍也可以使用SSH连接Server A。
内网穿透工具推荐
目前市面上有很多传统工具,较为知名的开源工具有Ngrok、FRP、 fcn、goProxy,其他还有一些商用的工具比如花生壳和基于等Ngrok和FRP二次开发的商用软件,接下来进行分类归类和整理。
ngrok系列:
Ngrokngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地协助服务端程序测试。
NatappNATAPP是基于ngrok的国内高速内网穿透服务,其中免费版本提供http,https,tcp全隧道穿透,随机域名/TCP端口,不定时强制更换域名/端口,自定义本地端口。
Sunny-NgrokSunny-Ngrok提供免费内网穿透服务,免费服务器支持绑定自定义域名、管理内网服务器,内网web进行演示、本地WEB外网访问、本地开发微信、TCP端口转发。
小米球小米球旨在给程序猿们调试本地的web项目,免去部署环节,它是提供给有需要的同学免费使用的。
echositeechosite同样ngrok二次开发的内网穿透工具,支持多种协议,以前是全部免费的,现在是收费的,不过普通使用的话1元/月,可根据自己的需要去选择。
SSH
配合autossh工具使用,因为autossh会容错。
项目主页:wwwhardingmotdca/autossh/
项目介绍:自动重新启动SSH会话和隧道。SSH工具是一个非常强大的工具,除了能够远程连接,还能建立隧道,转发端口。利用这个特性就可以把外网的端口请求,连接到内网端口。
SSH本身的连接并不稳定,借助工具autossh可以很稳定的建立隧道,因为失败或者其他网络情况下,autossh会自动维护和保持连接。
http://baikebaiducom/view/16184htm
什么是SSH
SSH的英文全称是Secure
Shell
Protocol,安全外壳协议。
通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的”通道”。SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听。最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。SSH是由客户端和服务端的软件组成的。SSH安装容易、使用简单,而且比较常见,一般的Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。
检测到远端XFS服务正在运行中漏洞
临时关闭fsauto服务:
可以通过编辑/etc/inetdconf文件,重新启动Inetd进程来关闭fsauto服务:
1 注释/etc/inetdconf文件中的如下一行:
#fs stream tcp wait nobody /usr/openwin/lib/fsauto fs
2 重新启动inetd进程:
# ps -elf |grep inetd
root 138 1 0 Oct 15 0:00 /usr/sbin/inetd
# kill -1 138
solaris 查找文件 find命令
1 find命令格式
find: [-H | -L] 路径列表 谓词列表
可以使用:man find 查看命令选项。
2 通过文件名查找法:
如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了sshd_config(ssh 服务器 的配置文件)这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令
find / -name sshd_config
这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpdconf这个目标文件名即可。稍等一会系统会在计算机 屏幕 上显示出查找结果列表:
#find / -name sshd_config
/var/sadm/pkg/SUNWsshdr/save/pspool/SUNWsshdr/reloc/etc/ssh/sshd_config
/etc/ssh/sshd_config
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name sshd_config 命令,而可能是你的系统中没有安装ssh 服务器 ,这时只要你安装了ssh服务器,然后再使用find / -name sshd_config 就能找到这个配置文件了。
服务器支持 TLS Client-initiated 重协商攻击 (CVE-2011-1473)
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。
重协商就是大部分TLS连接都以handshake为开始,经过应用数据的交换,最后关闭会话。如果在第一次handshake之后(可能经历了应用数据的交换也可能没有)请求重新协商,就会发起一次新的handshake,对新的安全参数达成一致
关闭命令:ssl renegotiation disable
远端rsh 服务允许部分用户登录。需要禁止rsh 服务 。
方法:
cat /rhosts 查看是否有 + 号,意思是允许所有其他机器访问。 我们主要VI编辑将+去掉即可。(该配置文件,其做用就是控制访问IP)
因为RSH服务不能控制入访因此我们需要禁用内网所有主机的出访服务
禁用RSH出访服务 svcadm disable svc:/network/shell:default
禁用rlogin服务 svcadm disable svc:/network/login:rlogin
检测到远端rsh 服务正在运行中。禁用RSH 服务,改用SSH 代替 。
方法:
1、vi /rhosts 去掉其中的+号
2、vi /etc/default/login
CONSOLE=/dev/console 将这一行#注释掉。
因为RSH服务不能控制入访因此我们需要禁用内网所有主机的出访服务
3、禁用RSH出访服务 svcadm disable svc:/network/shell:default
4、禁用rlogin服务 svcadm disable svc:/network/login:rlogin
SSL 30 POODLE攻击信息泄露漏洞(CVE-2014-3566)
现场次漏洞只存在于服务器,后又发现此漏洞依赖于服务器的5989端口,可以在防火墙禁用此端口或杀掉此进程
方法一 编辑: vi /etc/sysconfig/iptables
添加:-A INPUT -p tcp --dport 5989 -j DROP
-A INPUT -p tcp --sport 5989 -j DROP
重启网络服务:service iptables restart
方法二 根据netstat –tunlp|grep 5989 查找PID ,pwdxPID查看程序路径,如没问题则可以杀死此进程。
POODLE = Padding Oracle On Downgraded Legacy Encryption是最新安全漏洞(CVE-2014-3566)的代号,俗称“贵宾犬”漏洞。 此漏洞是针对 SSL 30中CBC模式加密算法的一种padding oracle攻击,可以让攻击者获取 SSL 通信中的部分信息明文,如果将明文中的重要部分获取了,比如cookie,session,则信息的安全出现了隐患。
从本质上说,这是 SSL 设计上的缺陷, SSL 先认证再加密是不安全的。
修复措施:
禁用sslv3协议
不同的web server不尽相同。这边列举主流的服务器的禁用方式
Nginx服务器:
注意:nginx和openssl套件版本过低可能会导致无法启用新型加密套件和算法,请升级最新版本。
(openssl101+版本支持TLS11和TLS12协议)
ssl_protocols TLSv1 TLSv11 TLSv12;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
apache服务器:
注意:apache和openssl套件版本过低可能会导致无法启用新型加密套件和算法,请升级最新版本。
(openssl101+版本支持TLS11和TLS12协议)
apache2X版本:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL
SSLHonorCipherOrder on
Tomcat服务器:
JDK版本过低也会带来不安全漏洞,请升级JDK为最新版本。升级JDK风险请安按照系统升级风险酌情考虑。
(先备份再配置,低版本的配置后有启动不了的风险,请升级tomcat和jdk版本,JDK17及以上支持TLS12协议)
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="keystore/domainjks" keystorePass="证书密码"
clientAuth="false" sslProtocol="TLS"
ciphers="TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
SSL_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
使用apr的tomcat(windows环境路径请使用“\”,证书文件是for apache压缩包中的三个文件)
maxThreads="150"
protocol="orgapachecoyotehttp11Http11AprProtocol"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLProtocol="all -SSLv2 -SSLv3"
SSLCertificateFile="conf/domiancomcrt"
SSLCertificateKeyFile="conf/domiancomkey"
SSLCertificateChainFile="conf/root_bundlecrt"
SSLCipherSuite="ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL" />
0条评论