ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell编程之iptables

2021-06-20 15:33:10  阅读:181  来源: 互联网

标签:iptables shell 245.211 DROP 规则 INPUT 数据包 编程


Linux包过滤防火墙概述

netfilter
1、位于Linux内核中的包过滤功能体系
2、称为Linux防火墙的“内核态”
iptables
1、位于/sbin/iptables,用来管理防火墙规则的工具
2、称为Linux防火墙的“用户态”

netfilter工作在底层,iptables工作在表层的工具实则还是调控的netfilter。

包过滤的工作层次

主要是网络层,针对IP数据包
体现在对包内的IP地址、端口等信息的处理上

iptables的表、链结构

1、规则表
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似
2、默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
3、规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
4、默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出战数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包

默认的表、链结构示意图

raw表:PREROUTING链、OUTPUT链
mangle表:PREROUTING链、POSTROUTING链、INPUT链、OUTPUT链、FORWARD链
nat表:PREROUTING链、POSTROUTING链、OUTPUT链、INPUT链
filter表:INPUT链、FORWARD链、OUTPUT链

数据包过滤的匹配流程

1、规则表之间的顺序
raw→mangle→nat→filter
2、规则链之间的顺序
入站:PREROUTING→INPUT
出战:OUTPUT→POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING
3、规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理

在这里插入图片描述

iptables安装

1、先关闭firewalld防火墙
2、安装iptables防火墙

yum -y install iptables-services

3、设置iptables开机启动

systemctl start iptables.service
systemctl enable iptables.service

iptables的基本语法

注意事项:
1、不指定表名时,默认指filter表
2、不指定链名时,默认指表内的所有链
3、除非设置链的默认策略,否则必须指定匹配条件
4、选项、链名、控制类型使用大写字母,其余均为小写

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
示例
iptables -t filter -I INPUT -p icmp -j REJECT 禁止所有人ping我

数据包的常见控制类型

ACCEPT:允许通过
DROP:直接丢弃,不给吃任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配,它本身不处理数据包

管理选项

管理选项说明用法示例
-A在指定链末尾追加一条iptables -A INPUT
-I在指定链中插入一条新的,未指定序号默认作为第一条iptables -I INPUT
-P指定默认规则iptables -P OUTPUT ACCEPT
-D删除iptables -t nat -D INPUT
-R修改、替换某一条规则iptables -t nat -R INPUT
-L查看iptables -t nat -L
-n所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名)iptables -L -n
-v查看时显示更详细信息,常跟-L一起使用
–line-number规则带编号iptables -t nat -L -n --line-number/iptables -t nat -L --line-number
-F清除链中所有规则iptables -F
-X清空自定义链的规则,不影响其他链iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S查看链的所有规则或者某个链的规则/某个具体规则后面跟编号iptables -t nat -S、iptables -t nat -S POSTROUTING

iptables命令

iptables -t filter -F  清空
iptables -vnL
iptables -t filter -X  清除自定义的链
iptables -t filter -Z  清除计数器
iptables -A   在末尾插入
iptables -I   在顶行插入
iptables -t filter -A INPUT -j REJECT  所有入站的数据包都拒绝   
iptables -L 查看链
iptables -D INPUT -j REJECT 删除入站的链
iptables -P INPUT DROP   默认拒绝所有入站(-P的时候后面不允许加-j)
iptables -R INPUT 1 -j DROP  修改入站第一条 
iptables -A INPUT -p icmp -s 192.168.245.211 -j DROP  禁止245.211这个IP主机Ping我(如果icmp换成tcp  ssh连接不了)
(-s 源地址就吃进去设置的  -d 目标地址 出去的)
iptables -A FORWARD -p tcp -s 192.168.245.100 -d 192.168.245.211 -j DROP  不允许从245.100来的信息去访问245.211
iptables -A INPUT -i ens33 -j DROP  进入ens33网卡所有的数据包都被禁用 (-i  进口   -o 出口)
iptables -A OUTPUT -o ens33 -j DROP

iptables -A INPUT ! -p icmp -j DROP 除了icmp,其他协议都不可以连接
iptables -A INPUT -p tcp --dport 80 -s 192.168.245.211 -j DROP  禁止245.211的80端口访问
iptables -A INPUT -p tcp -m multiport --dport 80,23,22 -s 192.168.245.211 -j DROP   禁用tcp 多个端口访问(如果是连续的端口范围中间可用:  20:80)
iptables -A OUTPUT -p icmp -m iprange --dst-range 192.168.245.2-192.168.245.211 -j DROP  不允许本机ping 
245.2到245.211范围的主机   (dst  目标地址   src 源地址)
iptables -A INPUT -p icmp -m mac --mac-source 00:0c:29:f4:bf:17 -j DROP  禁止这个物理地址的主机Ping我


如何让一个IP主机我能够ping它,它不能够ping我  简而言之就是我不收他的request包,但能收到他的reply包
iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.245.211 -j DROP   禁用245.211的request包
icmp类型(请求代码为8 回应代码为0)

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   允许已经联机和与主机发送封包有关的 数据包访问
NEW: 想要新建立联机的封包状态
ESTABLISHED: 已经联机成功的联机状态
RELATED: 表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定
INVALID: 无效的封包,例如数据破损的封包状态


/etc/sysconfig/iptables 记录增加的规则
iptables-save > /etc/sysconfig/iptables 重启不影响结果

标签:iptables,shell,245.211,DROP,规则,INPUT,数据包,编程
来源: https://blog.csdn.net/m0_48580960/article/details/117965388

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有