linux 之 自定义防火墙规则(iptables)

iptables基本理论:

iptables组成单元:规则(rules),链(chains),表(tables)

1.规则(rules)

规则(rules)其实就是网络管理员`预定义的条件`;
规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。
规则存储在内核空间的信息包过滤表中,
这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。
'配置防火墙的主要工作就是添加、修改和删除这些规则'。

2.链(chains)(规则的集合)

链(chains)是数据包传播的路径;
每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。
当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。
如果满足,系统就会根据该条规则所定义的方法处理该数据包;
否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
INPUT链    针对那些目的地是本地的包。
FORWARD链  过滤所有不是本地产生的并且目的地不是本地的包。
OUTPUT链   过滤所有本地生成的包的。
PREROUTING链(路由前的数据流,修改即将到来的的数据包).
POSTROUTING链(路由后的数据流,修改即将出去的数据包).

3.表(tables)

1. 表(tables)提供特定的功能;
2. iptables内置'filter'表、'nat'表和'mangle'表,
3. 分别用于实现'包过滤','网络地址转换'和'包重构'的功能。

3.1 .filter表

1.'主要用于过滤数据包' Filter表是默认的表,iptables就默认使用filter表来执行所以命令,
2. 防火墙的规则配置也都是在这张表里配置(预定义的一组规则过滤符合条件的数据包)
3. filter表包含了INPUT链,RORWARD链,OUTPUT链
在filter表中只能允许对数据包进行接受,丢弃的操作,而无法对数据包进行更改

3.2 .nat表

1.'主要用于网络地址转换NAT',该表可以实现一对一,一对多,多对多等NAT 工作,iptables就是使用该表实现共享上网的。
2.NAT表包含了PREROUTING链,POSTROUTING链,OUTPUT链

3.3 .mangle表

1.主要用于对指定数据包进行更改
2.在内核版本2.4.18 后的linux版本中该表包含的链为:
INPUT链,RORWARD链,OUTPUT链,POSTROUTING链,PREROUTING链

iptables命令参数说明

命令:iptables [-t filter] [-A/I/R/D INPUT,OUTPUT,FORWARD] [-i/o interface] [-p tcp,udp.icmp,all] [-s ip/nerwork] [--sport ports][-d ip/netword] [--dport ports][-j ACCEPT DROP]
* -t 表名      命令作用于该表,如果省略默认filter表
* -A          链命令追加到上表该链的尾部
* -I 链 行数    命令插入到上表该链的第几行
* -R 链 行数   命令插入到上表该链的第几行
*iptables -R INPUT 2 -p tcp -m multiport --dport 22,11251,8050,8080,80 -j ACCEPT
* -D 行数 链   删除上表该链第几行
* -i 网卡      数据进入要经过的网卡 eth0
* -o 网卡      数据输出要经过的网卡 eth1
* -p 协议      通信协议 tcp/udp
* -s ip       源地址,可以是ip,网络 192.168.2.0/24,域名china-ecar.com
* --sport 端口 来源端口
* -d ip       目标IP地址/网络/域名
* --dport     目标端口
* -j 规则      执行规则 acccept drop reject
*

iptables数据包流程

图一:



图二:


图一黄色内容和图二B路线解释:(局域网内的防火墙配置)

DNAT(DNAT目标地址转换在PREROUTING链上做)

对外提供服务,将局域网ip映射到外网ip
DNAT目标地址转换在PREROUTING链上做;可以将虚拟机的服务映射到宿主机的ip上,达到访问宿主的 ip就等于访问虚拟机的效果;
iptables -t nat -A PREROUTING -d 公网ip -p tcp -m tcp --dport 公网端口 -j DNAT --to-destination  内网ip:内网端口
命令解释:
-t (table)命令用于哪个表 -t nat 是指该命令作用于nat表
-A (append)命令追加在表的尾部
-d (destination)指定的物理机ip
-p (protocol)指协议
-m (match)指匹配
--dport 指定的物理机ip端口
-j (jump)跳转执行,指定要进行的处理动作(ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK)
--to-destination 目标地址
iptables可以使用扩展模块来进行数据包的匹配,语法就是 -m module_name, 所以
-m tcp 的意思是使用 tcp 扩展模块的功能 (tcp扩展模块提供了 --dport, --tcp-flags, --sync等功能)
其实只用 -p tcp 了话, iptables也会默认的使用 -m tcp 来调用 tcp模块提供的功能。但是 -p tcp 和 -m tcp是两个不同层面的东西,一个是说当前规则作用于 tcp 协议包,而后一是说明要使用iptables的tcp模块的功能 (--dport 等)
应用场景:
这样主要是为了 能让内网的主机能够对外提供服务:
数据包的第一站 PREROUTING,匹配到规则就执行规则进行DNAT转发,
经过FORWARD ,到达POSTROUTING出站。没有匹配到就进入INPUT,进行匹配
备注:让指定的ip访问服务器 (指定的 ip是192.168.1.154,内网网段是192.168.122.0/24)
将内网ip 192.168.122.2:22 映射到外网ip 192.168.1.51:8081
iptables -t  nat -A PREROUTING  -d 192.168.1.51 -p tcp -m tcp --dport 8081 --to-destination 192.168.122.2:22
防火墙开放端口和ip
iptables -A  FORWARD -s 指定的ip  -d 内网网段 -p tcp -m tcp --dport 22 -j  ACCEPT
192.168.122.0/24 表示192.168.122.1-192.168.122.254
需要实践检测
当内网的主机或本地的虚拟机需要通过本机上网时,需要做SNAT规则:我的环境是虚拟机要通过宿主机上网,虚拟机以宿主机为网关,虚拟机的网段是192.168.122.0/24,宿主机的网段是192.168.1.0/24,相对来说宿主机网段就是外网,虚拟机就是内网。-j  MASQUERADE 是当外网ip不固定时,这个配置 I 可以自动获取外网ip。
iptables -t nat -A POSTROUTING  -o br0   -s 内网段/24  -j MASQUERADE
-s配置不是必须的,在真实局域网环境中,也许会有多个局域网段,这时就可以通过-s 配置,指定那个网段可以上网
参考:http://jiapeng.blog.51cto.com/6706171/1719289

SNAT(SNAT源地址转换在POSTROUTING链上做)

可以为局域网提供上网服务
iptables -t nat -A PORTROUTING -o eth0 -j MASQUERADE
-t (table)命令用于哪个表 -t nat 是指该命令作用于nat表
-A (append)命令追加在表的尾部
-o (-o eth0 从这块网卡流出的数据,流出一般在OUTPUT和POSTROUTING上)
-j MASQUERADE 源地址伪装
应用场景:
主机上的NAT 虚拟机需要访问物理网路,虚拟机直接通过先 经过FORWARD,然后通过POSTROUTING 将源地址转换

图一绿色内容和图二A路线解释:(ssh远程连接阿里云服务器)

1.清除原有防火墙,并预设规则(默认为filter表)

#iptables -F INPUT 清除input链中的规则  F flush 清除刷新,该命令不用执行
#iptables -F  清除 filter表中所有链的规则
#iptables -X  清除 filter表中自定义的链input output forward是不会清除的 -X --delete-chain 删除链
#service iptables save 保存防火墙
#service iptables restart 重启防火墙

2.开启22远程连接端口

查看防火墙配置 #iptables -L -n 或者查看 vi /etc/sysconfig/iptables 文件如下图

这里有些问题 input accept [240:20967] 那为什么 22 端口也对外开放了呢????
开放远程连接端口号22后,在设置INPUT规则为DROP,先后顺序不能乱

#iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
--dport 为两个-
区分大小写
设置filter表INPUT链的规则为DROP ,及不在开放端口范围的请求一律删除
#iptables -P INPUT DROP  设置 INPUT链的规则为DROP
#service iptables save
#service iptables restart

当由服务器发起的通信建立要INPUT允许,不然可能导致不能连接,该命令是允许已经建立的通信通过input

#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。
ESTABLISHED 表示该封包属于某个已经建立的联机。
NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个FTP 联机。

关闭防火墙的状态

清洗完规则后重新开启防火墙的状态

防火墙启动方式

自定义规则有两种方式:
1.在iptables处于stop状态下,将命令写入到配置文件中(/etc/sysconfig/iptables)中,然后save,启动start
2.在iptables处于start状态下,直接在dos环境中写入命令,然后save,然后重启restart
这两种都有实际意义:第一种方便,不用写命令; 第二种可以不用停掉防火墙写入规则,时间更短,更安全

总结:在清除完规则后,防火墙的所有规则为accept(放行)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 1.安全技术 (1)入侵检测与管理系统(Intrusion Detection Systems): 特点是不阻断任...
    尛尛大尹阅读 2,454评论 0 2
  • iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含iptables的功...
    随风化作雨阅读 4,718评论 1 16
  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 1,810评论 0 1
  • 1 前言 防火墙(Firewall),就是一个隔离工具,工作于主机或者网络的边缘,对于进出本主机或本网络的报文,根...
    魏镇坪阅读 6,928评论 1 23
  • 文/牢 你住在对面的村庄, 背着竹篓走在又细又长的路上。 那无人居住的村庄, 破旧,凄凉, 我想 你是世上最美的姑...
    画地为牢在牢里慢慢变老阅读 261评论 0 4