Iptables-1·概述及使用
2024-06-28 00:00:53  阅读数 417

一、概念:

  • iptables有多种功能,每一种功能都用一张表来实现
  • 最常用的功能是防火墙和NAT
  • 从RHEL7开始,默认的防火墙为firewalld,但是它的底层仍然调用iptables
  • firewalld和iptables冲突,安装使用iptables服务时,需要关闭firewalld

二、iptables结构:

  • 表、链结构:


    表、链结构.png
  • iptables的表和链。我们只关心nat表和filter表。
  • filter表是默认的表,它实现防火墙,也就是包过滤的功能。
  • nat表实现网络地址转换。


    filter表结构.png

防火墙filter表

  • 配置iptables时,不指定表,就是使用filter表
  • 配置时不指定规则链,则配置所有链
  • 可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则
  • 命令选项、链名、目标操作使用大写字母,其他小写

filter中的三条链

  • INPUT:数据包的目标地址是自己,则进入INPUT链
  • OUTPUT:数据包的源地址是自己,则进入OUTPUT链
  • FORWARD:数据包穿过自己,则进入FORWARD链(目标地址和源地址都不是自己)

filter配置思路:

  • 默认拒绝,明确允许
  • 默认允许,明确拒绝

三、iptables基本用法:

管理程序位置

  • /sbin/iptables

基本语法

  • -iptables [-t 表名] 选项 [链名] [参数/条件] [-j 目标操作]

常用选项:

  • -A 追加规则-->iptables -A INPUT
  • -D 删除规则-->iptables -D INPUT 1(编号)
  • -R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
  • -I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
  • -L 查看规则-->iptables -L INPUT 列出规则链中的所有规则


    常用管理选项.png

通用参数:

  • -p 协议 例:iptables -A INPUT -p tcp
  • -s 源地址 例:iptables -A INPUT -s 192.168.1.1- -d 目的地址 例:iptables -A INPUT -d 192.168.12.1
  • --sport 源端口 例:iptables -A INPUT -p tcp --sport 22
    --dport 目的端口 例:iptables -A INPUT -p tcp --dport 22
  • -i 指定入口网卡 例:iptables -A INPUT -i eth0
  • -o 指定出口网卡 例:iptables -A FORWARD -o eth0

目标操作:

-j 指定要进行的处理动作,常用的ACTION:

  • DROP:丢弃
  • REJECT:明示拒绝
  • ACCEPT:接受
  • LOG:记录日志,然后传给下一条规则(“匹配即停止”,唯一的例外)

四、常用命令:

  • 查看规则
# 查看规则,n是指用数字来表示端口号、主机等
[root@node1 ~]# iptables -nL INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.88.0/24       0.0.0.0/0            tcp dpt:22
ACCEPT     all  --  192.168.88.254        0.0.0.0/0 
  • 清空规则
# 默认规则往往不合我们的要求,可以先将所有的规则清空
[root@node1 ~]# iptables -F
  • 添加规则
# 向INPUT链追加规则,192.168.88.254发来的包全部接受
# -A是追加,-s是匹配源地址,-j为jump,采取的行为,ACCEPT是接受
[root@node1 ~]# iptables -A INPUT -s 192.168.88.254 -j ACCEPT
  • 设置默认规则(切记如果设置默认为DROP,一定要先设置允许访问IP,否则没有机器可能进行远程控制了)
# 将INPUT链的默认规则改为DROP丢弃。-P设置默认规则
[root@node1 ~]# iptables -P INPUT DROP
  • 查看规则并显示行号
# 查看规则的行号
[root@node1 ~]# iptables -nL INPUT --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  192.168.88.0/24       0.0.0.0/0            tcp dpt:22
2    ACCEPT     all  --  192.168.88.254        0.0.0.0/0           
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
4    REJECT     icmp --  192.168.88.254        0.0.0.0/0            reject-with icmp-port-unreachable
  • 删除规则
# 删除第4条规则
[root@node1 ~]# iptables -D INPUT 4
[root@node1 ~]# iptables -nL INPUT --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  192.168.88.0/24       0.0.0.0/0            tcp dpt:22
2    ACCEPT     all  --  192.168.88.254        0.0.0.0/0           
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
  • 保存规则
# 不保存规则,重启iptables服务,自定义规则将消失
# 保存规则至/etc/sysconfig/iptables。
[root@node1 ~]# iptables-save > /etc/sysconfig/iptables