no comments yet
09
Oct
2014
Linux配置防火墙,开启80端口
一个VPS,小硬盘只有5个G,经常因为空间不足而导致web server无法正常启动,虽然知道肯定是log越来越大占用了空间,但一直苦于找不到,今天终于通过du -sh ./*
命令查出了这些巨大的log文件,按说将其删除以后web server应该可以正常启动了,结果却悲剧了,各种试就是无法访问,使用netstat -ntpl
命令查看端口的占用情况,显示如下:
[root@test ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12064/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 984/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1116/sendmail
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12054/mysqld
tcp 0 0 :::22 :::* LISTEN 984/sshd
tcp 0 0 :::88 :::* LISTEN 12061/httpd
tcp 0 0 :::443 :::* LISTEN 12061/httpd
说明web server已经正常启动,可就是访问不了。
重启也无果的情况下,忽然想到是不是防火墙禁用了端口,于是输入
service iptables stop
关闭防火墙后再试,果然可以访问了。。
找到原因以后就可以对症下药了,编辑iptables
vi /etc/sysconfig/iptables
加入以下这条规则来允许80端口通过防火墙
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面。
添加好之后防火墙规则如下所示:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
最后重启防火墙使配置生效
/etc/init.d/iptables restart