我们来讨论一下如何为你的CentOS 服务器来设置简单的防火墙。 这里我们以DigitalOcean的CentOS 6 VPS为基础来讨论的,同样也适用于阿里云上其他类型的LINUX系统。 (阿里云有个云盾系统,因此在你自己的VPS上不设置防火墙也是可以的)
  需要说明的是: 本文只涉及基础常用的防火墙设置,能屏蔽一些常用的攻击,但并不能彻底保证你的服务器的安全。
  系统的随时更新 以及 关闭不必要的服务 仍然是保证系统安全非常重要的步骤。
  如果你需要更全面的了解iptables,阅读本文后,请google或是阅读更加深入的资料!
  首先简单介绍一下什么是IPTables:
  iptables是Linux内核中内置的防火墙,可以允许管理员通过设置table, chain以及相关的规则来进行数据包过滤和NAT。 一般来讲,iptables防火墙已经内置于CentOS 6及其他Linux版本中,而且iptables服务默认都是启动的。  iptables应用于IPv4, 如果要用IPv6,需要使用ip6tables.
  iptables的命令格式:
  iptables [-t table] command [chain] [rules] [-j target]
  [-t table] :用来指明使用的表, 有三种选项: filter, nat 和 mangle,如果未指定,则使用filter作为缺省表。 事实上,对于单个服务器的防火墙配置,一般来讲,我们只需要对filter表进行配件OK了。filter表包括 INPUT, OUTPUT,和FORWARD三个chain.
  command 表明iptables命名要做什么,比如
  -A (–append): 该命令会把一条规则附件到chain的末尾。
  -D(–delete)用来删除某个规则。
  -F (–flush) 如果指定了chain, 删除该chain中的所有规则,如果未指定chain, 则删除所有chain中的所有规则。
  target: 是由规则指定的操作。 包括下面几种:
  ACCEPT: 接收信息包(允许它前往目的地),并且将停止遍历chain.
  DROP:  拒绝,
  此外还有REJECT, RETURN, LOG, REDIRECT, MARK, MIRROR, MAQUERADE等。
  具体的iptables的语法和概念不再多说了,请参照 iptables man page 官方文档 .
  简单来说,iptables防火墙是由一系列的规则(rule)组成,  一个数据请求进来, 会依次和这些规则进行比较,如果正好符合规则的定义,那这个数据请求要么会被接收ACCEPT,要么被拒绝DRIP。如果不符合任何规则的定义,后缺省的规则会被应用。
  开始操作之前:
  注意:一定要把你在DigitalOcean/ Linode/ 阿里云上的服务器做一下快照备份 , 否则一旦你 iptables的配置出了问题,极有可能把你自己挡在门外,你自己都无法连接到服务器了!! 出现这种情况可是会欲哭无泪呀,除了重新做系统好像没有更好的办法了。( DigitalOcean提供了一个web console的界面,有时候会给你反悔和擦除iptables设置的机会,但阿里云没有)
  决定哪些端口需要开放
  首先, SSH 的端口22自然是需要开放的,否则我们无法登录服务器了。
  一般来讲,CentOS的VPS经常作为用LAMP搭建的Web服务器,FTP服务器, Mail服务器等。
  对于Web服务来说,需要开放80端口,如果是HTTPS/SSL协议的话,还需用开放443端口
  对于Mail服务来说,由于涉及SMTP, POP3, IMAP协议,需要开放的端口如下:
  SMTP : 25   Secure SMTP:465  POP3: 110   Secure POP3: 995   IMAP: 143   IMAP over SSL: 993
  对于FTP服务来说,需要开放 20, 21两个端口
  第一步: 屏蔽常见的攻击
  缺省情况下,CentOS的iptables的设置是允许任何数据通过的。