目录
利用SSH公钥免密登录
SSH默认有两种登录方式:密码登录和密钥登录,但是使用密码登录会有简单的密码不安全而复杂的密码难以记忆、使用统一密码管理多塔SSH主机安全性差等缺点,此时使用密钥登录是一个很好的解决方案
SSH密钥登录采用了非对称加密,而非对称加密需要两个密钥成对使用,分别为公钥和私钥,其中私钥是自己保存的,公钥是公开的公钥存放在SSH服务器中,私钥存放在本机
执行以下命令生成公钥和私钥
ssh-keygen -b 4096 -t rsa
执行成功后会生成 id.rsa(私钥)和id_rsa.pub(公钥)两个文件:
随后将公钥的内容全部复制到SSH服务器的/root/.ssh/authorized_keys文件中,复制过去后,使用本地的私钥登录,过程中使用参数 -i制指定私钥文件:
ssh -i id rsa root@192.168.159.200
利用Linux端口复用
iptables简介
在Linux中netfilter是一款继承了包过滤、地址与端口转换以及包修改功能的数据处理框架。该框架可以自定义规则来过滤指定的数据包,或者让指定的数据库以链的方式进行传送
创建复用端口
使用下列命令可以查看防火墙的运行状态:
如果未开启可以使用下列命令开启:
然后使用下列命令可以看到80端口的情况
可以看到80端口是开放的,我们也可以使用curl进行测试:
此时,在6666端口上开发一个后门程序,因为防火墙的原因我们无法直接访问6666端口,此时可以使用iptabls将80端口的流量重定向到6666端口
使用下列命令来创建一条将80端口重定向到6666端口的规则:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 6666
这条命令就是对流量进行了重定向
然后使用下列的命令查看规则是否创建:
iptables -t nat -L PREROUTING --line-number
可以看到已经创建了
然后我们使用nc进行连接:
nc 192.168.159.200 80
但是这样会破坏原有的80端口上的业务,因此我们可以使用下面的命令删除创建的规则:
iptabeles -t nat -D PREROUTING 4
然后使用-s 和 --sport来制定请求的ip和端口:
iptabeles -t nat -A PREOUTING -p tcp -s 192,168,159,200 --sport 8888 -dport 80 -j REDIRECT ---port 6666
这样我们就可以实现如果是8888端口的请求就是被转发到6666端口,如果不是则不会触发规则