iptables的nat规则骚操作

水一枪

我对防火墙这块的认知是比较低的, 之前一直没怎么去用

最多的要么就是

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

,这还是以前刚出来接触linux的时候redhat6跑的,后来改革了,好吧,centos7

firewall-cmd --zone=public --add-port=6379/tcp --permanent && firewall-cmd --reload

直到我与区块链搭上了肩膀才用上了iptables端口转发

上面水了一段,正文开始

需求

在生产环境上面所在运行的数据库做一个远程连接,前提是数据库不能重启(由于原先只有一个root用户而且限定是本地使用的,不能添加额外连接用户)

那么这个时候就可以用iptables做一个小小的映射,其实说的那么玄乎,无非就是nat规则...

把本地的3306端口映射出去变成63306,外面连接的语句是

mysql -uroot -p'password' -h xxxxx -P 63306

注:当访问63306的时候,会自动去请求3306,然后返回数据,当然,63306是不受监听的哈,那些用过kali或者渗透的朋友是不是应该想到了什么呢...

什么?没有?那当我没说过。

实现

先扔三条code去抠一下

echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.conf.eth0.route_localnet=1
sysctl -w net.ipv4.conf.default.route_localnet=1

不用说也知道这是干嘛的了,【允许数据包转发】

nat规则

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 63306 -j DNAT --to-destination 127.0.0.1:3306
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 63306 -j SNAT --to-source 127.0.0.1

注:这是允许所有外来的IP访问,慎用。

限制单个来源IP

iptables -t nat -R PREROUTING 4 -s 192.168.40.154 -p tcp -m tcp --dport 63306 -j DNAT --to-destination 127.0.0.1:3306
iptables -t nat -R POSTROUTING 4 -s 192.168.40.154 -p tcp -m tcp --dport 63306 -j SNAT --to-source 127.0.0.1

注:这是只给外网的192.168.40.154连接, 其他的都连不上,

修改规则(4代表编号, --line-number可查看对应编号, -s 指定来源IP)。

查看nat规则

iptables -L -t nat --line-number

删除nat规则

iptables -t nat -D POSTROUTING 1

 笔记

-A 追加规则-->iptables -A INPUT
-D 删除规则-->iptables -D INPUT 1(编号)
-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
-N 新的规则-->iptables -N allowed 定义新的规则

 

posted @ 2019-09-14 17:04  扶苏公子x  阅读(3755)  评论(1编辑  收藏  举报