netfilter/iptables
参考:tcp/ip协议
1.Linux框架概念
1.1.工作流程图

1.2.功能:
①过滤(filter)
②修改源ip、目标ip(nat)
③拆解报文、修改报文标记、重新封装(mangle)
④关闭net表启用的连接追踪标记(raw)
1.3.表
iptables/netfilter表:filter,mangle,nat
| 排序 | 功能表 | 链 |
|---|---|---|
| ① | raw | PREROUTING、OUTPUT |
| ② | mangle | 5个链全包含 |
| ③ | nat | PREROUTING、OUTPUT、POSTROUTING |
| ④ | filter | INPUT、FORWARD、OUTPUT |
数据流向图(圆圈表示路由):

1.4.连接状态
4个状态:NEW,ESTABLISHED,INVALID,RELATED
针对3个协议:TCP,UDP,ICMP
5个配置策略:
①通用的
②TCP
③UDP
④ICMP
⑤状态,所有者,访问的频率限制
规则匹配,从上往下。高频匹配项、精确匹配项放在最上边、能合并的合并后放在中间、最后跟上默认匹配项。
1.5.监听协议
Linux防火墙工作在规则下,规则由两部分组成:匹配标准、处理办法。
匹配规则:
ip :sip、dip
tcp :sport、dport、报文(设定标志位:syn=1、ack=0、find=0、rst=0;……)
udp :sport、dport
icmp :icmp-type(0到15;0响应报文、3错误响应报文、8请求报文)
2.相关操作
保存配置
# iptables-save > /etc/sysconfig/iptables
保存配置filter表
# iptables-save -t filter > /etc/sysconfig/iptables
检查配置文件合法性
# iptables-restore -t /etc/sysconfig/iptables
iptables-restore: COMMIT expected at line
读取全部配置、filter表的配置
# iptables-restore < /etc/sysconfig/iptables
# iptables-restore -T filter < /etc/sysconfig/iptables
3.命令语法
3.1.语法
简单语法:
iptables [table] [Command] [chain] [num] [Rule] [Action]
指定:操作的表、操作命令、关键字chain、规则编号、匹配规则、处理办法。
语法详解:
语法:
iptables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name 说明:
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
3.2.语法说明
命令:
A:添加规则
I:插入规则
D:删除规则
R:替换规则
F:清空所有规则
P:默认规则
N:自定义链
X:删除自定义链
E:重命名自定义链
Z:清空规则计数器
L:查看规则
n:数字格式显示,不反解
v:详细信息
vv:带上计数器信息
x:计数器的精确值
line-numbers:显示规则序号
匹配:
-s, --src:源地址
-d, --dst:目标地址
-p {tcp|udp|icmp}:协议
--sport:源端口
--dport:目标端口
-i {interface}:流入网卡接口
-o {interface}:流出网卡接口
-m multiport
--source-ports [p1,p2,...]
--destination-ports [p1,p2,...]
处理方法:-j
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
LOG:日志记录
MASQUERADE:地址伪装
常用命令:
iptables -t filter -L
iptables -t filter -L -n
iptables -t filter -L -n --line-numbers
iptables -t filter -D INPUT 3
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -t filter -F
iptables -t filter -X
iptables -t filter -h
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
4.配置案例
配置前清空,设置默认丢弃。本节所有子内容均在此前提下。
[root@right tmp]# iptables -t filter -F
[root@right tmp]# iptables -t filter -P INPUT DROP
4.1.httpd服务器
开启ssh登陆,开启web访问,关闭其他任何接入。
# iptables -t filter -A INPUT -p tcp -d 213.16.200.34/224 --dport 22 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp -s 213.16.200.34/224 --sport 22 -j ACCEPT
# iptables -t filter -A INPUT -p tcp -d 213.16.200.34/224 --dport 80 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp -s 213.16.200.34/224 --sport 80 -j ACCEPT
# iptables -t filter -P INPUT DROP
4.2.tomcat服务器
开启ssh登陆,开启web访问,关闭其他任何接入。
iptables -t filter -A INPUT -p tcp -d 213.16.200.34/ --dport -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -s 213.16.200.34/ --sport -j ACCEPT
iptables -t filter -A INPUT -p tcp -d 213.16.200.34/ --dport -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -s 213.16.200.34/ --sport -j ACCEPT
iptables -t filter -A INPUT -p tcp -d 213.16.200.34/ --dport -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -s 213.16.200.34/ --sport -j ACCEPT
iptables -t filter -P INPUT DROP
合并端口在一条规则里:
# iptables -t filter -A INPUT -d 192.168.137.20 -p tcp -m multiport --destination-ports ,, -m state --state NEW -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.137.20 -p tcp -m multiport --source-ports ,, -m state --state ESTABLISHED -j ACCEPT
4.3.允许ping命令
允许192.168.137.1的ping操作。
[root@right tmp]# iptables -t filter -A INPUT -p icmp -s 192.168.137.1 -j ACCEPT
[root@right tmp]# iptables -t filter -A OUTPUT -p icmp -d 192.168.137.1 -j ACCEPT
要是明确禁止ping,防火墙操作,把“ACCEPT”改成“DROP”即可。
4.4.DNS主机
接收53端口,还得转发到根的53端口。而且,DNS同时工作在TCP、UDP的53口。
iptables -t filter -A INPUT -p TCP --dport -j ACCEPT
iptables -t filter -A INPUT -p UDP --dport -j ACCEPT
iptables -t filter -A INPUT -p TCP --sport -j ACCEPT
iptables -t filter -A INPUT -p UDP --sport -j ACCEPT
iptables -t filter -A OUTPUT -p TCP --dport -j ACCEPT
iptables -t filter -A OUTPUT -p UDP --dport -j ACCEPT
iptables -t filter -A OUTPUT -p TCP --sport -j ACCEPT
iptables -t filter -A OUTPUT -p UDP --sport -j ACCEPT
4.5.链路状态的控制
允许新请求、以及已经建立好的连接(本地192.168.137.20)。
# iptables -t filter -A INPUT -d 192.168.137.20 -p tcp --dport -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.137.20 -p tcp --sport -m state --state ESTABLISHED -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.137.20 -p tcp --sport -m state --state NEW -j DROP
ICMP的状态限定,允许ping出去(本地192.168.137.20)。
# iptables -A INPUT -d 192.168.137.20 -p icmp --icmp-type -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -d 192.168.137.20 -p icmp --icmp-type -m state --state ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.137.20 -p icmp --icmp-type -m state --state NEW,ESTABLISHED -j ACCEPT
4.6.放行127.0.0.1
允许本地回环通讯
# iptables -t filter -A INPUT -i lo -j ACCEPT
# iptables -t filter -A OUTPUT -o lo -j ACCEPT
4.6.启动生效
cat /etc/profile.d/iptables.sh
iptables -F
iptables -X
iptables -A INPUT -p tcp --dport -j ACCEPT
iptables -A OUTPUT -p tcp --sport -j ACCEPT
iptables -A INPUT -p tcp --dport -j ACCEPT
iptables -A OUTPUT -p tcp --sport -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
5.firewalld
- 状态查看
firewall-cmd --state
systemctl status firewalld - 打开端口/服务
#启动配置(上),永久配置(下)
firewall-cmd --zone=public --add-port=/tcp
firewall-cmd --permanent --zone=public --add-port=/tcp firewall-cmd --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=http - 添加服务
#添加空服务
firewall-cmd --permanent --new-service=myservice #配置服务
firewall-cmd --permanent --service=myservice --set-description=description
firewall-cmd --permanent --service=myservice --set-short=description
firewall-cmd --permanent --service=myservice --add-port=portid[-portid]/protocol
firewall-cmd --permanent --service=myservice --add-protocol=protocol
firewall-cmd --permanent --service=myservice --add-source-port=portid[-portid]/protocol
firewall-cmd --permanent --service=myservice --add-module=module
firewall-cmd --permanent --service=myservice --set-destination=ipv:address[/mask] - 重新加载防火墙配置
firewall-cmd --reload
killall -HUP firewalld - zone
像权限中的角色- 预定义zone
drop
block public
external
dmz
work
home
internal trusted - Son of zone
- 预定义zone
- .
Linux 防火墙
netfilter/iptables的更多相关文章
- Netfilter/iptables防火墙
http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...
- netfilter/iptables 简介
netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制.iptables 则是一个命令行工具,用来配置 netfilter 防火墙.下图展示了一个带有防火墙的简单网络 ...
- netfilter/iptables全攻略
转:http://www.linuxso.com/linuxpeixun/10332.html 内容简介防火墙的概述iptables简介iptables基础iptables语法iptables实例案例 ...
- netfilter/iptables 防火墙
目录 文章目录 目录 iptables 与 netfilter 工作机制 规则(Rules) 链(chain) 表(tables) 网络数据包通过 iptables 的过程 总结链.表和规则的关系 i ...
- Linux中级之netfilter/iptables应用及补充
一.iptables介绍 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常 ...
- (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html 本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之 ...
- Netfilter/iptables的匹配方式及处理方法
匹配方式: 匹配方式是netfilter筛选数据包的最基本单元. 内置的匹配方式: 1.接口的匹配方式: iptables -t filter -A FORWARD -i eth0 -o eth1 - ...
- netfilter/iptables和firewalld的关系
1.netfilter 是linux 内核模块,其中包含了大量的内核规则,而要想对这些内核规则进行操作,就需要用户态的工具. iptables和firewalld就是一个用户态的工具. 2.iptab ...
- Linux 防火墙:Netfilter iptables
一.Netfilter 简介 (1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具(2 ...
随机推荐
- linux mv命令详解
Linux mv命令 Linux mv命令用来为文件或目录改名.或将文件或目录移入其它位置. 用法: mv [选项]... [-T] 源文件 目标文件 mv [选项]... 源文件... 目录 mv ...
- 魔豆love移植
其中love.sh代码如下: #!/bin/sh if [ ! -f "$app_conf" ]; then echo url=http://modou.ydjiao.com/ap ...
- 魔豆应用开发傻瓜书——helloworld
一.准备 对于使用Windows的朋友,请注意,你们的编译器⼀定要将Dos换⾏符设置变更为Unix换行符,否则在路由器里就会看到每行的最后有一个^M,对于部分命令的正确执⾏是有问题的. 二.建立项目 ...
- mysql数据字典 如何生成?
用phpMyAdmin查看表结构,点击 打印预览. &lt;img src="https://pic3.zhimg.com/50/3205ff3bd3da067528f4c1 ...
- 宝塔linux面板运行jsp文件的配置工作
第一步宝塔安装和软件安装我们先安装宝塔面板(这个不需要我说咋弄吧) 安装完成后登录到宝塔面板然后安装软件我个人喜欢nginx最新版,mysql由于服务器配置很菜所以没发装56,php什么的我用不到就没 ...
- 【亲测】<g++/gcc>CentOS下g++: command not found问题的解决(c++环境安装)
CentOS下g++: command not found问题的解决 2017年02月27日 18:09:06 阅读数:5174 标签: centosgcc 更多 个人分类: 问题分析 版权声明: ...
- C/C++基础----特殊工具和技术 (重载new和delete,RTT,限定作用域的枚举类型,类成员指针,嵌套类,局部类,volatile,链接指示 extern “C”)
重载new和delete 1调用operator new( 或new[])标准库函数分配足够大的.原始的.未命名的内存空间以便存储特定类型的对象 2编译器运行相应地构造函数以构造这些对象,并为其传入初 ...
- es6 class函数的用法,及兼容程度
//es6中 class的新特性:面向对象的方式 class name{ fram(){ var div=document.getElementById("div"); div.s ...
- python报错'str' object is not callable
>>> x=1.235 >>> int(x) 1 >>> str="fsgavfdbafdbntsbgbt" >> ...
- ubuntu 间简单相互通信
1. nc 命令 在一台机器上运行nc -l 来监听本机的2222号端口 另外一台机器就能连接到这台监听的机器上,假设上面那台机器的ip是192. nc 之后就能互相发送字符了 2. iptux通 ...