允许本地访问外部IP地址和端口号,通过设定白名单的方式可以防止本机去访问别的服务器。通过这种场景的设置,可以最大可能避免反弹shell和挖矿程序去试图通过本地访问目标服务器下载恶意程序或执行恶意指令。
iptables -I INPUT -i ens33 -p tcp -s 192.168.112.153 --sport 80 -j ACCEPT
iptables -I OUTPUT -o ens33 -p tcp -d 192.168.112.153 --sport 80 -j ACCEPT
通过以上设置本机可以与192.168.112.153的80端口进行交互。注意上述是本机访问其他服务器。
iptables -A INPUT -p --sport 80 -m limit 25/minute --limit-burst 100 -j ACCEPT
1、本机端口转发:比如80端口对外封闭,开放一个45692供外部访问,外部只知道45692,不知道80,可以避免协议猜测。
iptables -t nat -A PREROUTING -p tcp --dport 45692 -j REDIRECT --to-port 80
如上表示把45692端口的流量转发到80端口。
2、远程端口转发:把本机接收到的请求转发到远程电脑和对应端口上,远程可以是本地局域网,也可以是公网服务器。
远程端口转发时需要确保端口转发功能是启用的。
或者
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf
(1)SNAT
原地址转换典型应用环境:局域网主机共享单个公网IP地址接入inernet。
前提条件:
(1)局域网各主机正确设置IP地址/子网掩码。
(2)局域网各主机正确设置默认网关地址。
(3)Linux网关支持IP路由转发。
实现方式:
配置SNAT时也可能会指定某个地址的某个端口:
iptables -t nat -A POSTROUTING -d 192.168.112.153 -p tcp --dport 80 -j SNAT --to 192.168.112.188
表示将目标服务器上的目标端口路由给本机,192.168.112.188表示本机的ip地址,192.168.112.153表示目标服务器,80是目标端口。
(2)DNAT
目标地址转换典型应用环境:在Internet中发布位于企业局域网内的服务器。
前提条件:
(1)局域网的Web服务器能够访问Internet。
(2)网关的外网IP地址有正确的DNS解析记录。
(3)Linux网关支持IP路由转发。
实现方式:
指定端口时可写成如下:
iptables -t nat -A PREROUTING -d 192.168.112.188 -p tcp --dport 80 -j DNAT --to-destination 192.168.112.153:80
表示如果有人访问192.168.112.188的80端口,则DNAT会转发给192.168.112.153的80端口。