linux 防火墙配置规则

article/2025/8/22 10:58:04

基础知识

Linux系统内核内建了netfilter防火墙机制。Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放行或阻挡的机制。Netfilter提供了iptables这个程序来作为防火墙数据包过滤的命令。Netfilter是内建的,效率非常高。

我们可以通过iptables命令来设置netfilter的过滤机制。

iptables里有3张表:

Filter(过滤器),进入Linux本机的数据包有关,是默认的表。 
NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。 
Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,对这个表的修改破坏性很大,慎改之)。

每张表里都还有多条链:

Filter:INPUT, OUTPUT, FORWARD 
NAT:PREROUTING, POSTROUTING, OUTPUT 
Mangle:PREROUTING, OUTPUT, INPUT, FORWARD

iptables命令的使用

基本格式:iptables [-t table] -CMD chain CRETIRIA -j ACTION

-t table:3张表中的其中一种filter, nat, mangle,如果没有指定,默认是filter。 
CMD:操作命令。查看、添加、替换、删除等。 
chain:链。指定是对表中的哪条链进行操作,如filter表中的INPUT链。 
CRETIRIA:匹配模式。对要过滤的数据包进行描述 
ACTION:操作。接受、拒绝、丢弃等。

各个钩子点业务处理流程图

这里写图片描述

修改

添加

格式:iptables [-t table] -A chain CRETIRIA -j ACTION

将新规则加入到表table(默认filter)的chain链的最后位置

插入

格式:iptables [-t table] -I chain pos CRETIRIA -j ACTION

将新规则插入到table表(默认filter)chain链的pos位置。原来之后的规则都往后推一位。pos的有效范围为:1 ~ num+1

替换

格式:iptables [-t table] -R chain pos CRETIRIA -j ACTION

用新规则替换table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num

删除

格式:iptables [-t table] -D chain pos

删除table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num

包匹配(CRETIRIA)

上面没有介绍CRETIRIA的规则,在这小节里详细介绍。包匹配就是用于描述需要过滤的数据包包头特殊的字段。

指定网口

-i :数据包所进入的那个网络接口,例如 eth0、lo等,需与INPUT链配合 
-o: 数据包所传出的那么网络接口,需与OUTPUT链配合

指定协议

-p:tcp, udp, icmp或all

指定IP网络:

-s:来源网络。可以是IP或网络 
IP: 192.168.0.100 
网络: 192.168.0.0/24 或 192.168.0.0/255.255.255.0 均可 
可以在前加 ! 表示取反

-d:目标网格。同 -s

指定端口:

–sport:指定来源端口。可以是单个端口,还可以是连续的端口,例如:1024:65535。

–dport:指定目标端口。同–sport

注意:要指定了tcp或udp协议才会有效。

指定MAC地址:

-m mac –mac-source aa:bb:cc:dd:ee:ff

指定状态:

-m state –state STATUS

STATUS可以是:

INVALID,无效包 
ESTABLISHED,已经连接成功的连接状态 
NEW,想要新立连接的数据包 
RELATED,这个数据包与主机发送出去的数据包有关,(最常用)

例如:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃

-m state –state RELATED,ESTABLISHED

ICMP数据比对

ping操作发送的是ICMP包,如果不想被ping到,就可以拒绝。

–icmp-type TYPE

TYPE如下:

8    echo-request(请求)
0    echo-reply(响应)
  • 1
  • 2
  • 3

注意:需要与 -p icmp 配合使用。

操作(ACTION)

DROP,丢弃

ACCEPT,接受

REJECT,拒绝

LOG,跟踪记录,将访问记录写入 /var/log/messages

保存配置

将新设置的规则保存到文件

格式:iptables-save [-t table]

将当前的配置保存到 /etc/sysconfig/iptables

其它

格式:iptables [-t table] [-FXZ]

-F :请除所有的已制订的规则 
-X :除掉所有用户“自定义”的chain 
-Z :将所有的统计值清0

操作举例

(1)查看本机IPTABLES的设置情况 
[root@tp ~]# iptables -L -n 
Chain INPUT (policy ACCEPT) 
target prot opt source destination 
Chain FORWARD (policy ACCEPT) 
target prot opt source destination 
Chain OUTPUT (policy ACCEPT) 
target prot opt source destination 
什么规则都没有.

或者 
[root@localhost ~]# service iptables status 
Table: filter 
Chain INPUT (policy ACCEPT) 
num target prot opt source destination 
1 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy ACCEPT) 
num target prot opt source destination

Chain OUTPUT (policy ACCEPT) 
num target prot opt source destination

(2)清除原有规则. 
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. 
[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则 
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则 
[root@tp ~]# iptables -L -n 
Chain INPUT (policy ACCEPT) 
target prot opt source destination 
Chain FORWARD (policy ACCEPT) 
target prot opt source destination 
Chain OUTPUT (policy ACCEPT) 
target prot opt source destination

什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存. 
[root@tp ~]# /etc/rc.d/init.d/iptables save 
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart 
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧

(3)添加规则. 
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链 
为了能采用远程SSH登陆,我们要开启22端口. 
[root@tp ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT 
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT 
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理

如果做了WEB服务器,开启80端口. 
[root@tp ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT 
如果做了邮件服务器,开启25,110端口. 
[root@tp ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT

如果做了FTP服务器,开启21端口 
[root@tp ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT

如果做了DNS服务器,开启53端口 
[root@tp ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT 
如果你还做了其他的服务器,需要开启哪个端口,照写就行了. 
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP

允许icmp包通过,也就是允许ping, 
[root@tp ~]# iptables -A OUTPUT|INPUT -p icmp -j ACCEPT

减少不安全的端口连接 
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP 
[root@tp ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP 
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会

当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加 
允许SSH登陆一样.照着写就行了. 
下面写一下更加细致的规则,就是限制到某台机器 
如:我们只允许192.168.0.3的机器进行SSH连接 
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT 
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

其他的规则连接也一样这么设置.

在下面就是FORWARD链 
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃坏的TCP包 
[root@tp ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个 
[root@tp ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包. 
[root@tp ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT

二,配置一个NAT表放火墙 
1,查看本机关于NAT的设置情况 
[root@tp rc.d]# iptables -t nat -L 
Chain PREROUTING (policy ACCEPT) 
target prot opt source destination 
Chain POSTROUTING (policy ACCEPT) 
target prot opt source destination 
SNAT all – 192.168.0.0/24 anywhere to:211.101.46.235 
Chain OUTPUT (policy ACCEPT) 
target prot opt source destination

清除命令 
[root@tp ~]# iptables -F -t nat 
[root@tp ~]# iptables -X -t nat 
[root@tp ~]# iptables -Z -t nat

2,添加规则 
添加基本的NAT地址转换 
添加规则,我们只添加DROP链.因为默认链全是ACCEPT. 
防止外网用内网IP欺骗 
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP, 
例: 
禁止与211.101.46.253的所有连接 
[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP 
禁用FTP(21)端口 
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -j DROP 
这样写范围太大了,我们可以更精确的定义. 
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -d 211.101.46.253 -j DROP 
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接. 
按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了. 
最后: 
drop非法连接 
[root@tp ~]# iptables -A INPUT|OUTPUT|FORWARD -m state –state INVALID -j DROP

允许所有已经建立的和相关的连接 
[root@tp ~]# iptables-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
[root@tp ~]# /etc/rc.d/init.d/iptables save 
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用. 
[root@tp ~]# service iptables restart

禁止mgm6688.com DNS请求 
[root@tp ~]# iptables -t raw -I PREROUTING -p udp –dport 53 -m string –to 512 –algo bm –icase –hex-string ‘|07|mgm6688|03|com’ -j DROP

参考文章

http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html 
http://my.oschina.net/hevakelcj/blog/313212


http://chatgpt.dhexx.cn/article/B18esuiR.shtml

相关文章

Linux防火墙配置及放行端口

文章目录 一、firewalld的基本使用(系统防火墙)二、配置firewalld-cmd三、通过firewall-cmd(放行端口) 一、firewalld的基本使用(系统防火墙) 查看防火墙状态: systemctl status firewalld.se…

linux显示 防火墙配置文件,怎么查看Linux防火墙配置方法

当Linux系统的防火墙的状态和信息时候,我们可以用哪些命令查看呢。下面由学习啦小编为大家整理了查看Linux系统防火墙的命令详解,希望对大家有帮助! 查看Linux系统防火墙的命令详解 查看Linux系统防火墙的命令一、service方式 查看防火墙状态: [root@centos6 ~]# service ip…

Linux 配置防火墙

Linux 配置防火墙 一、图形化的形式 1.开启LAMP systemctl start httpd2.查看本地IP地址 ip addr3.本地IP为 192.168.31.150本地访问 外部浏览器就无法访问 4.此时配置防火墙 firewall-config此时,出现图形化界面,需要输入密码 改变服务http R…

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…

UI设计师如何应对面试 哪些细节问题不可忽视

UI设计师如何应对面试?哪些细节问题不可忽视?有互联网的地方就会有UI设计师,越来越多的人转行从事UI设计加剧了求职竞争,如何才能脱颖而出获得高薪呢?专业技能很重要,面试技巧也不可忽视,下面就给大家分享…

UI设计师如何脱颖而出 面试过程中要注意什么

UI设计师如何脱颖而出?面试过程中要注意什么?有互联网的地方就会有UI设计师,越来越多的人转行从事UI设计加剧了求职竞争。专业技能很重要,面试技巧也不可忽视,下面就给大家分享一些UI设计师在面试过程中不可忽视的四个…

UI设计师这些面试技巧你知道吗?

随着互联网产业的飞速发展,UI设计师岗位缺口不断攀升,有意入行的人群也不在少数。那么学成之后,自然而然要进入到面试环节,为了提前做好准备,千锋今天向您分享几招UI设计师的面试技巧。 ​ 通顺的逻辑思维和表达能力 …

企业招聘UI设计常见面试题分享

对于想要加入互联网行业却又不愿意敲代码的人来说,UI设计是一个非常不错的选择。随着用户体验度即审美要求的提升,UI设计师地位进一步提升,很多企业都乐意薪资较高的招聘专业的设计人才。下面就给大家详细介绍一下。 目前UI设计热度呈现持续上…

2018年UI设计师经典面试题及答案总结

2018年马上就要结束了,给大家总结了一些UI设计出现比较多的面试题,很多时候我们有足够的技术,但是可能就断送在了面试上,大家如果去面试,可以多了解看看以下的这些UI设计师经典面试题及答案,毕竟知己知彼才能更好的发挥自己的特长,提高面试的机率嘛。 1、推动一个项目的…

android ui设计 面试问题,2019新版UI设计面试题汇总附答案

原标题:2019新版UI设计面试题汇总附答案 问题一、Android手机的常用设计尺寸有_________.怎么适配ios和安卓。 答案:安卓320 X 480是常规模拟器、但现在的开发都是用360x640做一倍率。480 X 800(1.5倍率)、720 X 1280(2倍率)、1920*1080(3倍率) ios用ske…

2019UI设计岗位最常见的面试题

UI作为门槛较低的互联网职业,每天都有很多人涌进UI设计行业,其实UI设计行业结构是和传统行业是一样的,不缺新人,或者水平一般的人,但是要成为技术娴熟却不容易。 而且并不是说你会了个工作流程,就很牛了。…

UI设计师作品准备以及面试攻略

链接:https://www.jianshu.com/p/a3ba265998fa 引言 众所周知设计师的面试分两个部分,一个是作品集,一个是面试过程。作品集是敲门砖,也是面试过程中贯穿全程的内容,如果你的作品集只有70分,那么你可以通过面试让自己…

上海数据交易中心交易系统开放

10月7日,上海数据交易中心正式宣布开放交易系统,实现24小时去中心化线上数据交易。同时,二十家首批会员也正式宣布入驻交易系统。其中,电信、联通等公司作为数据供应方加入了交易平台。数据公司晶赞科技、星际大数据和东方航空、安…

上海联通大数据服务再突破

大数据是运营商的核心战略资产,正成为上海联通数字化转型的核心、创新型收入的来源、重构生态圈的基石 日前,由上海市信息投资股份有限公司、中国联合网络通信集团有限公司(简称“中国联通”)、中国电子信息产业集团有限公司等9家机构联合发起成立的上海…

上海数据交易中心发布《数据互联规则》

9月7日,上海数据交易中心经过对数据交易的大量研究与实践探索,发布了《数据互联规则》(以下简称《规则》)。从国家宏观战略层面来看,《规则》的制定,不但与中国政府正大力推进的“互联网”行动计划、大数据…

ISACA与上海大数据应用创新中心签署DMM全球第一个战略合作备忘录

-领域合作优化数据资产管理策略 行业标准助力未来商业目标 上海2018年9月18日电 /美通社/ -- 在9月17日开幕的“2018世界人工智能大会”上,全球著名信息安全专业机构 ISACA 旗下 CMMI 研究院进行了数据管理成熟度模型(DMM)的主题分享&#xf…

大数据白皮书材料整理

文章目录 大数据白皮书2014大数据对传统数据处理技术体系提出挑战大数据存储、计算和分析技术是关键大数据技术创新呈现“原创-开源-产品化”的阶梯格局大数据技术发展的一些特点大数据产业生态 大数据白皮书2016大数据产业发展概述大数据技术发展趋势大数据资源开放与共享重点…

大数据十大“关键词”

2021年,互联网大数据行业经历了一场耐力大考验。 这一年,政策监管席卷了诸多行业,互联网行业身处风暴眼。从反垄断超200亿元巨额罚款,到平台之间“拆墙”势在必行,数据合规已经上升至国家安全的战略高度,一…

大局视角看上海,数据集团定乾坤!

编 辑:彭文华 来 源:大数据架构师 彭友们好,我是老彭啊。今天早上一觉睡到8点多,睁眼就被这份文件给刷屏了。 这个话题在各大群里都聊疯了。主要在以下几个问题上集中讨论: 1、上海数据集团是干啥的? 2、上…

长江大数据交易中心以数据安全标准护航安全和隐私

长江大数据交易中心工作人员正在向参观者介绍数据安全的重要意义 大数据为生活提供便利的同时带来数据滥用的问题,对网络安全造成威胁。2016国家网络安全宣传周期间,在武汉国博举行的网络安全博览会上,武汉长江大数据交易中心在主题为“智慧城…