iptables只允许指定ip地址访问指定端口

海外服务器 (340) 2015-10-16 10:54:17

首先,清除所有预设置

 

iptables –F#清除预设表filter中的所有规则链的规则

iptables –X#清除预设表filter中使用者自定链中的规则

 

其次,设置只允许指定ip地址访问指定端口

 

iptables –A INPUT –s xxx.xxx.xxx.xxx –p tcp —dport 22 –j ACCEPT

iptables –A OUTPUT –d xxx.xxx.xxx.xxx –p tcp —sport 22 –j ACCEPT
 
iptables –A INPUT –s xxx.xxx.xxx.xxx –p tcp —dport 3306 –j ACCEPT

iptables –A OUTPUT –d xxx.xxx.xxx.xxx –p tcp —sport 3306 –j ACCEPT

 

上面这两条,请注意–dport为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 –sport

同理,-s是指定源地址,-d是指定目标地址。

 

然后,关闭所有的端口

 

iptables –P INPUT DROP

iptables –P OUTPUT DROP

iptables –P FORWARD DROP

 

最后,保存当前规则

 

/etc/rc.d/init.d/iptables save

service iptables restart

 

这种iptables的规则设定适用于只充当MySQL服务器的管理和维护,外部地址不提供任何服务。

 

如果你希望yum可以运行的话,还需要添加以下内容,允许DNS请求的53端口,允许下载随机产生的高端口:

iptables –A INPUT –m state —state RELATED,ESTABLISHED –j ACCEPT

iptables –A INPUT –p udp —sport 53 –j ACCEPT

iptables –A OUTPUT –m state —state RELATED,ESTABLISHED –j ACCEPT

iptables –A OUTPUT –p udp —dport 53 –j ACCEPT

iptables –A OUTPUT –p tcp —sport 10000:65535 –j ACCEPT

/etc/rc.d/init.d/iptables save
service iptables restart

THE END