iptables 介绍
-t 指定规则表NAT,mangle,默认filter,
filter 数据包过滤
NAT 地址转换
mangle策略路由,给数据包后面盖戳,进行路由
iptables具有Filter, NAT, Mangle, Raw四种内建表:
1. Filter表
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
2. NAT表
NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。
3. Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
4. Raw表
Raw表用于处理异常,它具有2个内建链:
PREROUTING chain
OUTPUT chain
-A 追加
-I 插入
-D -delete,删除,从所选链中删除一条或更多规则
-F FLASH,清除,清空规则链的(注意每个链的管理权限)
-L -list显示,显示所选链的所有规则
-R -replace从选中的链中取代一条规则
-P -policy
设置链的目标规则。
-E -rename-chain
根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响
-j ACTION
-j --jump target
-j 目标跳转
指定规则的目标;也就是说,如果包匹配应当做什么。
常用的ACTION:
DROP:悄悄丢弃,一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT SNAT这个目标只适用于nat表的POSTROUTING链
MASQUERADE:源地址伪装,MASQUERADE只用于nat表的POSTROUTING链。
REDIRECT:重定向:主要用于实现端口重定向,只适用于nat表的PREROUTING和OUTPUT链,和只调用它们的用户自定义链
MARK:打防火墙标记的,MARK用来设置包的netfilter标记值。只适用于mangle表。
RETURN:返回,在自定义链执行完毕后使用返回,来返回原规则链。
LOG为匹配的包开启内核记录
通用匹配:源地址目标地址的匹配
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP,而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据,流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据,流出一般在OUTPUT和POSTROUTING上
防火墙的策略
防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。
我们现在用的比较多个功能有3个:
1.filter 定义允许或者不允许的
2.nat 定义地址转换的
3.mangle功能:修改报文原数据
我们修改报文原数据就是来修改TTL的。能够实现将数据包的元数据拆开,在里面做标记/修改内容的。而防火墙标记,其实就是靠mangle来实现的。
小扩展:
对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
InPUT 和FORWARD互斥生效,即任选其一生效,一个生效,另一个失效
下面是适合Web服务器的iptables规则:
IPT="/sbin/iptables"
$IPT --delete-chain
$IPT --flush
$IPT -P INPUT DROP #1
$IPT -P FORWARD DROP#1
$IPT -P OUTPUT DROP #1
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #2
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #3
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #3
$IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT#3
$IPT -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT #3
$IPT -A INPUT -i lo -j ACCEPT #4
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#5
$IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #5
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #6
$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT #7
$IPT -A OUTPUT -o lo -j ACCEPT #4
$IPT -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT #8
$IPT -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT #9
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#10
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #10
service iptables save
service iptables restart
存为脚本iptables. sh,执行sh iptables. sh自动配置防火墙。
解释:
#1、设置INPUT,FORWARD,OUTPUT链默认target为DROP,也就是外部与服务器不能通信。
#2、设置当连接状态为RELATED和ESTABLISHED时,允许数据进入服务器。
#3、设置外部客户端连接服务器端口80,22,21,873。
#4、允许内部数据循回。
#5、允许外部ping服务器。
#6、设置状态为RELATED和ESTABLISHED的数据可以从服务器发送到外部。
#7、允许服务器使用外部dns解析域名。
#8、设置服务器连接外部服务器端口80。
#9、允许服务器发送邮件。
#10、允许从服务器ping外部。
iptables保存:iptables-save
iptables还原:iptables-restore
相关推荐
最后,“Linux必学的60个命令(六)——其它命令”可能会涵盖一些实用但不那么常见的命令,如`history`查看命令历史,`alias`创建别名,`script`记录终端会话,`sed`和`awk`进行文本流处理,以及`tar`进行文件归档和...
命令行是Linux的核心部分,教程会详细讲解各种常用命令,如ls、cd、mkdir、rm、cp、mv等,这些命令是日常操作Linux系统的基础。此外,还将涉及文件权限和所有权的概念,如chmod和chown命令,以及如何使用find、grep...
Linux操作系统是全球最广泛使用的开源操作系统之一,尤其在服务器领域占据主导地位。"Linux学习必备"这个主题针对的是想要入门Linux的初学者,涵盖了Linux的安装以及基础学习内容。在这个过程中,你将了解到Linux的...
同时,也会讲解Linux的安全管理,如防火墙iptables、 SELinux安全策略等,确保系统的稳定和安全。 通过阅读《[大家网]鸟哥的Linux私房菜 基础学习篇(第三版)[www.TopSage.com].pdf》,读者可以逐步掌握Linux的基本...
Linux是世界上最广泛使用的开源操作系统之一,对于初学者来说,它可能显得有些陌生,但深入了解后,你会发现它的强大和灵活性。本篇文章将针对“初学Linux必看”这一主题,结合提供的资源《LINUX应用技术精华{面向...
网络方面,学习如何配置网络接口,使用`ifconfig`、`route`和`netstat`命令,以及理解防火墙规则(如`iptables`)是必备技能。对于服务器运维,还需要了解如何管理服务(如使用`systemd`或`init`),日志查看(如`...
这个压缩包包含4本相关的电子书,这些书籍通常会涵盖Linux的基本概念、常用命令、系统管理以及高级主题。 1. **Linux基础知识**:Linux是一种开源的操作系统,基于Unix,由林纳斯·托瓦兹创建。它的核心是内核,...
学习Linux首先会接触到安装过程,包括选择发行版(如Ubuntu、CentOS、Fedora等)、分区管理、设置引导加载器等。了解系统的启动流程,包括BIOS、MBR、GRUB、内核加载以及初始化进程,对理解系统运行机制至关重要。 ...
10. **系统安全与防火墙**:Linux中的安全措施包括权限设置、防火墙(如iptables、firewalld)以及 SELinux等,书会讲解如何保护系统免受攻击。 11. **软件测试与调试**:对于标签"软件测试",书中可能包含一些基础...
Linux是世界上最广泛使用的开源操作系统之一,它为个人用户、企业乃至超级计算机提供了强大的计算平台。"Linux实用培训学习教程1.0"是一个针对初学者设计的教程,旨在帮助你掌握Linux的基础知识,使你能够更好地理解...
教程会讲解用户和组的管理,以及如何设置防火墙规则(如iptables)以保护系统安全。 最后,教程可能包含一些高级话题,如shell脚本编写、系统监控工具(如top、htop、iotop)、性能分析和故障排查技巧。 通过这个...
Linux是世界上最广泛使用的开源操作系统之一,它为个人用户、企业乃至超级计算机提供了强大的计算平台。这份"linux最新视频资源"涵盖了Linux系统的核心概念、管理和运维技术,旨在帮助学习者深入理解这一开放源代码...
《兄弟连Linux》是一套专为初学者设计的Linux教学资源,总计16个章节,包含丰富的课件和视频教程,总大小约为6.7GB。...在学习过程中,配合课件和视频,理论与实践相结合,相信你的Linux之路会更加顺畅。
这个手册可能还会涵盖Linux内核、编译定制系统、容器技术如Docker、虚拟化如KVM等内容,这些都是高级Linux使用者必备的知识。 总的来说,"Linux命令大全+Linux高手修炼手册"是一套全面的学习资料,涵盖了从初级到...
课程会介绍基本的安全实践,如用户权限管理、防火墙配置(iptables)以及如何防止恶意攻击。 **13. 实战演练** 最后一章通常是实战练习,通过模拟场景让你巩固所学知识,提高实际操作技能。 这份清华大学的Linux...
安全方面,会讲解Linux防火墙iptables、用户和组管理、访问控制列表(ACL)以及加密技术。 最后,为了适应不断发展的Linux世界,书中可能会介绍一些现代Linux发行版的特色,如Ubuntu、CentOS、Debian等,并涵盖虚拟...
Linux是世界上最广泛使用的开源操作系统之一,对于初学者来说,它提供了丰富的学习资源和强大的功能。本文将基于"linux菜鸟入门,快学易用"的主题,深入浅出地讲解Linux的基础知识,包括常用的命令、开发环境的搭建...
Linux 的命令行界面(CLI)是其强大的工具之一。基本命令如`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm`(删除文件/目录)是日常操作中不可或缺的。学习使用`man`命令查看命令手册,能帮你...
Linux操作系统是全球最广泛使用的开源操作系统之一,以其稳定、安全和可定制性著称。这份“Linux课件”旨在帮助初学者对Linux有一个全面而基础的认识,并能够进行基本的操作和使用。以下是一些核心的Linux知识点,...
8. **系统安全与防火墙**:Linux的安全性是其一大特点,包括用户权限设定、SELinux、防火墙(iptables、firewalld)等内容,书中会有详细阐述,帮助读者构建安全的系统环境。 9. **故障排查**:书中还会涵盖日志...