网络安全-iptables防火墙

netfilter/iptables是集成在Linux2.4.X版本内核中的包过滤防火墙系统

netfilter/iptables框架可以实现数据包过滤、网络地址转换以及数据包管理功能

Linux中防火墙系统包括两部分:netfilter和iptables;netfilter位于内核空间,iptables是用户工具

iptables默认维护着四个表和五个链

默认的iptables规则表有:fileter表(过滤规则表)、nat表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表)

每个规则表中包含多个数据链:INPUT(入站数据过滤)、OUTPUT(出站数据过滤)、FORWARD(转发数据过滤)、PREROUTING(路由前过滤)、POSTROUTING(路由后过滤)

iptables防火墙语法格式:

命令描述:netfilter防火墙规则管理工具

用法:iptables [-t 表名]{-A|-D|-I|-D|-F|-L|-Z|-P} 链名 rule-specification

选项:-t 指定需要维护的防火墙规则表,不使用-t时,默认操作对象为filter表

-A 追加防火墙规则

-D 删除防火墙规则

-I 插入防火墙规则

-F 清空防火墙规则

-L 列出防火墙规则

-R 替换防火墙规则

-Z 清空防火墙数据表统计信息

-P 设置链默认规则

匹配参数:[!]-p        匹配协议,!代表取反

[!]-s        匹配源地址

[!]-d        匹配目标地址

[!]-i        匹配入站网卡接口

[!]-o        匹配出站网卡接口

[!]--sport   匹配源端口

[!]--dport   匹配目标端口

[!]--src-range 匹配源地址范围

[!]--dst-range 匹配目标地址范围

[!]--limit     匹配数据表速率

[!]--mac-source 匹配源MAC地址

[!]--sports     匹配源端口

[!]--dports     匹配目标端口

[!]--state      匹配状态(INVALID、ESTABLISHED、NEW、RELATED)

[!]--string     匹配应用层字串

触发动作:ACCEPT    允许数据包通过

DROP      丢弃数据包

REJECT    拒绝数据包通过

LOG       将数据包信息记录syslog日志

DNAT      目标地址转换

SNAT      源地址转换

MASQUERADE 地址欺骗

REDIRECT   重定向

-A选项添加防火墙规则会将该规则追加到整个链的最后,而使用-I选项添加的规则默认会插入到链中作为第一条规则

例子:

[[email protected] /]# iptables -nL       //查看filter表的所有规则

[[email protected] /]# iptables -t nat -nL    //查看nat表的所有规则

[[email protected] /]# iptables -F     //清空filter表中的所有规则

[[email protected] /]# iptables -A INPUT -s 192.168.0.1 -j DROP    //往filter表添加一条新的入站规则,丢弃192.168.0.1主机发送给防火墙本身的所有数据包

[[email protected] /]# iptables -I INPUT -s 192.168.0.22 -p icmp -j REJECT  //往filter表插入一条新的入站规则,拒绝192.168.0.22 ping防火墙本机

[[email protected] /]# iptables -nL --line-number     //查看filter表中防火墙规则并显示规则编号

[[email protected] /]# iptables -D INPUT 1    //删除filter表中INPUT链的第一条规则

[[email protected] /]# iptables -R INPUT 2 ! -s 192.168.0.254   -j REJECT  //替换filter表中INPUT链的第二条规则,拒绝192.168.0.254之外的任何主机连接防火墙本机

[[email protected] /]# iptsbles -t filter -P INPUT ACCEPT   //修改filter表中INPUT链的默认规则为接受数据包

[[email protected] /]# iptables -I INPUT -s 192.168.0.10 -p tcp --dport 22 -j LOG   //将192.168.0.10主机发送给防火墙本机22端口的所有数据包信息记录到messages日志

[[email protected] /]# iptables -I INPUT -i eth0 --p tcp --dport 80 -j ACCEPT   //允许任何主机从eth0网络接口访问防火墙本机的80端口

iptables防火墙应用案例

案例1:允许任意客户端访问服务器主机提供的日常服务(HTTP、HTTPS、DNS、NTP、SMTP、POP3、SSH),在Linux系统中,/etc/services文件可以帮助我们找到各种服务所对应的标准端口信息。

[[email protected] /]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p udp --dport 25 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p udp --dport 53 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p tcp --dport 143 -j ACCEPT

[[email protected] /]# iptables -A INPUT -p tcp --dport 123 -j ACCEPT

[[email protected] /]# iptables -P INPUT DROP

[[email protected] /]# iptables -P OUTPUT ACCEPT

案例2:公司拥有一个公有IP,使用防火墙实现局域网中所有的主机通过SNAT共享上网,使用CentOS作为公司软路由,公司内部所有192.168.0.0/24网段内的主机连接外网时,防火墙自动将所有数据包的源地址修改为路由器上的公有IP,最后互联网将信息返回路由后,由路由再转交给真正的后端主机。防火墙源地址转换(SNAT)规则需要被写入到NAT表的POSTROUTING链。

[[email protected] /]# vim /etc/sysctl.conf

net.ipv4.ip_forward =1            //开启路由转发,实现基于Linux的软路由功能

[[email protected] /]# sysctl -p         //重新加载内核参数配置文件/etc/sysctl.conf

[[email protected] /]# iptables -t nat -I  POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 124.126.199.84

案例3:公司对外有一个公有IP,内部有HTTP、MAIL两台核心服务器,通过防火墙实现客户可以从互联网的任意位置访问位于公司内部的两台服务器资源

[[email protected] /]# vim /etc/sysctl.conf

net.ipv4.ip_forward =1            //开启路由转发,实现基于Linux的软路由功能

[[email protected] /]# sysctl -p         //重新加载内核参数配置文件/etc/sysctl.conf

[[email protected] /]# iptables -t nat -I PREROUTING -d 124.126.198.84 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100

[[email protected] /]# iptables -t nat -I PREROUTING -d 124.129.198.84 -p tcp --dport 25 -j DNAT --to-destination 192.168.0.101

[[email protected] /]# iptables -t nat -I PREROUTING -d 124.126.198.84 -p tcp --dport 110 -j DNAT --to-destination 192.168.0.101

案例4:数据包因为太大无法一次完成数据的传输,此时数据包将被分割为数据片段再发送出去,接收端接收完数据后,将把这些数据片段重新组合成完整的数据包。但问题在于当数据被分割后,只有前面的初始数据片段包含全部的数据头部信息(IP、TCP、UDP、ICMP等),后续的数据片段仅包含数据包头部信息的一部分。这时再去检查后续数据片段的头部信息是不可能的。当然,如果你想匹配第二个及后面被分片的数据,可以使用“-f”选项

丢弃发送至192.168.1.1的所有数据以及分片数据

[[email protected] /]# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP

案例5:目前网络上的攻击手法层出不穷,很多攻击会采用发送大量无效的数据包给服务器,造成服务器无法响应正常的请求包,iptables提供了一个limit扩展功能,可以限制单位时间内数据包的个数。下面的规则是当每秒钟数据包个数为500时接受入站连接,否则拒绝连接

[[email protected] /]# iptables -I INPUT -m limit --limit 500/sec -j ACCEPT

[[email protected] /]# iptables -P INPUT DROP

案例6:企业环境中,服务器会面临各种各样的攻击,iptables本身属于三层包过滤防火墙,但也提供了string扩展功能,通过--string也可以根据关键词限制网络连接。将下面两条记录写入基于Linux的软路由服务器规则中,实现拒绝转发包含有关键词/etc/passad 以及qq的数据包,也就是防止将密码文件复制出局域网,并防止内部员工访问QQ网站

[[email protected] /]# iptables -I FORWARD -m string --algo bm --string "/etc/passwd" -j REJECT

[[email protected] /]# iptables -I FORWARD -m string --algo bm --string "qq" -j REJECT

案例7:根据数据连接状态设置防火墙规则,放行所有的出站数据包,拒绝入站的新连接请求与无效连接,放行入站的回应请求

[[email protected] /]# iptables -F

[[email protected] /]# iptables -A INPUT -m state --state NEW -j DROP

[[email protected] /]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] /]# iptables -P OUTPUT ACCEPT

案例8:公司采用基于Linux的软路由设备,要求在路由设备上设置防火墙规则,记录192.168.0.1至192.168.0.22地址段内所有的主机发送给路由要求转发的数据包,并允许转发这些数据包

[[email protected] /]# iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.10 -p tcp --dport 80 -j LOG

[[email protected] /]# iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.10 -p tcp --dport 80 -j ACCEPT

时间: 2024-10-25 14:35:15

网络安全-iptables防火墙的相关文章

iptables防火墙高级应用

iptables 防火墙(主机防火墙) 前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但只要多做几遍,也就简单了. 一.防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. 1.iptables的表.链结构 Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默

iptables防火墙应用

安全服务--Iptables  一.网络安全访问控制我们都知道,Linux一般作为服务器使用,对外提供一些基于网络的服务,通常我们都需要对服务器进行一些网络控制,类似防火墙的功能,  常见的访问控制包括:那些IP可以访问服务器,可以使用那些协议,那些接口.那些端口 是否需要对数据包进行修改等等.如果某服务器受到攻击,或者来自互联网哪个区域或者哪个IP的攻击,这个时候应该禁止所有来自该IP的访问.那么Linux底层内核集成了网络访问控制,通过netfilter模块来实现.  iptables作用:

深入研究iptables防火墙基础

防伪码:没有比脚更长的路,没有比人更高的山 第十章 iptables防火墙(一) 前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但"只要功夫深铁杵磨成针". 一.基础概念 1.iptables表.链结构 a.规则表 表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 默认包括4个规则表 raw表:确定是否对该

iptables防火墙网路安全实践配置

01:iptables防火墙网络安全前言介绍企业中安全配置原则:尽可能不给服务器配置外网IP,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网IP,可以开启防火墙服务.大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全. iptables防火墙概念介绍Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进

Iptables防火墙(一)

一.Linux防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. netfilter和iptables都用来指Linux防火墙,主要区别是: netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"的防火墙功能体系. iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于"用户态"的防火墙管理体系. 1.iptables的表.链结构 Ipt

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

基于linux的web服务器的iptables防火墙安全优化设置

安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) #iptables –P INPUT ACCEPT #iptables –P OUTPUT ACCEPT #iptables –P FORWARD ACCEPT 以上几步操作是为了在清除所有规则之前,通过所有请求,如果远程操作的话,防止远程链接断开. 接下来清除服务器内置规则和用户自定义规则: #iptables –F #iptables -X 打开ssh端口,用于远程链接用: #iptables –A INPUT

iptables防火墙配置详解

iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,output和forward: nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output: mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING: inpu