当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux 服务器安全配置(4)

    栏目:Linux/apache问题 时间:2018-09-28 13:54


      7.防火墙
      7.1 iptables类型防火墙:
      7.1.1 iptables概念:
      Iptalbes(IP包过滤器管理)是用来设置、维护和检查Linux内核的IP包过滤规则的。
      可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。
      通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标 ACCEPT 允许该信息包通过。还可以使用目标 DROP 或 REJECT 来阻塞并杀死信息包。对于可对信息包执行的其它操作,还有许多其它目标。
      根据规则所处理的信息包的类型,可以将规则分组在链中。处理入站信息包的规则被添加到 INPUT 链中。处理出站信息包的规则被添加到 OUTPUT 链中。处理正在转发的信息包的规则被添加到 FORWARD 链中。这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其它许多可用的链的类型(如 PREROUTING 和 POSTROUTING),以及提供用户定义的链。每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。
      建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。
      如果信息包源自外界并前往系统,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的 INPUT 链。如果信息包源自系统内部或系统所连接的内部网上的其它源,并且此信息包要前往另一个外部系统,那么信息包被传递到 OUTPUT 链。类似的,源自外部系统并前往外部系统的信息包被传递到 FORWARD 链。
      7.1.2 iptables实例1:
      #!/bin/sh
      # 禁止系统的转发包功能
      echo 0 > /proc/sys/net/ipv4/ip_forward
      # 清楚iptables原有规则,并设置iptables默认规则
      iptables -t nat -F POSTROUTING
      iptables -t nat -F PREROUTING
      iptables -t nat -F OUTPUT
      iptables -F
      iptables -P INPUT DROP
      iptables -P FORWARD ACCEPT
      iptables -P OUTPUT ACCEPT
      # 在input规则中需要打开的tcp、upd端口
      iptables -A INPUT -j ACCEPT -p tcp --dport 80
      iptables -A INPUT -j ACCEPT -p tcp --dport 22
      iptables -A INPUT -j ACCEPT -p tcp --dport 25
      iptables -A INPUT -j ACCEPT -p tcp --dport 1352
      iptables -A INPUT -p udp --destination-port 53 -j ACCEPT
      # 在input规则中状态为:STATE RELATED 的包都接受
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      # 启用系统ip转发功能
      echo 1 > /proc/sys/net/ipv4/ip_forward
      < --end-- >
      7.1.3 iptables实例2:
      注:这个实例中,只需要设置tcp、udp端口和服务器网络段ip范围即可,其他已经默认设置好。
      #!/bin/sh
      # make:yongzhang
      # time:2004-06-18
      # e-mail: yongzhang@wiscom.com.cn
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      ##tcp allow ports
      TPORTS="80 22"
      ##udp allow ports
      UPORTS="53"
      ##internal server_ip range
      SERVER_IP="172.18.10.0/24"