【iptables】linux网络防火墙-iptables基础详解(重要)
一:前言
二:iptables 的历史以及工作原理
1.iptables的发展:
2.iptables的工作机制
3.防火墙的策略
三.规则的写法:
iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个filter nat mangle
iptables -t filter -A INPUT -s 172.16.0.0/ -p udp --dport -j DROP
iptables -t filter -R INPUT -s 172.16.0.0/ -p udp --dport -j REJECT
第二种理解:
iptables(选项)(参数)
选项:
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
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)。
动作包括:
- accept:接收数据包。
- DROP:丢弃数据包。
- REDIRECT:重定向、映射、透明代理。
- SNAT:源地址转换。
- DNAT:目标地址转换。
- MASQUERADE:IP伪装(NAT),用于ADSL。
- LOG:日志记录。
例子:
- 清除已有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 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
- 屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/ -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/ -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/ -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
- 查看已添加的iptables规则(如果不加-t 表名 默认查询的filter)
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的规则,执行:(如果不加-t 表名 默认删除的是filter)
iptables -D INPUT
四:详解COMMAND:
1.链管理命令(这都是立即生效的)
2.规则管理命令
3.查看管理命令 “-L”
iptables -L -n -v
五:详解匹配标准
1.通用匹配:源地址目标地址的匹配
2.扩展匹配
2.1隐含扩展:对协议的扩展
2.2显式扩展(-m)
六:详解-j ACTION
常用的ACTION:
七:状态检测:
八:SNAT和DNAT的实现
1.SNAT基于原地址的转换
2.DNAT目标地址转换
例如:配置iptables,将80端口转发到8080端口:
iptables -t nat -A PREROUTING -p tcp --dport -j REDIRECT --to-port
保存到iptables中,使其开机有效
iptables-save
九:控制规则的存放以及开启
1.service iptables save 命令
2.iptables-save 命令
3.iptables-restore 命令
十:总结
三个有用的例子:
- 1:配置iptables,将80端口转发到8080端口:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
或者:
如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.1. iptables -t nat -A PREROUTING -d 192.168.1.80 -p tcp --dport -j DNAT --to-destination 192.168.1.80:
保存到iptables中,使其开机或者重启仍然有效
service iptables save
如果上面命令报错需要安装iptables服务:(如下在线安装iptables服务)
yum install iptables.service
systemctl start iptables.service
syatemctl enable iptables.service
- 2.开放8080端口
开放端口:
/sbin/iptables -I INPUT -p tcp --dport -j ACCEPT
使其永久生效:
/etc/rc.d/init.d/iptables save
或者:(前提是安装iptables.service服务)
service iptables save
- 3.查看已经添加的地址转发策略与删除转发策略(查询nat表与删除nat表)
[root@VM_0_12_centos ~]# iptables -t nat -L -n --line-number #查看nat表里面的规则
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
REDIRECT tcp -- 0.0.0.0/ 0.0.0.0/ tcp dpt: re
dir ports Chain INPUT (policy ACCEPT)
num target prot opt source destination Chain OUTPUT (policy ACCEPT)
num target prot opt source destination Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
MASQUERADE tcp -- 0.0.0.0/ 0.0.0.0/ tcp dpt:
[root@VM_0_12_centos ~]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination Chain FORWARD (policy ACCEPT)
num target prot opt source destination Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
删除nat表里面的PREROUTING链的第一条规则:
[root@VM_0_12_centos ~]# iptables -t nat -D PREROUTING
4.如果想关闭防火墙我们可以用service iptables stop
[root@localhost ~]# service iptables stop #停止防火墙
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# service iptables status #查看状态
iptables: Firewall is not running.
关于防火墙的开启与查看状态查看:http://www.cnblogs.com/qlqwjy/p/7465208.html
iptable图形介绍: ://www.cnblogs.com/zydev/p/6289531.html
【iptables】linux网络防火墙-iptables基础详解(重要)的更多相关文章
- linux网络防火墙-iptables基础详解
一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙 ...
- Linux网络编程--洪水攻击详解
洪水攻击详解 ①注解:洪水攻击(FLOOD ATTACK)是指利用计算机网络技术向目标主机发送大量无用的数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常服务的网络行为. 主要原理:利用了网络 ...
- LINux网络的NAPI机制详解一
在查看NAPI机制的时候发现一篇介绍NAPI引入初衷的文章写的很好,通俗易懂,就想要分享下,重要的是博主还做了可以在他基础上任意修改,而并不用注明出处的声明,着实令我敬佩,不过还是附上原文链接! ht ...
- linux网络编程之网络函数详解
1.epoll_create函数 函数声明:int epoll_create(int size) 该 函数生成一个epoll专用的文件描述符.它其实是在内核申请一空间,用来存放你想关注的socket ...
- iptables详解(11):iptables之网络防火墙
我们一起来回顾一下之前的知识,在第一篇介绍iptables的文章中,我们就描述过防火墙的概念,我们说过,防火墙从逻辑上讲,可以分为主机防火墙与网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防 ...
- iptables防火墙相关命令详解
前提基础: 当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发. iptables实现防火墙功能 ...
- iptables的概念与底层原理(详解)
目录 一:iptables 1.iptables简介 2.什么是防火墙? 3.防火墙种类 二:iptables基本介绍 1.解析内容 三:iptables流程(讲解) 1.流入本机 2.解析(流入本机 ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...
随机推荐
- 清华集训2015-Day 2
校内测试做到了,于是就把解题报告发出来. 简单回路 一个 \(n\times m\) 的方格纸,有 \(k\) 个障碍点.\(q\) 次询问,每次询问 \((x,y)\) ,问有多少条简单回路经过 \ ...
- Paint Chain HDU - 3980(sg)
因为题中是个环, 所以我们可以首先拿出一组m 如果n<m 先手必输 否则的话跑sg函数 n = n-m #include <iostream> #include <cstdio ...
- java 自动装箱
Java 编译器把原始类型自动转换为封装类的过程称为自动装箱(autoboxing),相当于调用包装类的valueof方法.举例说明: 源码: 编译之后的代码:
- 百度地图经纬度批量查找功能XGeocoding使用手册
<XGeocoding使用手册> 1.下载XGeocoding V2 http://www.gpsspg.com/xgeocoding/download/ 2.解压XGeocoding_v ...
- UltraISO制作U盘启动盘
第一步:导入镜像文件 文件->打开 第二步: 启动->写入硬盘映像 隐藏启动分区选择“无” 然后等待即可.
- 51nod 1421 最大MOD值 | 暴力
题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...
- IDEA之插件篇
强烈推荐小伙伴们,安装以下插件:
- HTTP返回代码 201 304 404 500等代表的含义
在网站日志中,我们经常会看到很多返回的http代码,如201.304.404.500等等.可是这些具体的返回的HTTP代码究竟什么含义呢,在此做一下知识普及吧,记不住不要紧,到时候看看就行了,但最主要 ...
- python基础之函数进阶之函数作为返回值/装饰器
因为装饰器需要用到返回函数的知识,所以在这里将返回函数和装饰器合并讲解. 什么是返回函数? 我们知道,一个函数中return可以返回一个或者多个值,但其实,return不仅可以返回值,还可以返回函数. ...
- Python【经典类与新式类】
经典类多继承的调用方法顺序是:深度优先查询,如下图: 新式类多继承的调用方法顺序是:广度优先查询,如下图: 可以使用下面的代码进行实验验证: #经典类class A: def __init__ ...