Linux中awk与iptables重难点整理

远程遥控IPTables进行端口复用

第一种:利用ICMP做遥控开关(缺点:目标在内网时,无法ping到)

创建端口复用链

iptables -t nat -N LETMEIN

创建端口复用规则,将流量转发至 22 端口

iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22

开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中

iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT

关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉

iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEPT

let’s do it,如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN

效果图

[root@localhost ~]# iptables -nvxL -t nat
Chain PREROUTING (policy ACCEPT 446 packets, 32991 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 length 1139 recent: SET name: letmein side: source mask: 255.255.255.255
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 length 1140 recent: REMOVE name: letmein side: source mask: 255.255.255.255
0 0 LETMEIN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 recent: CHECK seconds: 3600 name: letmein side: source mask: 255.255.255.255
Chain INPUT (policy ACCEPT 95 packets, 7107 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 48 packets, 5255 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 48 packets, 5255 bytes)
pkts bytes target prot opt in out source destination
Chain LETMEIN (1 references)
pkts bytes target prot opt in out source destination

开启复用前,WEB 是可以访问的:

开启复用ping -c 1 -s 1111 192.168.33.78

向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139)

关闭复用ping -c 1 -s 1112 192.168.33.78向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)

在这里我说一下ping时的数据包为IP包+ICMP包

每行32bit,4字节,前5行共20字节

大小:20+8=28字节

开启复用ping -c 1 -s 1111 192.168.242.139

向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139)

关闭复用ping -c 1 -s 1112 192.168.242.139向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)

第二种:利用TCP数据包中的关键字做遥控开关(不怕目标在内网)

端口复用链

iptables -t nat -N LETMEIN

端口复用规则

iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22

开启开关

iptables -A INPUT -p tcp -m string --string 'zhimakaimen' --algo bm -m recent --set --name letmein --rsource -j ACCEPT

关闭开关

iptables -A INPUT -p tcp -m string --string ‘threathunterleaving’ --algo bm -m recent --name letmein --remove -j ACCEPT

展示

iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
开启复用,开启后本机到目标 80 端口的流量将转发至目标的 SSH,80 将无法再被本机访问:
echo threathuntercoming | socat - tcp:192.168.33.78:80

关闭复用,关闭后,80 恢复正常:
echo threathunterleaving | socat - tcp:192.168.33.78:80

让HTTPS、SSH 共享端口的——工具SSLH

安装SSLH

$ sudo apt-get install sslh

修改监听端口

修改/etc/default/sslh

重启服务

root@ubuntu-virtual-machine:/usr/local/nginx/conf#  systemctl restart sslh

测试

root@ubuntu-virtual-machine:/usr/local/nginx/conf# ps -ef |grep sslh
sslh        4020       1  0 12:56 ?        00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --tls 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh        4021    4020  0 12:56 ?        00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --tls 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
root        4023    2985  0 12:57 pts/0    00:00:00 grep --color=auto sslh

效果图

AWK经典实例:

筛选IPv4地址

三种方法:

[root@localhost ~]# ifconfig | awk '/inet / && !($2 ~/^127/){print $2}'
192.168.242.139
[root@localhost ~]# ifconfig | awk 'BEGIN{RS=""}!/lo/{print $6}'
192.168.242.139
[root@localhost ~]# ifconfig | awk -f ip.sh 
192.168.242.139
[root@localhost ~]# cat ip.sh 
BEGIN{RS="" ;FS="\n"}
!/lo/{$0=$2;FS=" ";$0=$0;print $2}
[root@localhost ~]# 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值