2024整理 iptables防火墙学习笔记大全_modepro iptables

news2024/12/26 20:48:23
  1. Iptables名词和术语 2
  2. iptables表(tables)和链(chains) 2
  3. 表及其链的功能 2
     Filter表 2
     NAT表 2
     MANGLE表 2
  4. iptables的工作流程 3
  5. iptables表和链的工作流程图 3
    二、 iptables实战应用 4
  6. iptables命令参数详解 4
     iptables内核模块 4
     清除默认规则 5
     禁止规则 5
     查看规则 5
  7. 详解匹配标准 5
     通用匹配:源地址目标地址的匹配 5
  8. 企业生产环境防火墙配置 6
  9. 生产环境如何维护防火墙 7
  10. 企业iptables面试题:自定义链处理syn攻击 8
  11. 部署企业及IDC机房网关 8
     服务器网关需具备如下条件 8
     加载iptables内核模块 8
     局域网的机器: 8
     局域网共享的两条命令方法 9
     把外部lP地址及端口映射到内部服务器地址及端口 9
  12. 企业内部局域网生产映射案例 9
     一对一ip映射 9
     映射多个外网IP上网 9
  13. 企业案例:dmesg里面显示错误 9
  14. iptables生产应用场景 9

iptables防火墙
一、iptables防火墙介绍
1.iptables防火墙简介
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好(本人曾经在赛扬50OHZ cpu 64M内存的情况部署网关防火墙)提供近400人的上网服务丝毫不逊色企业级专业路由器防火墙)。
IPtables是linux2.4及2.6内核中集成的服务。其功能与安全性比其老一辈ipfwadm,ipchains强大的多(长江水后浪推前浪啊),Iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,Iptables也可以支持七层控制(squid代理+iptables)。
2.Iptables名词和术语
l、容器:包含或者说属于的关系:
2、Netfilter/iptables是表的容器,iptables包含的各个表(filter,NAT,MANGLE,RAW)
3、iptables的表又是链的容器。链:INPUT,0UTPUT,FORWARD,PREROUTING,POSTROUTING
4、链是规则容器:
5、规则:一条条过滤的语句
3.iptables表(tables)和链(chains)
下面的表格展示了表和链的对应关系。
表(iptables) 链(chains)
INPUT FORWARD OUTPUT PREROUTING POSTROUTIING
FILTER
NAT
MANGLE
提示:所有链名都要大写
4.表及其链的功能
Filter表
主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables默认使用的表。这个表定义了三个链(chains):
企业工作场景:主机防火墙。
INPUT:负责过滤所有目标地址是本机地址的数据包。通俗的讲,就是过滤进入主机的数据包
FORWARD:负责转发流经主机的数据包。起转发的作用,和Nat关系很大,后面会详细介绍。Lvs NAT模式。net.ipv4.ip_forward=0
OUTPUT:处理所有源地址是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包。
强调:对于Filter表的控制是我们实现本机防火墙功能的重要手段,特别是对INPUT链的控制
NAT表
负责网络地址转换,即来源与目的ip地址和port的转换。应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关。
NAT功能一般企业工作场景.
l)用于做企业路由(zebra)或网关(iptables),共享上网(POSTROUTING)
2)做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,FTP
服务。(PREROUTING),
3)web,单个端口的映射,直接映射80端口(PREROUTING)。
这个表定义了三个链(chains),nat功能就相当于网络的acl控制。和网络交换机acl类似。
INPUT:和主机发出去的数据包有关。改变主机发出数据包的目标地址。
PREROUTING:在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等。(通俗比喻,就是收信时,根据规则重写收件人的地址,这看上去很不地道啊!哈哈。)例如:把公网IP;124.42.60.113映射到局域网的10.0.0.19服务器上。如果是web服务,可以把80转为局域网的服务器上9000端口。
POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等。(通俗比喻,就是寄信时,写好发件人的地址,要让人家回信时能够有地址可回。),例如:我们现在的笔记本和虚拟机都是10.0.0,0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。
MANGLE表
主要负责修改数据包中特殊的路由标记,如TTL,TOS,MAARK等。这个表定义5个链(Chains)。
INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING。
由于这个表与特殊标记相关,一般情况下,我们用不到这个mangle表,这里就不做详细介绍了。
5.iptables的工作流程
前面介绍己经提到,iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
数据包的流向是从左向右的

小结:
防火墙是层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
如果匹配上规则,即明确表明是阻止还是通过,数据包就不在向下匹配新规则了。
如果所有规则中没有明确表明是阻止还是通过,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
防火墙默认规则是所有的规则执行完才会执行的。
重点:匹配上了拒绝规则也是匹配,例如
[root@mysql ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP
[root@mysql ~]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
此时telnet ip address 3306 是不同的,原因就是telnet请求已先匹配上了拒绝规则,因此不会再找下面的规则匹配了。如果希望telnet ip address 3306连通,可以把ACCEPT规则中的-A改为-I,即iptables -I INPUT -p tcp --dport 3306 -j ACCEPT,把允许规则放于INPUT链的第一行生效
6.iptables表和链的工作流程图
下面的这张图清晰的描绘了netfilter对包的处理流程

二、iptables实战应用
1.iptables命令参数详解
iptables内核模块
[root@mysql ~]# /etc/init.d/iptables start #启动防火墙
如果遇到iptables无法启动,可以通过setup–firewall configure–enable
[root@mysql ~]# lsmod|egrep “nat|filter|ipt” #iptables默认加载内核模块
iptable_filter 2793 1
ip_tables 17831 1 iptable_filter
加载如下模块到linux内核
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
清除默认规则
[root@mysql ~]# iptables -h #查看帮助
[root@mysql ~]# iptables -F #清除所有规则,不会处理默认的规则。
[root@mysql ~]# iptables -X #删除用户自定义的链。
[root@mysql ~]# iptables -Z #链的记数器清零。
–flush -F [chain] Delete all rules in chain or all chains
–delete-chain -X [chain] Delete a user-defined chain
–zero -Z [chain [rulenum]] Zero counters in chain or all chains
禁止规则
[root@mysql ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP #禁止访问22端口
[root@mysql ~]# iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP #禁止IP地址段进入eth0网卡的流量
–table -t table table to manipulate (default: `filter’)
–append -A chain Append to chain #添加链,最后一条
–new -N chain Create a new user-defined chain #创建一个新链
–policy -P chain target Change policy on chain to target
–insert -I chain [rulenum] Insert in chain as rulenum (default 1=first) #添加链第一条
–delete -D chain Delete matching rule from chain #删除链
–proto -p proto protocol: by number or name, eg. ‘tcp’
–dport #指定目的端口
–in-interface -i input name[+] network interface name ([+] for wildcard)
–source -s address[/mask][…] source specification
-j, --jump target #对规则进行ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
打台球:如果对方告诉你不去,REJECT(拒绝),如果对方没反应,DROP(丢弃),DROP好于REJECT
使用-I和-A的顺序,防火墙的过滤根据规则顺序的
-A是添加规则到指定链的结尾,最后一条。
-I是添加规则到指定链的开头,第一条。此参数经常用来封IP
测试配置拒绝规则也是匹配
下面的测试有两个要点:非的作用,匹配拒绝也是匹配
Centos5.8版本:iptables -t filter -A INPUT -i eth0 -s ! 192.168.80.1 -j DROP
Centos6.4版本:iptables -t filter -A INPUT -i eth0 ! -s 192.168.80.1 -j DROP
查看规则
[root@mysql ~]# iptables -L -n --line-numbers #以数字形式列出防火请规则
–list -L [chain [rulenum]] List the rules in a chain or all chains
–numeric -n numeric output of addresses and ports
–line-numbers print line numbers when listing #可以用此参数显示的序号删除规则
[root@mysql ~]# iptables -t filter -D INPUT 1 #删除第一条规则
2.详解匹配标准
通用匹配:源地址目标地址的匹配
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上
隐含扩展:对协议的扩展
-p tcp :TCP协议的扩展。一般有三种扩展
–dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口,比如
–dport 21 或者 --dport 21-23 (此时表示21,22,23)
–sport:指定源端口
–tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
-p udp:UDP协议的扩展
–dport
–sport
-p icmp:icmp数据报文的扩展
–icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
显式扩展(-m)
扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80
iptables -t filter -A INPUT -p icmp --icmp-type 8 ! -s 192.168.80.1 -j DROP #禁止ping
iptables -A INPUT -d 192.168.80.100 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp ! --dport 22 -s 192.168.80.1 -j DROP
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21:24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21,22,23,24 -j ACCEPT #错误
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
3.企业生产环境防火墙配置
清除默认规则
iptables -F
iptables -X
iptables -Z
设置允许本地网段ssh登录
iptables -A INPUT -p tcp --dport 52113 -s 192.168.80.0/24 -j ACCEPT
设置允许本机lo通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
设置默认的防火墙禁止和允许规则:DROP掉FORWARD、INPUT,允许OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
开启信任的ip网段
#允许IDC LAN/WAN和办公网IP的访问,及对外合作机构访问
iptables -A INPUT -s 124.43.62.95/27 -p all -j ACCEPT #办公室固定IP段
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT #IDC机房的内网网段
iptables -A INPUT -s 10.0.0.0/27 -p all -j ACCEPT #其他机房的内网网段
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT #IDC机房的外网网段
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT #其他IDC机房的外网网段
允许业务服务端口对外访问(80)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许icmp类型协议通过
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 如果不想开,就不执行此步
iptables -A INPUT -p icmp -s 192.168.80.0/24 -m icmp --icmp-type 8 -j ACCEPT #允许内网ping
允许关联的包通过(ftp协议)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
使用其他主机扫描此主机的端口
[root@nfs ~]# nmap 192.168.80.105 -p 1-65535

Starting Nmap 5.51 ( http://nmap.org ) at 2016-05-20 20:14 CST
Nmap scan report for mysql.etiantian.org (192.168.80.105)
Host is up (0.00051s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE
80/tcp closed http
52113/tcp open unknown
MAC Address: 00:0C:29:5D:1D:81 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 118.12 seconds
保存防火墙的配置

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
725608316211)]
[外链图片转存中…(img-4NObmQMa-1725608316212)]
[外链图片转存中…(img-rw4JGTxR-1725608316213)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2114181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础part1

Python基础 语法 字面量 数字 整数浮点复数布尔 字符串列表 list元组 Tuple集合 Set字典 Dictionary 注释 单行# 单行注释的内容多行“”“ 多行注释的内容 ”“” 单行注释#后要加一个空格再写注释 变量 变量无类型,但数据有类型 语法: 变量名 …

java黑马微项目

1 飞机票 代码实现: import java.util.Scanner; public class F1 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print("请输入票价: ");double jia input.nextDouble();System.out.print(&…

培训第九周(部署k8s基础环境)

一、前期系统环境准备 1、关闭防火墙与selinux [rootk8s-master ~]# systemctl stop firewalld[rootk8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-o…

快速格式化和格式化的区别有哪些?

磁盘通常需要格式化才能正常使用,通过格式化,磁盘结构才能被操作系统正确识别。磁盘格式化分为快速格式化和格式化(完全格式化),它们都是格式化的方法,下面是它们的详细区别。 磁盘快速格式化和格式化的区别…

2024 年高教社杯全国大学生数学建模竞赛B题第三问详细解题思路(终版)

示例代码: import numpy as np import pandas as pd# 参数设定 params {m: 8, # 零配件数量n: 2, # 半成品数量p: [0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10], # 零配件次品率c: [2, 8, 12, 2, 8, 12, 8, 12], # 购买单价d: [1, 1, 2, 1, 1, 2, 1, 2]…

个性化阅读体验:Spring Boot驱动的图书推荐系统

1 绪论 1.1研究背景 随着网络不断的普及发展,图书个性化推荐系统依靠网络技术的支持得到了快速的发展,首先要从学生的实际需求出发,通过了解学生的需求开发出具有针对性的首页、图书信息、好书推荐、留言反馈、个人中心、后台管理功能&#x…

文本分类场景下微调BERT

How to Fine-Tune BERT for Text Classification 论文《How to Fine-Tune BERT for Text Classification?》是2019年发表的一篇论文。这篇文章做了一些实验来分析了如何在文本分类场景下微调BERT,是后面网上讨论如何微调BERT时经常提到的论文。 结论与思路 先来看…

19:HAL—-DAC

一&#xff1a;介绍 1&#xff1a;简历 2&#xff1a;简图 F1,F4,F7的DAC框架图都一样。 触发源&#xff1a; 宏定义补全及解释 #define DAC_TRIGGER_NONE 0x00000000UL /*!< 转换是自动的&#xff0c;一旦DAC1_DHRxxxx寄存器被加载&#xff0c;不由外部触发 */ #define …

ctfshow-php特性(web123-web150plus)

​web123 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!preg_match("/\\\\|\/|\~|…

AI模型的未来之路:全能与专精的博弈与共生

人工智能(AI)领域正迅速发展,伴随着技术的不断进步,AI模型的应用范围也在不断扩展。当前,AI模型的设计和使用面临两个主要趋势:全能型模型和专精型模型。这两者之间的博弈与共生将塑造未来的AI技术格局。本文将从以下七个方面探讨AI模型的未来之路,并提供实用的代码示例…

软考-高级架构师Keywords(上半部分)

概述 本文用于备考时自查知识点掌握情况&#xff0c; 知识点只以关键词方式提点出来&#xff0c;算是对照考纲的细碎化转化。 太简单的知识点不会收录。特别适合 通过中级-软件设计师的同学 / 八股文爱好者 / 408选手 计算机硬件 码距&#xff1a;改变n位成为另一个编码所需要…

业务资源管理模式语言09

示例&#xff1a; 图13 表示了QuoteTheMaintenance 模式的一个实例&#xff0c;在汽车修理店系统中&#xff0c;其中“Vehicle”扮演“Resource”&#xff0c;“Repair Quotation”扮演“Maintenance Quotation”&#xff0c;“Repair shop branch”扮演“Source-party”&…

halcon图像怎么显示在我们指定的区域

要想搞明白这个问题,首先我们要了解句柄的传递关系. halcon生成图像,会产生一个图像句柄,只要把该句柄传递给我们需要显示的组件就可以了. 简单说,就是一个句柄的传递关系. 下面这个例子简单说明句柄传递关系: 我们获取一个图像控件的句柄,把图像句柄传递给halcon的图像窗口句…

BN于神经网络调优

目录 一:神经网络调优 1.算法层面: 2.网络层面 二:调参技巧: 2.合理的参数设置: 3.运行: 三:批标准化(Batch Normalizetion) 1.批标准化公式: 2.过程图: 3.为什么标准化能够是优化过程变得简单: 一:神经网络调优 参数调优也称为超参数调优 1.算法层面…

JS手写实现深拷贝

手写深拷贝 一、通过JSON.stringify二、函数库lodash三、递归实现深拷贝基础递归升级版递归---解决环引用爆栈问题最终版递归---解决其余类型拷贝结果 一、通过JSON.stringify JSON.parse(JSON.stringify(obj))是比较常用的深拷贝方法之一 原理&#xff1a;利用JSON.stringif…

刘诗诗现身纽约两场活动,演绎极具松弛感的优雅,生图状态绝美

近期&#xff0c;纽约迎来了时装周&#xff0c;还有奢侈品牌活动陆续举办&#xff0c;演员刘诗诗也现身部分活动现场&#xff0c;以绝佳好状态收获大量关注和好评。 纽约时间9月4日&#xff0c;刘诗诗现身Bobbi Brown芭比波朗「IN MY SKIN GLOBALEVENT」活动&#xff0c;身穿裸…

ubuntu 和windows用samba服务器实现数据传输

1&#xff0c;linux安装samba服务器 sudo apt-get install samba samba-common 2&#xff0c;linux 配置权限&#xff0c;修改目录权限&#xff0c;linux下共享的文件权限设置。 sudo chmod 777 /home/lark -R 3. 添加samba用户 sudo smbpasswd -a lark 4&#xff0c;配置共享…

【AcWing】853. 有边数限制的最短路(bellman-ford贝尔曼福特算法)

存储&#xff1a; 这个算法存边不一定要写成邻接表&#xff0c;随便存&#xff0c;只要能遍历到所有边即可&#xff0c;结构体数组。 过程&#xff1a; 负权边、负权回路&#xff1a; 贝尔曼福特算法处理有负权边的图。(注意&#xff0c;有负权回路的话&#xff0c;最短路径就不…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月7日新模型预测第80弹

经过近80期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;70多期一共只错了8次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

2024PyCharm专业版详细安装激活教程

如果你正在学习Python&#xff0c;那么你需要的话可以&#xff0c;点击这里&#x1f449;Python重磅福利&#xff1a;入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享&#xff01; 前言 PyCharm是由JetBrains公司开发的一款强大的Python集成开发环境&#…