【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 本系列文章首发于我的个人博 ...
随机推荐
- 计算机网络【2】—— CSMA/CD协议
参考文献: https://blog.csdn.net/loveCC_orange/article/details/79177129 一.认识以太网 最早的以太网是将许多计算机都连接到一根总线上. 使 ...
- Qt——用于表格QTableView的模型
如果想使用表格来呈现数据,Qt提供了一个方便的部件QTableWidget,但是直接用它实现一些功能可能比较困难.这里将介绍一种强大.灵活的方式来操作表格. 一.模型/视图架构 在这个架构中,模型用于 ...
- zabbix自定义监控阿里云RDS服务
zabbix自定义监控rds zabbix通过阿里云api 自动发现.监控阿里云RDS-Mysql数据库 注意事项 脚本会收集RDS别名, 不要默认别名 不要使用中文别名(zabbix不识别) ...
- BZOJ3203 SDOI2013保护出题人(三分)
给a做一个前缀和,那么现在每次所查询的就是(sn-sk)/(bn+nd-(k+1)d)的最大值.这个式子可以看成是(bn+nd,sn)和((k+1)d,sk)所成直线的斜率. 脑补一条直线不断减小斜率 ...
- 五种并发包总结ConcurrentHashMap CopyOnWriteArrayList ArrayblockingQueue
五种并发包总结 1.常用的五种并发包 ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet ArrayBlockingQueue Lin ...
- Theme Section HDU - 4763(些许暴力)
题意: 求出最长公共前后缀 不能重叠 而且 这个前后缀 在串的中间也要出现一次 解析: 再明确一次next数组的意思:完全匹配的最长前后缀长度 求一遍next 然后暴力枚举就好了 #include ...
- 小Z的袜子(hose) HYSBZ - 2038 (莫队算法)
原文地址:http://hzwer.com/2782.html 「BZOJ2038」[2009国家集训队] 小Z的袜子(hose) 2014年4月26日13,34721 Description 作为一 ...
- Alpha 冲刺 —— 十分之四
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前后端接口的开发 测试项目运行的服务器环 ...
- metasploit出错信息:can't allocate memory
出现不能分配内存的原因: 1.postgresql服务未启动 启动服务 service postgresql start 2.虚拟机内存分配过小,如:512M 将kali虚拟机的内存扩展到1G 出错图 ...
- 方程式EQGRP_Lost_in_Translation工具之fb.py
使用方法: 环境搭建:win2003下测试: 下载python2.6并安装 下载pywin32并安装 将C:\Python26添加到环境变量PATH中 将整个windows目录复制到windows20 ...