linux开启允许外网访问的端口

linux开启允许外网访问的端口


LINUX通过下面的命令可以开启允许对外访问的网络端口: 


 


查看端口情况


1.netstat -ntpl


2.iptables -F 清除预设表filter中的所有规则链的规则


3.iptables -X 清除预设表filter中使用者自定链中的规则


4.iptables -L -n 查看本机关于IPTABLES的设置情况  【远程连接规则将不能使用,注意】 


  /etc/init.d/iptables status


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


6./etc/rc.d/init.d/iptables restart




初始化


7. ACCEPT/DROP


iptables -P INPUT DROP 


iptables -P OUTPUT DROP


iptables -P FORWARD DROP


上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包


而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取 ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.


可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.


这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.


注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.


重复5,6步骤,查看结果 iptables -L -n






8.添加规则


eg. ssh端口 


iptables -A INPUT -p tcp --dport 22 -j ACCEPT


iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 


(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.


其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链


重复5,6步骤,查看结果 iptables -L -n


web


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


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


mysql


iptables -A INPUT -p tcp --dport 3306 -j ACCEPT


iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT


svn


iptables -A INPUT -p tcp --dport 3690 -j ACCEPT


iptables -A OUTPUT -p tcp --sport 3690 -j ACCEPT


memcached


iptables -A INPUT -p tcp --dport 11211 -j ACCEPT


iptables -A OUTPUT -p tcp --sport 11211 -j ACCEPT


mongodb


iptables -A INPUT -p tcp --dport 27017 -j ACCEPT


iptables -A OUTPUT -p tcp --sport 27017 -j ACCEPT


ping 


iptables -A INPUT -p udp --sport 53 -j ACCEPT


iptables -A OUTPUT -p udp --dport 53 -j ACCEPT


iptables -A INPUT -p udp --dport 53 -j ACCEPT


iptables -A OUTPUT -p udp --sport 53 -j ACCEPT


iptables -A OUTPUT -p icmp -j ACCEPT (如果是INPUT DROP)


iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)


loopback!(不然会导致DNS无法正常关闭等问题)


iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)


iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)




ping,loopback 都开启否则数据库域名方式将无法连接


正式服端口开发


80,22,3690


副正式服


80,22,3690,27017


测试服


80,22,3690,3306,27017




9.配置文件直接编辑


vi /etc/sysconfig/iptables   


这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。   


具体方法是:   


只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,   


因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你   


的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!  






配置成功备份:


# Generated by iptables-save v1.4.7 on Sun May  3 10:37:14 2015


*filter


:INPUT DROP [0:0]


:FORWARD DROP [0:0]


:OUTPUT ACCEPT [0:0]


-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 


-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 


-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 


-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT 


-A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT 


-A INPUT -p udp -m udp --sport 53 -j ACCEPT 


-A INPUT -p udp -m udp --dport 53 -j ACCEPT 


-A INPUT -p icmp -j ACCEPT 


-A INPUT -i lo -j ACCEPT 


-A INPUT -m state --state ESTABLISHED -j ACCEPT 


-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 


-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT 


-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT 


-A OUTPUT -p tcp -m tcp --sport 3690 -j ACCEPT 


-A OUTPUT -p tcp -m tcp --sport 27017 -j ACCEPT 


-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 


-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT 


-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT 


-A OUTPUT -p icmp -j ACCEPT 


-A OUTPUT -o lo -j ACCEPT 


COMMIT


# Completed on Sun May  3 10:37:14 2015