Linux添加防火墙、iptables的安装和配置(亲测)

时间:2024-09-20 15:36:56

iptables基础

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规 则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的 主要工作就是添加、修改和删除这些规则。

规则链:


1.INPUT    ——进来的数据包应用此规则链中的策略
2.OUTPUT     ——外出的数据包应用此规则链中的策略
3.FORWARD  ——转发数据包时应用此规则链中的策略
4.PREROUTING  ——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING ——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)

-A  在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-V 查看版本(version)
-h 获取帮助(help)

规则表之间的优先顺序:

Raw——mangle——nat——filter
规则链之间的优先顺序(分三种情况):

第一种情况:入站数据流向

从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。

第二冲情况:转发数据流向

       来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。

第三种情况:出站数据流向
       防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

iptables 的安装与配置

由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。

#停止firewall 
systemctl stop firewall.service

#禁止firewall开机启动 
systemctl disable firewall.service

#安装iptables 
yum install iptables-services

#编辑防火墙文件 (建议都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables 
#添加80和3306端口 等等(自己配置)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT           #80端口开放

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT    #3306端口开放

-I INPUT -s 113.106.93.110 -p tcp --dport 8089 -j DROP                         #禁止指定IP访问 8089

-I INPUT -s 113.106.93.110 -p tcp --dport 8080 -j ACCEPT                    #开放固定ipIP访问 8080

#重启防火墙使配置文件生效  
systemctl restart iptables.service

#设置iptables防火墙为开机启动项 
systemctl enable iptables.service

service iptables  start          #启动服务

service iptables  stop     #停止服务

service iptables  restart  #重启服务

关闭SELINUX 
vi /etc/selinux/config 
 #注释以下配置 
 SELINUX=enforcing 
 SELINUXTYPE=targeted 
  
 #增加以下配置 
 SELINUX=disabled 
  
 #使配置立即生效 
 setenforce 0