问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ssh如何实现自定义的ssh协议?

发布网友 发布时间:2022-04-21 16:08

我来回答

2个回答

热心网友 时间:2022-06-09 11:02

高级SSH安全技巧在这篇文章中我将为你展示一些简单的技巧,帮助你提高你的SSH服务的安全。SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它进行每一次改动后都需要重新启动SSH服务,以便让改动生效。1、修改SSH监听端口默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:Port22修改端口号并重新启动SSH服务:/etc/init.d/sshrestart2、仅允许SSH协议版本2有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:Protocol2,1修改为Protocol23、仅允许特定的用户通过SSH登陆你不一个允许root用户通过SSH登陆,因为这是一个巨大的不必要的安全风险,如果一个攻击者获得root权限登陆到你的系统,相对他获得一个普通用户权限能造成更大的破坏,配置SSH服务器不允许root用户通过SSH登陆,查找下面这样的行:PermitRootLoginyes将yes修改为no,然后重新启动服务。现在,如果你想使用特权用户,你可以先以其他用户登陆,然后再转换到root。创建一个没有实际权限的虚拟用户是一个明智的选择,用这个用户登陆SSH,即使这个用户遭到破解也不会引起什么破坏,当创建这个用户时,确保它属于wheel组,因为那样你才能切换到特权用户。如果你想让一列用户都能通过SSH登陆,你可以在sshd_config文件中指定它们,例如:我想让用户anze、dasa、kimy能通过SSH登陆,在sshd_config文件的末尾我添加下面这样一行:AllowUsersanzedasakimy4、创建一个自定义SSHbanner如果你想让任何连接到你SSH服务的用户看到一条特殊的消息,你可以创建一个自定义SSHbanner,只需要创建一个文本文件(我的是/etc/ssh-banner.txt),然后输入你想的任何文本消息,如:*ThisisaprivateSSHservice.Youarenotsupposedtobehere.**Pleaseleaveimmediately.*编辑好后,保存这个文件,在sshd_config中查找下面这样一行:#Banner/etc/issue.net取消掉注释【将#去掉】,然后将路径修改为你自定义的SSHbanner文本文件。5、使用DSA公钥认证代替使用用户名和密码对SSH进行认证,你可以使用DSA公钥进行认证,注意你既可以使用登陆名,也可以使用DSA公钥进行认证,使用DSA公钥认证可以预防你的系统遭受字典攻击,因为你不需要用登陆名和密码登陆SSH服务,而是需要一对DSA密钥,一个公钥和一个私钥,在你本地机器上保存私钥,将公钥放在服务器上。当你发起一个SSH登陆会话时,服务器检查密钥,如果它们匹配的话,你就可以直接进入shell,如果它们不匹配,你的连接将被自动断开。在本例中的私人计算机叫‘工作站1’,服务器叫‘服务器1’。在两个机器上我有相同的home目录,如果服务器和客户端上的home目录不同将不能工作,实现,你需要在你的私人计算机上创建一对密钥,命令:~$ssh-keygen-tdsa,它将要求你为私钥输入一个密语,但是你可以保留为空,因为这不是一个推荐的做法。密钥对创建好了:你的私钥在~/.ssh/id_dsa,你的公钥在.ssh/id_dsa.pub。接下来,拷贝~/.ssh/id_dsa.pub中的内容到‘服务器1’的~/.ssh/authorized_keys文件中,~/.ssh/id_dsa.pub的内容看起来象下面这样:~$cat.ssh/id_dsa.pubssh-dssAAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwMWcJYDusNGAIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604ZTdrLZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7nM7aKxIBPDrQwKNyPQAAAIEAq+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5puFe7eplmr6t7Ljl7JdkfEA5De0k3WDs9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0AMRC7ngIe6btaNIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rbWOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP34fST1amc0YNeBp28EQi0xPEFUD0IXzZtXtHVLziA1/NuzY=anze@station1.example.com如果文件~/.ssh/authorized_keys已经存在,请将上面的内容附加在该文件的后面。剩下的只是给该文件设置正确的权限了:~$chmod600~/.ssh/authorized_keys现在,配置sshd_config文件使用DSA密钥认证,确保你将下面三行前的注释去掉了:RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile%h/.ssh/authorized_keys重新启动服务,如果你的配置没有错误,现在你就可以SSH到你的服务器,而且无需任何交互动作(如输入用户名和密码)就直接进入你的home目录了。如果你只想使用DSA认证登陆,确保你在sshd_config中取消掉注释并修改PasswordAuthentication这一行,将yes改为no:PasswordAuthenticationno任何在服务器上没有公钥的人试图连接到你的SSH服务,它就被拒绝,给它显示如下一个拒绝提示信息:Permissiondenied(publickey).6、使用TCPwrappers仅允许指定的主机连接如果你想在你的网络上只允许特定的主机才能连接到你的SSH服务,但又不想使用或弄乱你的iptables配置,那这个方法非常有用,你可以使用TCPwrappers。在这个例子中对sshd进行TCP包裹,我将创建一条规则允许本地子网192.168.1.0/24和远程193.180.177.13的自己连接到我的SSH服务。默认情况下,TCPwrappers首先在/etc/hosts.deny中查找看主机是否允许访问该服务,接下来,TCPwrappers查找/etc/hosts.allow看是否有规则允许该主机服务指定的服务,我将在/etc/hosts.deny中创建一个规则,如下:sshd:ALL这意味着默认情况下所有主机被拒绝访问SSH服务,这是应该的,否则所有主机都能访问SSH服务,因为TCPwrappers首先在hosts.deny中查找,如果这里没有关于阻止SSH服务的规则,任何主机都可以连接。接下来,在/etc/hosts.allow中创建一个规则允许指定的主机使用SSH服务:sshd:192.168.1193.180.177.13现在,只有来自192.168.1.0/24和193.180.177.13的主机能够访问SSH服务了,其他主机在连接时还没有到登陆提示符时就被断开了,并收到错误提示,如下:ssh_exchange_identification:Connectionclosedbyremotehost7、使用iptables允许特定的主机连接作为TCPwrappers的一个代替品,你可以使用iptables来*SSH访问(但可以同时使用这个两个的),这里有一个简单的例子,指出了如何允许一个特定的主机连接到你的SSH服务:~#iptables-AINPUT-ptcp-mstate--stateNEW--source193.180.177.13--dport22-jACCEPT并确保没有其他的主机可以访问SSH服务:~#iptables-AINPUT-ptcp--dport22-jDROP保存你的新规则,你的任务就完成了,规则是立即生效的8、SSH时间锁定技巧你可以使用不同的iptables参数来*到SSH服务的连接,让其在一个特定的时间范围内可以连接,其他时间不能连接。你可以在下面的任何例子中使用/second、/minute、/hour或/day开关。第一个例子,如果一个用户输入了错误的密码,锁定一分钟内不允许在访问SSH服务,这样每个用户在一分钟内只能尝试一次登陆:~#iptables-AINPUT-ptcp-mstate--syn--stateNEW--dport22-mlimit--limit1/minute--limit-burst1-jACCEPT~#iptables-AINPUT-ptcp-mstate--syn--stateNEW--dport22-jDROP第二个例子,设置iptables只允许主机193.180.177.13连接到SSH服务,在尝试三次失败登陆后,iptables允许该主机每分钟尝试一次登陆:~#iptables-AINPUT-ptcp-s193.180.177.13-mstate--syn--stateNEW--dport22-mlimit--limit1/minute--limit-burst1-jACCEPT~#iptables-AINPUT-ptcp-s193.180.177.13-mstate--syn--stateNEW--dport22-jDROP9、结论这些技巧都不是很难掌握,但是它们对于保护你的SSH服务却是很强劲的手段,花一点代价换来的是睡一个好觉。

热心网友 时间:2022-06-09 11:03

SSH协议框架中最主要的部分是三个协议:

* 传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性 等的支持;
* 用户认证协议(The User Authentication Protocol) 则为服务器提供客户端的身份鉴别;
* 连接协议(The Connection Protocol) 将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在厨师一个月工资是多少,炒菜和配菜,在什 成都厨房工资多少钱一个月 现在厨师一个月工资是多少,炒菜和配菜,在什么地方的价格,请详细点,谢 ... 华硕电脑上没有触摸板设置华硕笔记本电脑触摸板怎么开启 新买的光碟DVD-R是空白的,我想把他制作成一个系统光碟,谁知道怎么制 ... 请问空白光盘刻录车载DVD后,播放时只有目录放不出来是怎么回事啊?_百 ... 请问将一张DVD-R空白光盘作为数据盘使用能够重复写入或者续写数据吗?谢 ... 我现在有DVD-R盘,怎样刻录?一定需要刻录机吗? 做辣椒酱为什么要放酒 做辣椒酱为啥要放酒 2024年区块链的趋势和方向 电脑打开网络设置 什么求组词 微信被封号,解封时拉头像次数过多怎么办已经过了一天了 网络应用层协议 如何设置点对点传输文件 微信头像是这样,会不会封号? 文件传输的定义 微信群里有相同的头像会引起封号吗 谁有最新的PPT入门到精通教程视频,可以发我百度云 怎样自定义并使用websocket子协议 404 Not Found 怎么自定义应用层协议? 微信用马化腾头像会被封号吗 传输协议的小型文件传输协议 朋友的微信被封号怎么知道他是短期封号还是永久封号,头像和朋友圈背景图都在但朋友圈内容没有了。 netty objectdecoder 和自定义传输协议有什么区别 404 Not Found 微信怎么看是暂时封和永久封? 如何选择传输协议及格式 电脑最常见的硬件问题有哪些 电脑有多少种网络协议 FTP的端口号是多少 ? 如何使用flashftp HTP是什么啊?有什么用啊? EDI 如何使用? 如何修改USB CDC成为自定义USB Bulk批量传输设备 基于CC2540的蓝牙BLE协议,用户自定义的函数是哪块? 没有 用日语怎么说 日语 没有 怎么说 没有 日文怎么说? "没有"翻译成日语怎么写? 没有了日语怎么说 把没有翻译成日语和罗马音,谢谢。 有没有翻译日文的软件 没有办法~翻译成日语 有没有翻译日语的软件啊 床下面什么都没有 翻译成日文 热血高校2裏面没有翻译的日文 有没有翻译日语的软件!记住 是软件! 有没有日文翻译啊?软件,在线的都行!