水一槍
我對防火牆這塊的認知是比較低的, 之前一直沒怎么去用
最多的要么就是
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 定義新的規則