Iptables-1·概述及使用
2022-12-14 本文已影响0人
技术老男孩
一、概念:
- 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