首页
centos
常用命令linux_系统
Centos后台运行程序命令nohup
CentOS7启用阿里源yum安装Nginx
使用清华大学yum源
使用国内yum源
Linux script(录制) 命令
Linux内核参数中的配置项
Linux 系统生成或重置机器 ID
centos7系统安装
Centos7配置开机自启动脚本
CentOS忘记密码
Linux的服务、程序
系统优化+模板制作
CentOS设置环境变量
CentOS7的systemd
Linux常用命令记录
Centos 7查看系统最近一次启动时间和运行时间
Linux命令 之 watch命令
Centos7下date怎么英文格式输出
linux 使用 rz 和 sz 上传下载文件
Linux下的压缩/解压缩
常用命令linux_文本处理
计划任务crontab
CentOS7 SElinux和防火墙Firewall
Centos firewall-cmd配置软路由
CentOS7系统中使用iptables
iptables配置
iptables基础操作
使用iptables设置端口敲门(port knocking)后转发
Centos7 SSH登录日志分析
CentOS下查看tcp的网络连接状态数 netstat + awk
CentOS7上安装 Fail2Ban防SSH爆破
Fail2Ban开启邮件告警
LDAP
文件存储
ZFS
SSH
CentOS 7 SSH配置免密码登录
CentOS7开启SSH访问配置
删除ssh客户端记录的主机密钥标识(指纹)
sshd启动失败解决
添加用户,设置sudo权限
ssh公钥、机器指纹
ssh客户端提示:找不到对应主机密钥类型
shell脚本
示例:jumpserver一键安装脚本
centos中使用ping日志记录网络通断
盘符挂载硬盘导致重启系统失败
CentOS_网络
centos路由配置
Linux 系统添加永久静态路由
centos 添加删除路由
Linux下使用TC实现网络限流
linux系统下的wifi启动不了
hosts文件配置
网络端口
Centos 网卡命名规则
Centos命令行中nmtui调用图形界面设置网卡
查看CentOS网口的使用带宽
linux抓包工具tcpdump
定时备份删除文件
定时删除n日前的文件
备份指定目录下的文件
检查定时备份是否执行
inotify+rsync实时同步
rsync+lsync
CentOS7 使用SMTP发送邮件
Centos7部署开源SSH蜜罐cowrie
Centos7磁盘相关命令
centos 7 新增硬盘 分区并挂载
centos7加硬盘给根分区扩容--lvm模式
Linux中对lvm逻辑卷分区大小的调整(针对xfs与ext4不同文件系统)
CentOS7挂载4T磁盘
Centos7_NFS
CentOS7挂载samba共享文件夹
vsftpd主动模式和被动模式
CentOS清除旧硬盘格式
CentOS磁盘读写性能测试
硬盘IO查看分析工具iostat
Linux迁移home目录到根目录-需LVM分区
使用 smartctl 命令检查硬盘的状态
lsof列出正在使用某个文件夹
/dev/disk 目录
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
使用iptables设置端口敲门(port knocking)后转发
## 使用iptables设置端口敲门(port knocking)后转发 操作系统:CentOS7.6 ### 配置阿里YUM源: ``` curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo ``` ## 配置iptables 配置过程需要用到iptables命令,CentOS默认已安装 只有当客户端向服务器80端口发送指定的字符串时,服务器80端口才针对该客户端IP地址进行端口转发; 此方法适用临时性使用,原因就是当打开端口复用后,该客户端访问80端口时,都会转发到22端口上,此时该客户端无法访问WEB页面,但不会影响其他客户端正常访问。 ### 创建自定义链 创建一条名为"Port_Reuse"的链: `iptables -N Port_Reuse` `iptables -L` 其中()中的“0 references”表示引用计数为0,“引用”就是自定义链必须在某条默认链的某个规则里设置target为自定义链,然后才会被引用。 ### 创建规则 创建一条引用"Port_Reuse"链的规则: `iptables -I INPUT -p tcp --dport 80 -j Port_Reuse` `iptables -L` 创建一条规则后,"Port_Reuse"链的引用则为1; 备注:其它相关命令 修改自定义链名称:iptables -E Port_Reuse Ports 删除链:iptables -X Port_Reuse ### 创建端口利用链 创建一个自定义名称的链"PortChain": `iptables -t nat -N PortChain` 备注:其它相关命令 删除链:iptables -t nat -X PortChain ### 添加端口复用规则 将端口复用规则添加到复用链内部,将流量转发至22端口: `iptables -t nat -A PortChain -p tcp -j REDIRECT --to-port 22` ### 设置开关 在这里设置一个字符串作为开关,实现手动对端口复用功能启停。 ``` 使用openthedoor做为开启: iptables -A INPUT -p tcp -m string --string 'openthedoor' --algo bm -m recent --set --name portchain --rsource -j ACCEPT 使用closethedoor做为关闭: iptables -A INPUT -p tcp -m string --string 'closethedoor' --algo bm -m recent --name portchain --remove -j ACCEPT ``` ### 配置跳转链 ``` iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 600 --name portchain --rsource -j PortChain ``` ## 测试端口复用 客户为Linux终端,没有打开开关前,不能使用80端口进行SSH登录,测试过程中客户端需要使用socat命令,如果没有,则进行安装: yum install socat ``` 开启端口复用: echo openthedoor | socat - tcp:192.168.2.12:80 开启后,可以使用80端口进行SSH登录; ssh -p 80 192.168.2.12 关闭端口复用: echo closethedoor | socat - tcp:192.168.2.12:80 关闭后则不能再使用80端口登录ssh了。 ``` 参考:https://mp.weixin.qq.com/s/BkVvuBt0CAkSDG9zt5h3FA ## 端口敲门(port knocking)-按顺序 仅参考: ``` # 加载ip_tables内核模块 modprobe ip_tables # 设置第一个规则(敲门序列) iptables -I INPUT -p tcp --dport 2000 -m state --state NEW -j ACCEPT iptables -I INPUT -p tcp --dport 2001 -m state --state NEW -j ACCEPT iptables -I INPUT -p tcp --dport 2002 -m state --state NEW -j ACCEPT # 设置实际转发规则 iptables -I INPUT -p tcp --dport 3000 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 192.168.1.100:22 iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 22 -j MASQUERADE 解释含义: 这段脚本是一系列Linux命令,用于配置`iptables`防火墙规则以及网络地址转换(NAT)。下面是每条命令的解释: 1. `modprobe ip_tables` - 这个命令加载`ip_tables`内核模块,它是`iptables`防火墙工作所依赖的。在较新的Linux发行版中,`ip_tables`模块可能已经默认加载了,但在一些定制或旧的系统中可能需要手动加载。 2. `iptables -I INPUT -p tcp --dport 2000 -m state --state NEW -j ACCEPT` - 这条命令向`INPUT`链添加一条规则,允许新的TCP连接请求,目标端口为2000。`-p tcp`指定协议为TCP,`--dport 2000`指定目标端口为2000,`-m state --state NEW`检查新建立的连接,`-j ACCEPT`表示接受这些连接。 3. 同上,但目标端口分别为2001和2002: - `iptables -I INPUT -p tcp --dport 2001 -m state --state NEW -j ACCEPT` - `iptables -I INPUT -p tcp --dport 2002 -m state --state NEW -j ACCEPT` 4. `iptables -I INPUT -p tcp --dport 3000 -j ACCEPT` - 这条命令允许新的TCP连接请求,目标端口为3000。 5. `iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 192.168.1.100:22` - 这条命令在NAT表的`PREROUTING`链添加一条规则,将所有进入的TCP流量,目标端口为3000的,通过`DNAT`(目标网络地址转换)重定向到`192.168.1.100`的22端口。这通常用于SSH服务的端口转发。 6. `iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 22 -j MASQUERADE` - 这条命令在NAT表的`POSTROUTING`链添加一条规则,对目标地址为`192.168.1.100`,目标端口为22的TCP流量执行`MASQUERADE`操作。`MASQUERADE`是动态网络地址转换的一种形式,用于当源IP地址变化时,如在NAT之后,保持会话的持续性。这通常用于动态IP环境,如使用DHCP的场景。 这些规则通常用于设置一个端口转发规则,其中2000、2001和2002端口可能是用于"敲击"(一种特定的连接模式,可能用于某些类型的网络测试或安全检测)的端口,而3000端口则被转发到内部网络的192.168.1.100主机的22端口,从而实现对该主机的SSH访问。 2000、2001、2002端口的规则是设置为“敲门序列”(一种安全机制,用于识别合法的连接请求),不按这规则连接端口的连接不会被接受。 ``` iptables设置端口敲门 https://cloud.tencent.com/developer/ask/sof/100340494 https://blog.csdn.net/sinat_27690807/article/details/111550176?ydreferer=aHR0cHM6Ly93d3cuYmFpZHUuY29tL2xpbms%2FdXJsPVk0bDlWYWNUdmZtN2UyWE96b3JGdThrclRXV1dVLVB4WFA2bEJhODZLMlpocUFpdkN5NWg2UXVvX2gzdHYwU2hzVVQxYjI0WkFlUEloQnVUZjBETHpNQ2VvaTQ3Y2d2ZVhlQWZPWWdLbGg3JndkPSZlcWlkPWYzMWMzYmY1MDAwMDFiYjcwMDAwMDAwMjY2YWM3ZTRk
local
2024年8月2日 19:05
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码