linux防火墙的设置
Linux下设置防火墙白名单方法是什么

Linux下设置防火墙白名单方法是什么防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。
下面小编就为大家带来一篇Linux 下设置防火墙白名单(RHEL 6和CentOS 7)的步骤。
小编觉得挺不错的,现在就分享给大家,也给大家做个参考。
一起跟随小编过来看看吧方法步骤进入Linux 命令行,编辑防火墙规则配置文件 iptablesvi /etc/sysconfig/iptables下面是一个白名单设置的例子:# Firewall configuration written by system-config-securitylevel# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:RH-Firewall-1-INPUT - [0:0]-N whitelist-A whitelist -s 10.202.106.1 -j ACCEPT-A whitelist -s 10.202.106.2 -j ACCEPT-A whitelist -s 10.202.106.3 -j ACCEPT-A whitelist -s 10.202.106.4 -j ACCEPT-A whitelist -s 10.202.106.5 -j ACCEPT-A whitelist -s 10.202.106.6 -j ACCEPT-A whitelist -s 10.202.106.7 -j ACCEPT-A INPUT -j RH-Firewall-1-INPUT-A FORWARD -j RH-Firewall-1-INPUT-A RH-Firewall-1-INPUT -i lo -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT-A RH-Firewall-1-INPUT -p 51 -j ACCEPT-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4750 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibitedCOMMIT其中设置白名单的部分为:-N whitelist-A whitelist -s 10.202.106.1 -j ACCEPT-A whitelist -s 10.202.106.2 -j ACCEPT-A whitelist -s 10.202.106.3 -j ACCEPT-A whitelist -s 10.202.106.4 -j ACCEPT-A whitelist -s 10.202.106.5 -j ACCEPT-A whitelist -s 10.202.106.6 -j ACCEPT-A whitelist -s 10.202.106.7 -j ACCEPT使用白名单规则使用 j 参数指定:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp--dport 3306 -j whitelist补充阅读:防火墙主要使用技巧一、所有的防火墙文件规则必须更改。
Linux命令高级技巧使用iptables和ufw命令进行网络防火墙配置

Linux命令高级技巧使用iptables和ufw命令进行网络防火墙配置Linux命令高级技巧:使用iptables和ufw命令进行网络防火墙配置在Linux操作系统中,网络防火墙是保护系统网络安全的重要组成部分。
通过合理配置网络防火墙规则,可以控制网络流量的进出,阻挡恶意攻击和未经授权的访问,确保系统的安全性。
本文将介绍Linux 中的两个重要命令iptables和ufw,以及使用它们进行网络防火墙配置的高级技巧。
一、iptables命令iptables是Linux中主要的防火墙工具,可以在内核级别对进出的网络流量进行过滤、转发和NAT(Network Address Translation)等操作。
下面是一些常用的iptables命令及其用法:1. 启用IP转发功能在做网络防火墙配置之前,需要确保系统开启了IP转发功能。
可以使用以下命令启用:```shellsysctl -w net.ipv4.ip_forward=1```此命令将系统的`net.ipv4.ip_forward`参数设置为1,即开启IP转发功能。
2. 基本规则设置使用以下命令创建一条基本的防火墙规则,允许本地主机的所有传入和传出流量:```shelliptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT```这些命令将INPUT、OUTPUT和FORWARD链的默认策略都设置为ACCEPT,即允许全部流量。
3. 添加规则可以使用iptables命令添加特定的防火墙规则,以允许或拒绝特定的流量。
例如,以下命令将允许来自192.168.1.100的主机的SSH连接:```shelliptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT```此命令将在INPUT链中添加一条规则,允许源IP为192.168.1.100,目标端口为22的TCP连接。
使用Linux终端命令进行防火墙设置和管理

使用Linux终端命令进行防火墙设置和管理一、介绍Linux操作系统是一种广泛使用的操作系统,其安全性备受关注。
在Linux系统中,防火墙是保护计算机网络安全的重要组成部分。
本文将介绍如何使用Linux终端命令进行防火墙的设置和管理。
二、防火墙的基本概念防火墙是一种网络安全设备,用于设置规则和策略,限制进出计算机网络的流量。
它可以过滤网络数据包,防止恶意攻击和未经授权的访问。
在Linux系统中,防火墙通常使用iptables命令来实现。
三、iptables命令的基本用法1. 查询防火墙规则:使用iptables -L命令可以列出当前的防火墙规则。
例如,输入以下命令:```shelliptables -L```2. 添加防火墙规则:使用iptables -A命令可以添加一条新的防火墙规则。
例如,要允许来自特定IP地址的HTTP访问,可以输入以下命令:```shelliptables -A INPUT -s <IP地址> -p tcp --dport 80 -j ACCEPT```3. 删除防火墙规则:使用iptables -D命令可以删除特定的防火墙规则。
例如,要删除上述添加的防火墙规则,可以输入以下命令:```shelliptables -D INPUT -s <IP地址> -p tcp --dport 80 -j ACCEPT```4. 保存防火墙规则:使用iptables-save命令可以保存当前的防火墙规则。
例如,输入以下命令可以将当前的防火墙规则保存到/etc/iptables.rules文件中:```shelliptables-save > /etc/iptables.rules```5. 加载防火墙规则:使用iptables-restore命令可以加载之前保存的防火墙规则。
例如,输入以下命令可以从/etc/iptables.rules文件中加载防火墙规则:```shelliptables-restore < /etc/iptables.rules```四、常用防火墙配置示例1. 允许SSH访问:要允许SSH访问,可以使用以下命令:```shelliptables -A INPUT -p tcp --dport 22 -j ACCEPT```2. 允许HTTP和HTTPS访问:要允许HTTP和HTTPS访问,可以使用以下命令:```shelliptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT```3. 允许Ping请求:要允许Ping请求,可以使用以下命令:```shelliptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT```4. 阻止特定IP地址的访问:要阻止特定IP地址的访问,可以使用以下命令:```shelliptables -A INPUT -s <IP地址> -j DROP```五、注意事项1. 防火墙规则的顺序很重要,应该根据需要正确设置规则的顺序。
linux关于防火墙的命令

linux关于防火墙的命令Linux防火墙是保护系统安全的重要组成部分,可以通过命令行来配置和管理。
本文将介绍一些常用的Linux防火墙命令,帮助读者更好地掌握防火墙的使用。
1. 查看防火墙状态要查看当前系统的防火墙状态,可以使用以下命令:```sudo ufw status```该命令将显示防火墙的状态,包括是否启用以及开放的端口等信息。
2. 启用/禁用防火墙可以使用如下命令来启用或禁用防火墙:```sudo ufw enablesudo ufw disable```启用防火墙后,它将开始保护系统并根据配置规则来过滤网络流量。
禁用防火墙将停止过滤网络流量。
3. 添加规则要添加防火墙规则,可以使用`allow`或`deny`命令。
`allow`命令用于允许特定的端口或IP地址的流量通过,`deny`命令则用于阻止特定的端口或IP地址的流量。
例如,要允许SSH流量通过防火墙,可以使用以下命令:```sudo ufw allow ssh```要禁止来自特定IP地址的HTTP流量,可以使用以下命令:```sudo ufw deny from 192.168.1.100 to any port 80```在上述命令中,`192.168.1.100`表示要禁止的IP地址,`80`表示要禁止的端口。
4. 删除规则如果需要删除已添加的防火墙规则,可以使用`delete`命令。
例如,要删除已添加的SSH允许规则,可以使用以下命令:```sudo ufw delete allow ssh```5. 修改规则要修改已存在的防火墙规则,可以使用`modify`命令。
例如,要修改已存在的HTTP允许规则,可以使用以下命令:```sudo ufw modify allow http```6. 设置默认规则默认规则指定了当没有匹配的规则时要采取的操作。
可以使用`default`命令来设置默认规则。
例如,要将默认规则设置为拒绝所有流量,可以使用以下命令:```sudo ufw default deny```7. 查看已添加的规则要查看已添加的防火墙规则,可以使用`status`命令。
如何在Linux终端中配置防火墙

如何在Linux终端中配置防火墙防火墙是一种用于保护计算机网络安全的重要工具。
在Linux操作系统中,配置防火墙可以有效地控制网络通信,并对不信任的网络连接或潜在的安全威胁进行阻止。
本文将介绍如何在Linux终端中配置防火墙。
一、了解防火墙的基本概念在配置防火墙之前,首先需要了解防火墙的基本概念。
防火墙通过监控进出网络的数据流,根据预先设定的规则来允许或拒绝特定的网络流量。
常见的防火墙软件有iptables和firewalld等。
二、使用iptables配置防火墙iptables是Linux操作系统中常用的防火墙软件,可通过命令行进行配置。
下面是一些常用的iptables命令:1. 查看当前防火墙规则:```sudo iptables -L```2. 清除当前防火墙规则:```sudo iptables -F3. 允许特定端口的网络连接,例如允许SSH连接:```sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT```4. 禁止特定端口的网络连接,例如禁止FTP连接:```sudo iptables -A INPUT -p tcp --dport 21 -j DROP```5. 保存防火墙规则:```sudo iptables-save > /etc/iptables/rules.v4```三、使用firewalld配置防火墙firewalld是一种新一代的防火墙管理工具,相对于iptables更加灵活和易用。
下面是一些常用的firewalld命令:1. 启动firewalld服务:```sudo systemctl start firewalld2. 查看当前防火墙状态:```sudo firewall-cmd --state```3. 开放特定端口的网络连接,例如开放HTTP连接:```sudo firewall-cmd --add-service=http --permanentsudo firewall-cmd --reload```4. 关闭特定端口的网络连接,例如关闭SMTP连接:```sudo firewall-cmd --remove-service=smtp --permanent sudo firewall-cmd --reload```5. 查看防火墙规则:```sudo firewall-cmd --list-all```四、配置防火墙规则配置防火墙规则时,需要根据实际需求和网络环境进行设置。
Linux防火墙的配置与管理:防火墙的包过滤功能设置

Linux防火墙的配置与管理为了保护校园网的安全,需要使用防火墙。
防火墙位于网络边界,用于保护局域网(LAN)内网和DMZ区,免受来自因特网(WAN)的攻击。
防火墙的工作实质是报文过滤。
一、项目简介(一)含有DMZ区的防火墙概述防火墙通常有三个接口(端口),分别是WAN、LAN和DMZ。
如图表3-1所示。
图3-1 防火墙拓扑结构图在网络中,非军事区(DMZ)是指为不信任系统提供服务的孤立网段,其目的是把敏感的内部网络和其他提供访问服务的网络分开,阻止内网和外网直接通信,以保证内网安全。
含有DMZ的网络,包括六条访问控制策略。
1、内网可以访问外网内网的用户可以自由地访问外网。
因此防火墙需要进行源地址转换。
2、内网可以访问DMZ内网用户使用和管理DMZ中的服务器。
3、外网不能访问内网由于内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。
4、外网可以访问DMZDMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。
同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
5、DMZ不能访问内网很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
6、DMZ不能访问外网此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。
(二)Linux防火墙简介Linux下的防火墙是iptables/netfilter。
iptables是一个用来指定netfilter规则和管理内核包过滤的工具,它为用户配置防火墙规则提供了方便。
与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换NAT等功能。
1、netfilter的组成netfilter主要包括三个表(table):filter、nat和mangle,分别用于实现报文过滤、网络地址转换和报文重构。
Linux下设置防火墙白名单(RHEL6和CentOS7)的步骤
Linux下设置防⽕墙⽩名单(RHEL6和CentOS7)的步骤进⼊Linux 命令⾏,编辑防⽕墙规则配置⽂件 iptablesvi /etc/sysconfig/iptables下⾯是⼀个⽩名单设置的例⼦:# Firewall configuration written by system-config-securitylevel# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:RH-Firewall-1-INPUT - [0:0]-N whitelist-A whitelist -s 10.202.106.1 -j ACCEPT-A whitelist -s 10.202.106.2 -j ACCEPT-A whitelist -s 10.202.106.3 -j ACCEPT-A whitelist -s 10.202.106.4 -j ACCEPT-A whitelist -s 10.202.106.5 -j ACCEPT-A whitelist -s 10.202.106.6 -j ACCEPT-A whitelist -s 10.202.106.7 -j ACCEPT-A INPUT -j RH-Firewall-1-INPUT-A FORWARD -j RH-Firewall-1-INPUT-A RH-Firewall-1-INPUT -i lo -j ACCEPT-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT-A RH-Firewall-1-INPUT -p 50 -j ACCEPT-A RH-Firewall-1-INPUT -p 51 -j ACCEPT-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4750 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibitedCOMMIT其中设置⽩名单的部分为:-N whitelist-A whitelist -s 10.202.106.1 -j ACCEPT-A whitelist -s 10.202.106.2 -j ACCEPT-A whitelist -s 10.202.106.3 -j ACCEPT-A whitelist -s 10.202.106.4 -j ACCEPT-A whitelist -s 10.202.106.5 -j ACCEPT-A whitelist -s 10.202.106.6 -j ACCEPT-A whitelist -s 10.202.106.7 -j ACCEPT使⽤⽩名单规则使⽤ j 参数指定:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist以上这篇Linux下设置防⽕墙⽩名单(RHEL 6和CentOS 7)的步骤就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
linux常用命令(五)防火墙设置
linux常⽤命令(五)防⽕墙设置作⽤:保护服务器安全设置防⽕墙规则开放80,22端⼝关闭防⽕墙防⽕墙的基本命令:安装:yum install firewalld启动:service firewalld start检查状态:service firewalld status关闭或禁⽤防⽕墙:service firewalld stop/disable⾸先,我们可以使⽤命令 yum list | grep firewall 来确认是否已经安装了防⽕墙,如果没有的话,就要使⽤ yum install firewalld来进⾏安装。
下⾯进⾏以下防⽕墙有关的简单命令;查看防⽕墙的进程: ps -ef | grep firewall查看防⽕墙的状态: service firewalld status重启防⽕墙: service firewalld restart关闭防⽕墙: service firewalld stop启动防⽕墙: service firewalld start防⽕墙安装好以后,会默认有个firewall-cmd 的命令firewall-cmd --help 帮助了解下这个命令firewall-cmd --version 版本firewall-cmd --state 状态firewall-cmd --get-zones 得到所有的区firewall-cmd --get-default-zone 得到默认的区,基本都是publicfirewall-cmd --list-all-zone 列出所有区域的配置情况firewall-cmd --list-ports 列出所有的端⼝(默认区域的所有端⼝,⼀般都是public)我们链接服务器⼀般都是利⽤ssh来进⾏链接的,加⼊我我把这个服务给去掉,⼜是怎样呢?(这⾥都是默认区public)firewall-cmd --query-service=ssh 查询ssh服务是否存在firewall-cmd --remove-service=ssh 删掉ssh服务,然后进⾏链接,是连接是被拒绝的firewall-cmd --add-service-ssh 添加ssh服务,然后进⾏连接,⼜成功了firewall-cmd --list-services 可以查询到所有的服务虽然删除掉服务可以使连接服务器被拒绝,但是我们还可以进⾏端⼝设置连接(默认区public):firewall-cmd --remove-service=ssh 先删掉ssh服务firewall-cmd --query-port=22/tcp 查询端⼝为22tcp协议是否存在,不存在,则添加firewall-cmd --add-port=22/tcp 添加端⼝为22tcp协议,现在进⾏连接也是可以的(端⼝和服务是冲突的,两个都可以实现连接)firewall-cmd --list-ports 查看所有的端⼝firewall-cmd --remove-port=22/tcp 删除端⼝。
如何在Linux终端中配置和管理防火墙
如何在Linux终端中配置和管理防火墙防火墙在计算机网络安全中起着非常重要的作用。
它是用于保护计算机系统免受未经授权访问、网络威胁和恶意攻击的关键组件。
在Linux操作系统中,我们可以使用终端命令来配置和管理防火墙,本文将介绍在Linux终端中如何配置和管理防火墙。
1. 确认防火墙状态在开始配置和管理防火墙之前,我们首先需要确认防火墙的当前状态。
使用以下命令来查看:```sudo systemctl status firewalld```如果防火墙处于激活状态,继续进行下面的步骤。
如果防火墙没有安装或处于非激活状态,可以使用以下命令安装并激活防火墙:```sudo apt-get install firewalldsudo systemctl start firewalldsudo systemctl enable firewalld```2. 配置防火墙规则防火墙规则控制着允许或拒绝进入和离开计算机系统的网络流量。
我们可以根据实际需求进行配置。
以下是一些常用的防火墙配置示例:- 允许特定端口的流量通过:```sudo firewall-cmd --permanent --add-port=80/tcpsudo firewall-cmd --reload```上述命令允许TCP协议的80端口流量通过防火墙,并将配置保存。
- 允许某个IP地址的流量通过:```sudo firewall-cmd --permanent --add-source=192.168.1.100sudo firewall-cmd --reload```上述命令允许IP地址为192.168.1.100的流量通过防火墙,并将配置保存。
- 拒绝特定端口的流量通过:```sudo firewall-cmd --permanent --add-port=22/tcpsudo firewall-cmd --reload上述命令拒绝TCP协议的22端口流量通过防火墙,并将配置保存。
设置linux个人防火墙
设置linux个人防火墙,下面由店铺给你做出详细的linu.下面是店铺跟大家分享的是设置linux个人防火墙,欢迎大家来阅读学习。
设置linux个人防火墙linux个人防火墙设置方法一:cat /etc/sysconfig/iptables*filter:INPUT ACCEPT [10276:1578052]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [13784:16761487]-A INPUT -s 10.0.0.0/255.0.0.0 -i eth1 -j DROP-A INPUT -s 172.16.0.0/255.240.0.0 -j DROP-A INPUT -s 192.168.0.0/255.255.0.0 -i eth1 -j DROP #eth1 is interface to internet# anti Sync Flood-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT# anti some port scan-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT# anti ping of death-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPTCOMMITchkconfig iptables on以后每次启动iptables就会自动读取配置文件(/etc/sysconfig/iptables)自动启动或者是/etc/rc.d/init.d/iptables start手工启动/etc/rc.d/init.d/iptables stop手工停止在LINUX下架设防火墙linuxbird随着Internet的普及,人们的日常工作与之的关系也越来紧密,因而越来越多的单位为员工开设了Internet的代理上网服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux 防火墙的设置Linux防火墙配置(一)随着In ternet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。
虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。
本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。
9.1 iptables 防火墙介绍netfilter/iptables 是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。
本节首先介绍有关iptables防火墙的基本知识,包括netfilter 框架、iptables 防火墙结构与原理、iptables命令格式等内容。
9.1.1 netfilter 框架Linux内核包含了一个强大的网络子系统,名为netfilter ,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。
netfilter 位于Linux网络层和防火墙内核模块之间,如图9-1所示。
图9-1 netfilter 在内核中的位置虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter 模块将防火墙的功能引入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。
netfilter 模块的结构如图9-2所示。
对IPv4协议来说,netfilter 在IP数据包处理流程的5个关键位置定义了5个钩子(hook)函数。
当数据包流经这些关键位置时,相应的钩子函数就被调用。
从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数PRE_ROUTING理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。
若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD理,然后还要经钩子函数POST_ROUTIN处理后才能传输到网络。
本机进程产生的数据包要先经过钩子函数LOCAL_OU处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING理后再发送到网络。
%说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子函数就会按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处理。
这些处理可以是包过滤、NAT以及用户自定义的一些功能。
9.1.2 iptables 防火墙内核模块netfilter 框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块正是通过把自己的函数注册到n etfilter 的钩子函数这种方式介入了对数据包的处理。
这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT和对数据包进行修改。
其中,NAT还分为SNATCH DNAT分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。
由图9-3可以看出,防火墙模块在netfilter 的LOCAL_IN FORWARD LOCAL_OUT 个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。
这三个位置也称为三条链,名称分别为INPUT%注意:这些规则的次序是很重要的,过滤函数对数据包执行了某一规则动作后,对数据包的处理即告结束,即使这个数据包还满足后面其他规则的所有匹配,也不会执行那些规则所设定的动作。
从图9-3中可以看出,除了过滤表以外,在PRE_ROUTINGOCAL_OU和POST_ ROUTING :个位置各有一条有关NAT的链,名称分别为PREROUTINGOUTPU和POSTROUTING它们组成了NAT表。
NAT链里面也可以包含各种规则,它指出了如何对数据包的地址进行转换。
此外,5个钩子函数位置的mangle链还组成了一张mangle表,这个表的主要功能是根据规则修改数据包的一些标志位,例如TTL、TOS等,也可以在内核空间为数据包设置一些标志。
防火墙内的其他规则或程序(如tc等)可以利用这种标志对数据包进行过滤或高级路由。
以上介绍的是iptables防火墙的内部结构,Linux系统还提供了iptables 防火墙的用户接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据需要构建自己的防火墙。
具体来说,用户是通过输入iptables命令来实现上述功能的。
9.1.3 iptables 命令格式在RHEL 5中,iptables 命令由iptables-1.3.5-1.2.1 软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火墙中的规则进行管理。
iptables命令相当复杂,具体格式如下所示。
iptables [-t 表名]v命令>[链名][规则号][规则][-j目标]-t选项用于指定所使用的表,iptables 防火墙默认有filter 、nat和mangle 3张表,也可以是用户自定义的表。
表中包含了分布在各个位置的链,iptables命令所管理的规则就是存在于各种链中的。
该选项不是必需的,如果未指定一个具体的表,则默认使用的是filter 表。
命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。
有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。
还有一些命令要指定规则号。
具体的命令选项名称及其与后续选项的搭配形式如下所示。
示例1:-A v链名> v规则>功能:在指定链的末尾添加一条或多条规则。
示例2:-D v链名> v规则>-D v链名> v规则号>功能:从指定的链中删除一条或多条规则。
可以按照规则的序号进行删除,也可以删除满足匹配条件的规则。
示例3:-R v链名> v规则号> v规则>功能:在指定的链中用新的规则置换掉某一规则号的旧规则。
示例4:-I v链名>[规则号]v规则>功能:在给出的规则序号前插入一条或多条规则,如果没有指定规则号,则默认是1。
示例5:-L [链名]功能:列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。
示例6:-F [链名]功能:删除指定链中的所有规则,如果没有指定链,则所有链中的规则都将被删除。
示例7:-N <链名>功能:建立一个新的用户自定义链。
示例8:-X [链名]功能:删除指定的用户自定义链,这个链必须没有被引用,而且里面也不包含任何规则。
如果没有给出链名,这条命令将试着删除每个非内建的链。
示例9:-P <链名><目标>功能:为指定的链设置规则的默认目标,当一个数据包与所有的规则都不匹配时,将采用这个默认的目标动作。
示例10:-E <旧链名><新链名>功能:重新命名链名,对链的功能没有影响。
以上是有关iptables命令格式中有关命令选项部分的解释。
iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征。
例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成规则的常见选项。
•-pv协议类型>:指定上一层协议,可以是icmp、tcp、udp和all•-svIP地址/掩码> :指定源IP地址或子网。
•-d<IP地址腌码〉:指定目的IP地址或子网。
•-i<网络接口> :指定数据包进入的网络接口名称。
•-0<网络接口>:指定数据包岀去的网络接口名称。
%注意:上述选项可以进行组合,每一种选项后面的参数前可以加“!,表示取反。
对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征。
常见的子选项如下所示。
•-p tcp --sport <port> :指定TCP 数据包的源端口。
•-p tcp --dport <port> :指定TCP数据包的目的端口。
•-p tcp --syn :具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接。
•-p udp --sport <port> :指定UDP 数据包的源端口。
•-p udp --dport <port> :指定UDP数据包的目的端口。
•-p icmp --icmp-type <type> :指定icmp 数据包的类型,可以是echo-reply、echo-request 等。
上述选项中,port可以是单个端口号,也可以是以port1:port2 表示的端口范围。
每一选项后的参数可以加“!”,表示取反。
上面介绍的这些规则选项都是iptables内置的,iptables软件包还提供了一套扩展的规则选项。
使用时需要通过-m选项指定模块的名称,再使用该模块提供的选项。
下面列出几个模块名称和其中的选项,大部分的选项也可以通过“!”取反。
-m multiport --sports <port, port, …〉功能:指定数据包的多个源端口,也可以以port1:port2 的形式指定一个端口范围。
-m multiport -- dports <port, port,功能:指定数据包的多个目的端口,也可以以port1:port2 的形式指定一个端口范围。
-m multiport -- ports <port, port, …〉功能:指定数据包的多个端口,包括源端口和目的端口,也可以以port1:port2 的形式指定一个端口范围。
-m state --state <state>功能:指定满足某一种状态的数据包,state可以是INVALID、ESTABLISHE D NEW 和RELATE等,也可以是它们的组合,用“,”分隔。
-m connlimit --connlimit-above <n>功能:用于限制客户端到一台主机的TCP并发连接总数,n是一个数值。
-m mac --mac-source <address>功能:指定数据包的源MAC地址,address是xx:xx:xx:xx:xx:xx 形式的48 位数。
-m选项可以提供的模块名和子选项内容非常多,为iptables提供了非常强大、细致的功能,所有的模块名和子选项可以通过“man iptables ”命令查看iptables命令的手册页获得。
最后,iptables命令中的-j选项可以对满足规则的数据包执行指定的操作,其后的“目标”可以是以下内容。