zen-cart网站,模版,采集,二次开发

首页 » Linux » liunx基础 » 阅读文章

Centos上iptables防火墙的基本应用教程

2012-03-16 16:47 17983 0 发表评论
标签:


iptables是Linux上常用的防火墙软件,通过配置iptables来实现一定程度上的网络安全。

1.安装

检查是否安装

rpm -qa | grep iptables

如果没有安装可以使用yum来安装

yum install iptables

2.清除原有规则

不管原来规则如何,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.

iptables -F        #清除预设表filter中的所有规则链的规则
iptables -X        #清除预设表filter中使用者自定链中的规则
iptables -Z		#将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。

然后我们在来看下清除完后后的规则状态

iptables -L -n  #查看的iptables规则
#或者
iptables -L -n --line-numbers #查看并标号

小知识

如果要删除某条不需要的记录,可以编号后,删除对应号即可,如删除OUTPUT规则的第2条记录

iptables -D OUTPUT 2 # -D  delete删除

可以看到INPUT OUTPUT FORWARD全部都是ACCEPT,即相当于防火墙没有做任何限制,和没装防火墙一样。

3.设定预设规则

参数 含义
INPUT 用户发往服务器的数据
OUTPUT 服务器的数据返回给用户
FORWARD 转发
ACCEPT 接受
DROP 放弃

预设规则即关闭所有权限,然后根据自己的需要开启需要的权限

iptables -P INPUT DROP   # -P, --policy 过滤政策
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

对于OUTPUT链,也就是流出的包我们也可以不用做太多限制,而是采取ACCEPT

4.开启需要的权限

通过命令

netstat -tnl

可以查看当前服务器打开了哪些端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许所有已经连接端口请求

WEB服务器,开启80端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# -A add 添加一条规则
#-p  比对通讯协议类型是否相符
# --dport  --destination-port目标端口,当数据从外部进入服务器为目标端口
# -j 指定规则动作

当然我们OUTPUT规则也是DROP,所以对应的也要开启

iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#--sport 来源端口

-m state --state ESTABLISHED 这个稍微复杂点,表示该封包属于某个已经建立的联机。即禁止这些没有通过请求回应的数据包,过滤无效包。(有病毒木马程序,它可以通过22,80端口像服务器外传送数据。
它的这种方式就和我们正常访问22,80端口区别。它发向外发的数据不是我们通过访问网页请求
而回应的数据包。)

SSH,开启22端口(如果修改了SSH端口号,要改为对应的端口)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

如果做了DNS服务器,开启53端口

iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

可以用命令 : grep domain /etc/services,查看DNS使用的端口号

如果做了邮件服务器,开启25,110端口

iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT

如果要允许icmp包通过,也就是允许ping

iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

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

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT

运行Samba

iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 145 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 145 -j ACCEPT

如果要开启FTP的话,FTP端口比较特殊

主动模式下,客户连接 TCP/21,服务器通过 TCP/20 连接客户
被动模式下,客户连接 TCP/21,客户再通过其他端口连接服务器的随机端口

所以如果要使用FTP被动模式传送的话,要限定随机传送传送端口,如果是使用vsftpd,编辑起配置文件/etc/vsftpd/vsftpd.conf在末尾添加

pasv_min_port=30001
pasv_max_port=31000

即将随机端口限定在30001 -31000之间,然后iptables开放这个区间的端口即可

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT

如果你OUTPUT链设置为的ACCEPT,那么像31337到31340(特洛伊木马会扫描的端口),31335、27444、27665、20034、9704等关闭掉

最后保存规则

service iptables save

如果不保存的话,重启后失效

5.屏蔽IP

iptables -I INPUT -s 192.168.1.101 -j DROP
# -I  插入一条规则,原本该位置上的规则将会往后移动一个顺位

PS: 建议大家全部写到脚本中执行,不然你一来是INPUT DROP就会从远程客户端掉下来,如果你不能直接接触服务器修改的话,你就悲剧了。

随机日志

评论 共0条 (RSS 2.0) 发表评论

  1. 暂无评论,快抢沙发吧。

发表评论

  • 
  • 插入代码

联系我 Contact Me

回到页首