快速入门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 ...
随机推荐
- struts 学习
1.在Struts2的Action中取得请求参数值的几种方法 public class GetRequestParameterAction extends ActionSupport { privat ...
- BZOJ 2006 超级钢琴(划分树+优先队列)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2006 题意: 给出一个数列A,L,R,构造出一个新的集合,集合中的数字为A中任意连续t( ...
- JSON 之 SuperObject(7): 可以省略的双引号
在 JSON 中, 字符串应该在双引号中; 从上个例子才发现: 原来这个双引号可以省略, 有空格都行 当然只是在程序代码中可以省略, 对象会自动识别添加的. 即如此, 下面写法都可以: uses Su ...
- IE下easyui 缓存问题
$.ajaxSetup ({ cache: false //关闭AJAX相应的缓存 }); 这一句话就足够了,很管用!
- UVa (一道比较复杂的广搜) 816 Abbott’s Revenge
题意: 给出一个迷宫,在迷宫的节点处,面向某个方向只能向给定的方向转弯.给出起点和终点输出迷宫的最短路径,这里指的是刚刚离开起点的时刻,所以即使起点和终点重合路径也非空. 分析: 用三个变量来表示状态 ...
- UVa 122 (二叉树的层次遍历) Trees on the level
题意: 输入一颗二叉树,按照(左右左右, 节点的值)的格式.然后从上到下从左到右依次输出各个节点的值,如果一个节点没有赋值或者多次赋值,则输出“not complete” 一.指针方式实现二叉树 首先 ...
- (转)UILabel的详细使用
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 75, 40)]; //初始化UIlbel并设定frame lab ...
- js获得鼠标的位置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- BZOJ 3668 起床困难综合症
按位贪心. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- NBUT 1120 Reimu's Teleport (线段树)
题意: 有n个格子,一开始全部面向top.接下来的每次修改F a b ,如果 a>b则将a~b之间的格子全面置为向右,否则置为向左.对于每个询问Q输出向左.top.右的数量. 思路: 普通线段树 ...