CentOS设置防火墙只允许内网用户访问服务器

用户环境是一个局域网,adsl连接internet,有10多台pc,1台服务器.

这台服务器安装的是CentOS5.8,主要运行一个特殊软件,工程人员在各自pc上用XManager登录服务器使用该软件,另外开放ftp功能以便传递工程文件.

现在用户的要求是服务器需要与internet隔离,以保护数据,但不能影响其他pc正常上网,也不能影响其他pc访问该服务器


思路: 用centos自带的iptables解决,对INPUT,OUTPUT链路,只允许内网网段的包通过.

于是有下面的iptables:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
:RH-Firewall-1-OUTPUT - [0:0]

-A INPUT -s 192.168.1.0/24 -j RH-Firewall-1-INPUT
 -A INPUT -j REJECT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT 

-A OUTPUT -d 192.168.1.0/24 -j RH-Firewall-1-OUTPUT
 -A OUTPUT -j REJECT
-A RH-Firewall-1-OUTPUT -i lo -j ACCEPT 

-A RH-Firewall-1-INPUT -j ACCEPT 
-A RH-Firewall-1-OUTPUT -j ACCEPT 
COMMIT
重启防火墙后, 发现访问服务器时,登录过程非常缓慢,但登录上后,访问速度还是很快的, 不知问题在哪里,到Linux/CentOS群里吼了一声, 有朋友热心指出应该使用状态匹配扩展,

于是加上-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT , 问题解决.

但在系统重启时候,又遇到问题,系统卡在防火墙启动位置了,原来linux启动时候,有很多自检,这时会有很多本机网络通信,而本机地址是127.0.0.1, 不符合192.168.1.0/24范围条件,遭到拒绝,导致系统卡住.应该加上-A INPUT -s 127.0.0.1 -j ACCEPT-A OUTPUT -d 127.0.0.1 -j ACCEPT,

这样,一个符合用户要求的防火墙就设置好了,下面是完整的iptables

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
:RH-Firewall-1-OUTPUT - [0:0]

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

-A INPUT -s 192.168.1.0/24 -j RH-Firewall-1-INPUT
-A INPUT -s 127.0.0.1 -j ACCEPT
 -A INPUT -j REJECT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT 

-A OUTPUT -d 192.168.1.0/24 -j RH-Firewall-1-OUTPUT
-A OUTPUT -d 127.0.0.1 -j ACCEPT
 -A OUTPUT -j REJECT
-A RH-Firewall-1-OUTPUT -i lo -j ACCEPT 

-A RH-Firewall-1-INPUT -j ACCEPT 
-A RH-Firewall-1-OUTPUT -j ACCEPT 
COMMIT

感谢"风雪","KENNETH"的热心帮助



你可能感兴趣的:(Linux)