编辑
2022-10-10
iptables
00

目录

Linux防火墙
一、安装
二、iptables组成和数据传输
2.1 iptables事实上是由五个表和五个链组成,但security表是有selinux实现的,使用很少。所有又被称为四表五链。
2.2 数据传输过程
三、iptables命令格式和常规用法
3.1 iptables命令格式
3.2 常用命令
四、规则最优配置及保存规则
4.1 规则最优原则
4.2 保存规则及载入

Linux防火墙

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中
Netfilter在内核2.4.x版本以后的linux防火墙机制,因为是集成在内核中,所以和IP协议栈是无缝契合的,对数据进行过滤、地址转换、处理等操作。而iptables是一款命令行工具,工作在用户空间,将编写好的规则发送到netfilter,告知内核如何处理数据包。在centos7中引入了firewalld,但使用率并不高。

一、安装

sh
#rhel系列 yum -y install iptables #debian系列 apt -y install iptables

二、iptables组成和数据传输

2.1 iptables事实上是由五个表和五个链组成,但security表是有selinux实现的,使用很少。所有又被称为四表五链。

五个表:

  • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
  • nat:network address translation 地址转换规则表
  • mangle:修改数据标记位规则表
  • raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
  • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

相关信息

  1. 优先级由高到低:security-->raw-->mangle-->nat-->filter
  2. filter最常用,第二是nat,security最不常用

五个链:

  • INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

相关信息

也有人叫五个勾子函数。

2.2 数据传输过程

  1. 当数据进入网卡时,首先会经过PREROUTING,内核判断数据包是发给本机的还是要转发出去的。
  2. 如果是进入本机的,那就会进入INPUT链,到达INPUT链后任何进程都会收到它。本机运行的程序处理完这些数据后数据流入OUTPUT链,然后到达POSTROUTING链输出。
  3. 如果数据是要转发的,在内核打开转发配置的情况下,数据经过FORWARD链,直接送到POSTROUTING链。

注:

数据流转通过iptables工具控制数据的流向。

三、iptables命令格式和常规用法

3.1 iptables命令格式

sh
iptables [-t table] {-A|-C|-D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum iptables [-t table] -S [chain [rulenum]] iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target iptables [-t table] -E old-chain-name new-chain-name iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options] 1. -t table 指定表 raw、nat、mangle、filter(默认) 2. SUBCOMMAND:子命令 链管理类: -N:new, 自定义一条新的规则链 -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除 -X:delete,删除自定义的空的规则链 -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃 3. iptables 查看类命令 -v 详细信息 -vv 更详细信息 -n numberic 以数字格式显示地址和端口号 -L list查看指定链的所有规则,本选项需置后 --line-numbers 显示规则的序号 -x 显示计数器结果的精确值,而非单位转换后的易度值 -S 可查看已存在规则的命令格式,直接复制即可在其他机器或者新增规则使用 常用组合:-vnL -vvxnL --line-numbers iptables -vnL -t filter #查看filter表规则 4. iptables 规则管理类 -A append 追加 -I insert 插入,要指明插入至的规则编号,默认为第一条 -D delete 删除: 1、指明规则序号 2、指明规则本身 -F flush 清空指定的规则链 -R replace 替换指定链上的规则编号

3.2 常用命令

  1. 拒绝来自10.0.0.6和10.0.0.10的所有数据流入
    iptables -A INPUT -s 10.0.0.6,10.0.0.10 -j REJECT
  2. 拒绝来自10.0.0.6的数据包访问tcp的21-23端口数据流 iptables -A INPUT -s 10.0.0.6 -p tcp --dport 21:23 -j REJECT
  3. 本机可以访问10.0.0.7,10.0.0.7不能访问本机 iptables -A INPUT -s 10.0.0.7 -m state --state NEW -j REJECT
  4. 只允许192.168.0.0/24段的所有IP地址访问本机的5000-6000端口 iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 5000:6000 -j ACCEPT
  5. 开放3333端口 iptables -A INPUT -p tcp --dport 3333 -j ACCEPT
  6. 每周六、日的14:30-18:30不允许172.16.0.0/16的地址通过tcp访问172.16.100.10的80端口 iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun -j DROP

四、规则最优配置及保存规则

4.1 规则最优原则

  1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高
  2. 谨慎放行入站的请求
  3. 有特殊目的的限制访问功能,要在放行前加以拒绝
  4. 同类规则,匹配范围小的在前,用于特殊处理,例如:允许7访问8,但是不允许其他机器访问8,就把7放在前,所有地址放在后
  5. 不同类型的规则(访问不同应用,http/mysql),匹配范围大的在前,效率更高
  6. 尽可能将多条规则合并为一条规则,提高检查效率
  7. 设置默认策略,建议设置白名单(只放行特定连接)
    iptables -P 尽量不用,容易产生自杀情况
    规则的最后定义为默认策略,推荐使用,放在最后一条。
    例如:不允许所有连接放在最后,然后在前面的规则加允许哪台访问ssh、http、mysql等服务

4.2 保存规则及载入

sh
#保存 centos7/8 iptables-save > /data/iptables.rules #保存已经设置的规则到/data/iptables.rules中 centos6 service iptables save #将已设置的规则保存到/etc/sysconfig/iptables文件中 #加载 centos7/8 iptables-restore < /data/iptables.rules #载入保存的规则文件 centos6 service iptables restart #将会从/etc/sysconfig/iptables文件中重新载入规则
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:笑一个吧~

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 本文为博主「笑一个吧~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 许可协议。转载请注明出处!