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 ...
随机推荐
- Qt 中的事件处理(二)
1. 回顾事件传递的过程 ①源头:操作系统 操作系统检测到用户的动作时,就会产生一个系统消息,系统消息就会被发送到正在运行的Qt应用程序中, ②应用程序收到系统消息后, 他会将系统消息翻译成对应的 ...
- RedHat如何关闭防火墙
1.查看防火墙是否已开启 #可以查看到iptables服务的当前状态. service iptables status 上图表示防火墙已关闭. 2.关闭防火墙 关闭防火墙的方法为: 1)永久性生 ...
- jQuery自定义扩展写法
jQuery自定义扩展有两种写法: $.extend({}) ; 调用方法: $.方法 $.fn.extend({}); 调用方法: ...
- 17行代码解决微信小程序图片延迟加载
js 页面 Page({ data: { realScrollTop: 0,//页面滚动距离 driveHeight //屏幕高度可初始化设置 }, scroll(e){ if(e.detail.sc ...
- Atom窗口切换和放大或者缩小
Atom窗口切换和放大或者缩小 快捷键就是 F11
- java容器Container和组件Component之GUI
GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面,打个比方吧,我们点击QQ图标,就会弹出一个QQ ...
- Java第10次实验(网络)
参考资料 本次作业参考文件 正则表达式参考资料 漫画:HTTP 协议极简教程,傻瓜都能看懂! 注:主要根据实验任务书的指导完成本次实验. 第1次实验 1. 网络基础 ipconfig.ping Con ...
- zuul网关Filter处理流程及异常处理
本文转载自:https://blog.csdn.net/tianyaleixiaowu/article/details/77893822 上一篇介绍了java网关Zuul的简单使用,进行请求路由转发和 ...
- 基于element-ui的多选下拉框和tag标签的二次封装
前言: 今年这大半年我主要负责公司的后台教务管理的开发,这个管理系统目前主要是给公司的内部人员去配置公司的核心项目(例如:熊猫小课)的所有数据,例如课程的配置.课程期数的配置.课程版本的配置.活动的配 ...
- Foxmail Gmail Outlook
三个邮件客户端都比较好,但是作为用户精力是非常有限地,必须优中选优. 我选outlook,非常值得拥有. 理由如下: (1)和office完美契合 (2)和生产环境完美契合 (3)免费 (4)良好地任 ...