linux防火墙iptables
目录
一、防火墙iptables的概述
1、防火墙的作用
2、netfilter和iptables的关系
3、四表五链
4、常用的控制类型
二、配置基础iptables
1、配置格式
2、查看配置列表
3、添加规则
4、设置默认策略
三、规则匹配
1、通用匹配
2、隐含匹配
3、显示匹配
4、状态匹配
一、防火墙iptables的概述
1、防火墙的作用
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
2、netfilet和iptables的关系
这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
3、四表五链
四表:
(1)raw表
确定是否对该数据包进行状态跟踪。包括两个规则链,OUTPUT,PREAUTING
(2)mangle表
修改数据包内容,用来做数据整形,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、
FORWARD、PREROUTING 、POSTROUTING
(3)nat表
用来负责地址转换,用来修改数据包中的源、目标ip地址或端口。包含三个规则链,OUTPUT、
PREROUTING 、POSTROUTING
(4)filter表
负责过滤数据包,确认是否放行该数据包(过滤)包含三个规则链,INPUT、OUTPUT、FORWARD
五链:
(1)INPUT
处理入站数据包,匹配目标ip为主机的数据包
(2)OUTPUT
处理出站数据包,一般不在此链上做配置
(3)FORWARD
处理转发数据包,匹配流经本机的数据包
(4)PREROUTING
在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT,相当于把内网服务器的ip和端口映射到路由器的外网ip和端口上。
(5)POSTROUTING
在进行路由路由选择后处理数据包,用来修改源地址,用来做SNAT,相当于内网通过路由器NAT转换功能来实现内网主机通过一个公网IP地址来上网。
4、常用的控制类型
(1)ACCEPT
允许数据包通过
(2)DROP
直接丢弃数据包,不会给出任何回应
(3)REJCET
拒绝数据包通过,会给数据发送端发送一个响应信息
(4)SNAT
修改数据包的源地址
(5)DNAT
修改数据包的目的地址
(6)MASQUERADE
伪装成非固定公网ip地址
(7)LOG
在/var/log/message文件中记录日志信息,然后将数据包传递给下一条规则,LOG只是一条辅助动作,并没有真正处理数据包。
二、配置基础iptables
1、配置格式
iptables [ -t 表名] 管理选项 [链名] [匹配条件] [ -j 控制类型]
常用的管理选项
(1)-A
在指定链的末尾追加一条新的规则
(2)-I
在指定链的开头追加一条新的规则,未指定序号时默认第一条规则
(3)-R
修改、替换 指定链上的某一条规则,若为指定链名则清空表中的所有链
(4)-F
清空指定链的所有规则,若为指定链名则清空表中的所有链
(5)-L
列出指定链中的所有规则,若未指定链名则列出表中的所有链
(6)-n
使用数字形式显示出数字结果,如显示ip地址而不是主机名。
(7)-v
显示详细信息,包括每条规则的匹配包数量和匹配字节数
(8)-line--numbers
查看规则时,显示规则序号
2、查看配置列表
(1)安装软件包
[root@localhost ~]# yum -y install iptables iptables-services
(2) 查看配置列表
[root@localhost ~]# iptables -nL INPUT #以数字形式显示INPUT链所有的规则条目(n 和L的顺序不能倒)
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
(3)查看INPUT链所有的规则条目,并显示规则的序号
[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp dpt:domain
2 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
3 ACCEPT udp -- anywhere anywhere udp dpt:bootps
4 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
3、添加规则
(1)在INPUT链的末尾追加tcp协议允许通过的规则
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp dpt:domain
2 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
3 ACCEPT udp -- anywhere anywhere udp dpt:bootps
4 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
5 ACCEPT tcp -- anywhere anywhere
(2) 在INPUT链中的第三条插入icmp禁ping
[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp dpt:domain
2 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
3 REJECT icmp -- anywhere anywhere reject-with icmp-port-unreachable
4 ACCEPT udp -- anywhere anywhere udp dpt:bootps
5 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
6 ACCEPT tcp -- anywhere anywhere
4、设置默认策略
设置格式
iptables [-t 表名] -P 链名 控制类型
为FORWARD链设置默认规则为不允许通过
[root@localhost ~]# iptables -t filter -P FORWARD DROP
(2) 清空规则
清空INPUT的所有规则
[root@localhost ~]# iptables -t filter -F INPUT
[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
删除INPUT里的第一条规则
(1)先在INPUT第一条那创建一条规则
[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j ACCEPT
(2)通过-D命令删除第一条规则
[root@localhost ~]# iptables -t filter -D INPUT 1
(3)以数字的形式打开指定链名查看删除情况
[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
三、规则匹配
1、通用匹配
协议匹配: -p协议名 .
地址匹配: -s源地址、-d目的地址 可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡
(1)拒绝指定地址禁ping
[root@localhost ~]# iptables -t filter -s 192.168.222.100 -A INPUT -p icmp -j REJECT
2、隐含匹配
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。 端口匹配: --sport 源端口、–dport 目的端口,可以是个别端口、端口范围
允许tcp目标端口20、21通过
[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
3、显示匹配
要求以“-m 扩展模块” 的形式明确指出类型包括多端口、MAC地址、IP范围、数据包状态等条件
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
(1)在INPUT链中追加一条规则:目的端口列表中tcp25,80,110端口允许通过
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -m multiport --dports 25,80,100 -j ACCEPT
4、状态匹配
状态匹配:-m state --state 连接状态常见的连接状态:
NEw :与任何连接无关的,还没开始连接
ESTABLISHED :响应请求或者已建立连接的,连接态
RELATED:与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED配合使用INVALID :不能被识别属于哪个连接或没有任何状态
linux防火墙iptables相关推荐
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- 共创Linux防火墙,Linux防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- linux防火墙策略文件夹,Linux防火墙iptables的策略
iptables策略 iptables -L #查看现有防火墙所有策略 iptables -F #清除现有防火墙策略 只允许特定流量通过,禁用其他流量 1.允许SSH流量(重要) iptables - ...
- linux防火墙--iptables(三)
七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ...
- linux 防火墙 iptables的简单使用
linux 防火墙 iptables的简单使用 [root@web web]# uname -a Linux web 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 ...
- linux防火墙ip黑名单,【转】Linux防火墙(iptables)之黑名单
iptables删除规则 So if you would like to delete second rule : iptables -D INPUT 2 ---------------------- ...
- linux防火墙常用控制协议,Linux防火墙iptables的基础
一.网络访问控制 1.Linux一般都是作为服务器系统使用,对外提供一些基于网络的服务 2.通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能 3.常见的访问控制包括:哪些IP可以访问服务器 ...
- linux php添加防火墙,linux防火墙iptables初学者教程
Iptables是专为Linux操作系统打造的极其灵活的防火墙工具.对Linux极客玩家和系统管理员来说,iptables非常有用.本文将向你展示如何配置最通用的Linux防火墙. 关于iptable ...
最新文章
- 闭关修炼——two——struts2
- 如何用体验赢取用户信任?让 Waymo 来教教你
- python装饰器-python修饰器(装饰器)以及wraps
- nginx 修改并隐藏版本号
- Visual Studio Code 中文设置教程
- a high quality start up vc in uk
- jquery(ajax)+ashx简单开发框架(原创)
- 自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]
- 三思笔记_使用反射前先三思
- 线程----Monitor(互斥锁)类设置超时值
- wacom mac驱动_MAC系统装Wacom手绘板的方法及注意事项
- Putty 重新启动 linux sqlserver服务
- 润乾数据集调用postgresql存储过程
- hdu 1978 How many ways
- Gb28181之Ps流解析H264
- python视频换脸下载_FaceSwap下载|Faceswap(AI视频换脸软件) v1.0官方版(附使用教程)...
- matlab实现振动弹簧的实时动画,Matlab实现振动弹簧的实时动画
- 城市规划CAD影像底图快速导入方法
- 基于Go语言Beego+Layui的OA办公系统
- Socks5代理和IP代理
热门文章
- vant 做表格_Vant Cell 单元格
- 无形胜有形——0day破解组织探秘 http://blog.csdn.net/jiangtao/archive/2002/11/30/1868.aspx
- 微信公众号开发--双色球开奖查询
- android studio实现壁纸
- windows电脑连接蓝牙耳机的正确步骤
- 通过实现Runnable接口创建,开启,休眠和中断线程。
- java 中数组的创建与使用
- 《代码大全2》第11章 变量名的力量
- java 大数据(多线程)和尚分馒头 整理
- 2022年的就业前景