快速入门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 ...
随机推荐
- 《c程序设计语言》读书笔记--大于8 的字符串输出
#include <stdio.h> #define MAXLINE 100 #define MAX 8 int getline(char line[],int maxline); voi ...
- Data.gov.uk电子政务云,牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践
牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践 我是牛津互联网研究院的研究员,是英国开放互联网的一个主要的研究机构和相关政策制订的一个机构.今天主要给大家介绍一下英国数据治理的一些现状和实践 ...
- Android View绘制流程
框架分析 在之前的下拉刷新中,小结过触屏消息先到WindowManagerService(Wms)然后顺次传递给ViewRoot(派生自Handler),经decor view到Activity再传递 ...
- This project needs to migrate WTP metadata
in command-line: path> mvn eclipse:clean path> mvn -Dwtpversion=1.5 eclipse:eclipse path> m ...
- 软件设计之UML—UML的构成[上]
UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模.UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得到了 ...
- 打印机C++
m_prnDC.SetMapMode(MM_LOMETRIC); m_iPrnX = m_prnDC.GetDeviceCaps(HORZRES);m_iPrnY = m_prnDC.GetDevi ...
- IOS中bounds和frame
* 用bounds和frame来修改尺寸是有一些小区别的 三.isEqual:方法 1> 系统会根据对象isEqual方法的返回值来决定两个对象是否相同 * 比如判断对象a和b是否相同,就会查看 ...
- Windows bat with adb
/********************************************************************* * Windows bat with adb * 说明: ...
- QCon 2015 阅读笔记 - 团队建设
QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...
- Using newInstance() to Instantiate a Fragment(转)
I recently came across an interesting question on StackOverflow regarding Fragment instantiation: Wh ...