iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
语法:

iptables(选项)(参数)
1,命令选项
-t<表>:指定要操纵的表;
-A:向规则链中添加规则;
-D:从规则链中删除规则;
-i:向规则链中插入规则;
-R:替换规则链中的规则;
-L:显示规则链中已有的规则;
-F:清除规则链中已有的规则;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
2,匹配条件

  • 隐含匹配

-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-d:目的地址
-sport:指定源端口
-dport:指定目标端口
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

  • 扩展匹配

-m state --state 匹配状态的
-m mutiport --source-port 端口匹配 ,指定一组端口
-m limit --limit 3/minute 每三分种一次
-m limit --limit-burst 5 只匹配5个数据包
-m string --string --algo bm|kmp --string"xxxx" 匹配字符串
-mtime--timestart 8:00 --timestop 12:00 表示从哪个时间到哪个时间段
-mtime--days 表示那天
-m mac --mac-sourcexx:xx:xx:xx:xx:xx 匹配源MAC地址
-m layer7 --l7proto qq 表示匹配腾讯qq的 当然也支持很多协议,这个默认是没有的,需要我们给内核打补丁并重新编译内核及iptables才可以使用 -m layer7 这个显示扩展匹配
3,动作
DROP 直接丢掉
ACCEPT 允许通过
REJECT 丢掉,但是回复信息
LOG --log-prefix"说明信息,自己随便定义" ,记录日志
SNAT 源地址转换
DNAT 目标地址转换
REDIRECT 重定向
MASQUERAED 地址伪装

iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名包括:
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。

规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

清除已有iptables规则
iptables -F
iptables -X
iptables -Z

开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT   #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT   #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT   #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT   #允许FTP服务的20端口
iptables -A INPUT -j reject   #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT   #禁止其他未允许的规则访问

允许icmp包通过,也就是允许ping:
[root@localhost ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@localhost ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)

将本机的8080端口转发至其他主机,主机IP:192.168.1.12,目标主机IP和端口:192.168.1.13:8088,规则如下;
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.1.12

将本机的80端口转发到8080端口:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

Linux防火墙 封ip:
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令
单个IP的命令是
iptables -I INPUT -s 211.1.0.0 -j DROP

封IP段的命令是
Iptables -A INPUT -s 180.178.1.0/24 -p tcp -m tcp --dport 80 -j DROP
iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP

封整个段的命令是
iptables -I INPUT -s 211.0.0.0/8 -j DROP
封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP

解封:
iptables -L INPUT
iptables -L --line-numbers 然后iptables -D INPUT 序号

查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0

删除已添加的iptables规则
将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8

iptables保存规则

  • # 保存iptables规则

service iptables save
/etc/init.d/iptables save

  • # 重启iptables服务

service iptables stop
service iptables start
/etc/init.d/iptables start

配置文件路径

/etc/sysconfig/iptables

firewalld:

RHEL 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
firewalld中常用的区域名称及策略规则:
trusted:允许所有的数据包
home:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal:等同于home区域
work:拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block:拒绝流入的流量,除非与流出的流量相关
drop:拒绝流入的流量,除非与流出的流量相关
firewall-cmd命令中使用的参数以及作用:
--get-default-zone:查询默认的区域名称
--set-default-zone=<区域名称>:设置默认的区域,使其永久生效
--get-zones:显示可用的区域
--get-services:显示预先定义的服务
--get-active-zones:显示当前正在使用的区域与网卡名称
--add-source=:将源自此IP或子网的流量导向指定的区域
--remove-source=:不再将源自此IP或子网的流量导向某个指定区域
--add-interface=<    网卡名称>:将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称>:将某个网卡与区域进行关联
--list-all:显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones:显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名>:设置默认区域允许该服务的流量
--add-port=<端口号/协议>:设置默认区域允许该端口的流量
--remove-service=<服务名>:设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>:设置默认区域不再允许该端口的流量
--reload:让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on:开启应急状况模式
--panic-off:关闭应急状况模式
与Linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙策略时添加--permanent参数,这样配置的防火墙策略就可以永久生效了。

示例:

linux防火墙学习的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  3. 第二章、 Linux 如何学习

    第二章. Linux 如何学习 最近更新日期:2009/08/06 1. Linux当前的应用角色 1.1 企业环境的利用 1.2 个人环境的使用 Linux当前的应用角色 在第一章Linux是什么当 ...

  4. linux 防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  5. Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  6. 《Linux命令学习手册》系列分享专栏

    <Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...

  7. Linux防火墙详解

    1.Linux防火墙基础 作为隔离内外网.过滤非法数据的有力屏障,防火墙通常按实现环境的不同分为硬件防火墙和软件防火墙.硬件防火墙是功能专一的硬件设备,具有比较全面的功能,其工作效率较高,但是加个昂贵 ...

  8. 尚硅谷韩顺平Linux教程学习笔记

    目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 ...

  9. Linux.NET学习手记(7)

    前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...

随机推荐

  1. HSSFWorkbook 模版使用

    Java中导入.导出Excel 一.介绍当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用 ...

  2. 超过20g的文件+上传

    demo下载地址:jsp-Eclipse,jsp-MyEclipse,PHP,ASP.NET 教程:ASP.NET,JSP,PHP 一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件 ...

  3. spring boot + mybaits 处理枚举类 enum

    枚举: //实现层调用 orderMapper.getOrder(OrderStatus.DISCOUNT); sql打印: 实际sql: select * from order where orde ...

  4. 《论文翻译》Xception

    目录 深度可分离网络-Xception 注释 1. 摘要 2. 介绍 3. Inception假设 4. 卷积和分离卷积之间的联系 4. 先验工作 5. Xception 架构 6. 个人理解 单词汇 ...

  5. git add 不能提交 vendor下面的一个文件夹

    项目要用grpc.然后composer require XXX. 把对应的包拉倒vendor目录下面.(这里先不考虑要把vendor   composer.lock提交到版本库的问题) 然后开发完成后 ...

  6. Python基础之给函数增加元信息

    1. 参数注解 当写好一个函数以后,想为这个函数的参数添加一些额外的信息,这样的话,其他的使用者就可以清楚的知道这个函数应该怎么使用,这个时候可以使用函数参数注解. 函数参数注解能提示程序员应该怎样正 ...

  7. [Go] 基础系列一: for-select中的break、continue和return

    break select中的break,类似c系列中的break,break后的语句不执行 for和select一同使用,有坑 break只能跳出select,无法跳出for package test ...

  8. mysql授权访问数据库

    授权给mysql权限 将所有的权限赋值给某个用户 grant all privileges on *.* to username@"%" identified by 'passwo ...

  9. Java知识体系思维导图

    Java知识体系,为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小,暂时接触这么多,待以后丰富 https://app.yinxiang.com/shard/s24/nl/272 ...

  10. qt mvc3

    前面两节讲的model是一维的,这次开始二维的也就是我们常说的Table,相对与list,我们多了一个列的概念. 下面讲解一个例子.我先说明一下我们这个例子,在程序目录下,我们有一个文本文件,其中存放 ...