快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理
概述
iptables是一种运行在linux下的防火墙组件,下面的介绍可以快速的学习iptables的入门使用。
特点(重要)
- 它的工作逻辑分为 链、表、规则三层结构。
- 数据包通过的时候,在对应表中,规则从上向下匹配,匹配到即跳出,后续规则忽略。
- 常用于过滤数据包和转发数据包(代理服务器)。
- 工作方式基于IP 端口 和MAC
结构
| 链名 | PREROUTING | FORWARD | POSTROUTING | INPUT | OUTPUT |
| 含义 |
一般是指从外网发送到当前主机上 并且在路由规则处理之前 |
一般指从外网发送到当前主机上 路由规则处理的情况,这种情况 大概有两种可能性
|
一般是指从外网发送到当前主机上 并且在路由规则处理之后,这种情 况出现的可能性也有两种
|
发送给本机的数据 | 本机向外主动发送的数据 |
| 默认可用表 |
|
|
|
|
|
iptables的工作流程大体上可以表达为三种
- 源地址发送数据--> {PREROUTING-->路由规则-->POSTROUTING} -->目的地址接收到数据
- 源地址发送数据--> {PREROUTING-->INPUT-->本机}
- {本机-->OUTPUT-->POSTROUTING} -->目的地址接收到数据
从上表当中我们可以看到,对于不考虑地址转发的情况下,例如一台独立的主机的网络管理,我们只需要配置INPUT和OUTPUT两条链即可完成对网络的管理,本次的重点也是这两条链接。
实例
1, 管理规则
iptables [-t 表名] [选项] -n
选项:
-L 查看
-F 清除所有规则
-X 清除自定义链
-Z 清除所有链统计
-n的含义是用ip和端口的方式来显示规则
例:
查看filter表中的所有规则
iptables -t filter -L -n
清空filter表中的规则
iptables -t filter -F
2,定义表的默认规则
首先要牢记iptables是有链 有表的结构 , 那么定义每一条链上的每一条表的默认规则的格式为
iptables -t 表 -P 链 动作类型
-t 就不说了 -P 这里要大写 链的名称也是大小写敏感的注意不要写错 动作类型有ACCEPT允许通过 DROP丢弃 也就是禁止 还有一种动作是LOG作为日志记录,目前我还没有用过。
例:
设置INPUT链上filter表默认规则
iptables -t filter -P INPUT ACCEPT
这里要注意的是,默认允许了所有的链接都可以通过,到达服务器。这样的设置在正式生产服务器环境上是十分危险的,不建议这么设置,应当设置为DROP,但是默认允许所有的链接都禁止的后果就是把自己的远程操作也踢掉了,服务器在本地还无所谓,但是在远程这就麻烦了。于是要牢记,默认规则要在设置好自己访问的规则以后再设置,最好是在最后设置。
3,自定义规则
下面我们来真正设置某一条链上的某个表中一个基于IP和端口的规则,也是iptables最常见的用途
格式:
iptables [-AI 链] [-io 网卡] [-p 协议] [-s 源IP] [-d 目标ip] -j 动作
例:
禁止ip为192.168.1.110的计算机访问本机eth0网卡
分析:
- 禁止XXX访问本机 所以是INPUT链 增加规则使用-A
- 网卡是eth0因为是INPUT链 所以参数应该是 -i
- 源ip是 192.168.1.110
- 动作是 DROP
于是应该这样写
iptables -A INPUT -i eth0 -s 192.168.1.110 -j DROP
反过来,禁止本机访问192.168.1.110可以这么写
iptables -A OUTPUT -o eth0 -d 192.168.1.110 -j DROP
例:
允许本机访问本地回环网卡 localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
现在我们可以添加一个针对固定IP的策略了,那么如何添加一个网段的策略的,例如禁止192.168.1.xxx 这个网段所有的IP访问本机,这里是要用下面的写法的
iptables -A INPUT -i eth0 -s -j DROP
这里的192.168.0/24是代表网段,具体含义可以去了解 计算机网络原理,24其实指的是二进制的从左到右 有24个1 ,在IPV4的ip地址表示方法下 有32位,那么32-24=8 也就是十进制IP最后一段位置代表是0
于是我们可以 1 针对IP 2 针对IP段 设置策略
下面来添加对端口的策略,这个往往也是最细节最有用的内容
格式:
iptables -A 链 -io 网卡 -p 协议 -s 源ip --sport 源端口 -d 目标ip --dport 目标端口 -j 动作
这里有几个点要注意
- 和IP一样 链的不同(可能是INPUT也可能是OUTPUT) 使用不同的-i或者-o
- -p是小写的。 代表协议,类型可以是tcp、udp、icmp或者all,特别是要注意的是我们平时使用的ping命令 其实是icmp协议,而这个协议比较特殊,不使用端口 所以在使用all的时候(包含icmp)同时设置端口可能会出错!
- INPUT要有源,OUTPUT要有目标,但是INPUT往往是限制目标端口,OUTPUT往往是限制源端口,注意逻辑不要乱。
例:
web服务器添加80服务
iptables -A INPUT -p tcp --dport -j ACCEPT
允许192.168.1.x网段访问mysql数据库
iptables -A INPUT -p tcp -s --dport -j ACCEPT
最后说明一下,当有多条规则匹配一次访问的时候,以最前面的规则为准,当无法匹配到对应规则的时候,使用默认规则
在前面的例子中相信你已经发现了-A 往往是代表 ADD的意思,每次ADD都是增加规则到列表的最后,那么除了ADD 其实还有-I INSERT插入规则
具体用法是将I替换成A 同时在链名后添加数字排序
-I 链名 1
1代表了第一位顺序 也就是最优先的匹配规则
例如
iptables -I INPUT -p tcp --dport -j ACCEPT
======================我是分割线====================
上面的介绍都是具体的规则配置,这些配置在防火墙重启的时候会丢失,那么如何管理防火墙服务是下面的内容
开机自启动
chkconfig iptables on
规则保存
service iptables save
上面的命令其实是把规则保存在/etc/sysconfig/iptables文件中,重启会自动读取
如果是业务相对固定的服务器这样做无所谓,但如果需要经常切换规则,那么讲规则都写在这一个文件中并不是十分容易管理
可以把规则写成单独的文件,在开机的时候自动载入(/etc/rc.local中添加),但是要注意权限设置(755),这样做的好处是便于管理,缺点是只有开机的时候有效
如果是重启防火墙服务,则无法载入对应规则。
总结:iptables看似复杂,实际上找好逻辑对应关系还是不难的关键是5条链的几个表要理解含义,这里只简单的介绍了本机和外界通信的基本管理。
快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理的更多相关文章
- 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?
Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...
- 在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件。
原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决办法: .随便写一条iptables命令配 ...
- 版本控制工具Git工具快速入门-Linux篇
版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...
- 零基础程序员入门Linux系统 !如何快速恢复系统?
新手在学习Linux系统的时候,难免会遇到命令输错,或系统出错的难题.那么如何快速解决呢?本文就先给你一个后悔药,让你快速备份并恢复Linux系统.本文将以Ubuntu为例,在这之前,你需要一台服务器 ...
- Linux中的iptables防火墙策略
0x01 简介 iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个" ...
- Linux学习笔记 --iptables防火墙配置
iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...
- linux入门--Linux系统的优缺点
1) 大量的可用软件及免费软件 Linux 系统上有着大量的可用软件,且绝大多数是免费的,比如声名赫赫的 Apache.Samba.PHP.MySQL 等,构建成本低廉,是 Linux 被众多企业青睐 ...
- LINUX系统怎么关闭防火墙?
所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Int ...
- 配置linux-Fedora系统下iptables防火墙
参考地址:https://blog.csdn.net/zhangjingyi111/article/details/78902820 本篇文章为实验课过程记录,较为简略. 1.查看系统是否安装ipta ...
随机推荐
- Ext.grid.plugin.RowExpander的简单用法
有时候,我们在grid里渲染数据时,由于某些字段的内容太长,而grid又不会自动出现滚动条,于是溢出的内容后面就会出现省略号, 导致信息展示不完全.如果,这个信息不太重要,展示不完全也无关紧要.可是, ...
- 习惯&感恩
A不喜欢吃鸡蛋,都给了B吃,刚开始B很感谢,久而久之便习惯了.习惯了,便理所当然了. 后来有一天,A将鸡蛋给了C,B就不爽了.她忘记了这个鸡蛋本来就是A的,A想给谁都可以. 为此,她们大吵一架,从此绝 ...
- Eclipse 下如何删除一个项目的 SVN 信息
选中项目,右键 - Team - 断开连接 出现如下对话框,根据需要,选择 “删除”或者“不删除”,点击 Yes 即可
- MySQL 跳过同步错误方法
最近MySQL 遇到了同步问题,现整理一下常遇到的错误的解决方法,备用. 方法一:手动设置动态参数 sql_slave_skip_counter 我常用的脚本: stop slave sql_thre ...
- C#图片压缩的实现方法
一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的.尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,当然了如果是需要高质量的图片也得需要生产缩略图. 一般在web应用中 ...
- jxl导入/导出excel
1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...
- 【Todo】字符串相关的各种算法,以及用到的各种数据结构,包括前缀树后缀树等各种树
另开一文分析字符串相关的各种算法,以及用到的各种数据结构,包括前缀树后缀树等各种树. 先来一个汇总, 算法: 本文中提到的字符串匹配算法有:KMP, BM, Horspool, Sunday, BF, ...
- 判断客户浏览器是否支持cookie
function check(){ if(window.navigator.cookieEnabled) return true; else{ alert("浏览器配置错误,Cookie不可 ...
- PHP面向对象(PHP对象在内存中的分配)
对 像在PHP 里面和整型.浮点型一样,也是一种数据类,都是存储不同类型数据用的, 在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻 辑上 说大体上是分为4 段,栈空间段. ...
- urlrewrite 地址重写
环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...