iptables021217_0051.png
图片来源互联网

iptables是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,他的功能十分强大,使用也非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制

CentOS 7.x 使用iptables开放3306端口访问

安装

CentOS 7.x 默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1、关闭firewall:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

2、安装iptables防火墙
yum install iptables-services -y

3、启动设置防火墙
systemctl enable iptables
systemctl start iptables

4、查看防火墙状态
systemctl status iptables

5、编辑防火墙,增加端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
:wq! #保存退出

5-1、命令编辑防火墙,增加端口

iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p udp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

6、重启配置,重启系统
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

关闭SELinux

  • 查看

      [root@server ~]# getenforce
      Disabled
      [root@server ~]# /usr/sbin/sestatus -v
      SELinux status:                 disabled
  • 永久关闭

      vi /etc/selinux/config
      将SELINUX=enforcing改为SELINUX=disabled
      设置后需要重启才能生效

常用命令

iptables -h #查询帮助

iptables -L -n #列出(filter表)所有规则

iptables -L -n --line-number #列出(filter表)所有规则,带编号

iptables -L -n -t nat #列出(nat表)所有规则

iptables -F #清除(filter表)中所有规则

iptables -F -t nat #清除(nat表)中所有规则

service iptables save #保存配置(保存配置后必须重启iptables)

systemctl restart iptables.service #重启

语法

  • filter表解析
    filter表是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链,分别是:INPUT、OUTPUT、FORWARD

      INPUT:过滤进入主机的数据包
    
      OUTPUT:处理从本机出去的数据包
    
      FORWARD:负责转发流经本机但不进入本机的数据包,起到转发作用
  • iptables常用语法

      -A:追加到规则的最后一条
    
      -D:删除记录
    
      -I:添加到规则的第一条
    
      -p:(proto)规定通信协议,常见的协议有:tcp、udp、icmp、all
    
      -j:(jump)指定要跳转的目标,常见的目标有:ACCEPT(接收数据包)、DROP(丢弃数据包)、REJECT(重定向)三种,但是一般不适用重定向,会带来安全隐患

常见案例

  • IP过滤
    禁止192.168.1.3 IP地址的所有类型数据接入

      iptables -A INPUT ! -s 192.168.1.3 -j DROP
  • 开放端口

      iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放80端口
  • 开放端口范围

      iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #开发22-80范围的端口
  • 不允许80端口流出

      iptables -I OUTPUT -p tcp --dport 80 -j DROP