网络基础

TCP/IP模型:

    应用层===传输层===网络层===数据链里层===物理层

  数据封装:

    MAC帧头+IP报头+TCP/UDP报头===HTTP请求

    数据帧

     TCP/UDP报头:

       随机产生一个大于1024的端口

       目的端口:80

     IP报头:

       源IP地址

       目的IP地址

     MAC帧头:

       源MAC地址

       目的MAC地址

端口号Port:

  作用:标识不同应用程序

  数字:0---65535,小于1024端口为著名端口

  常用端口:

http         tcp/80
https tcp/443
SSH tcp/22
telnet tcp/23
ftp tcp/21(命令连接),tcp/20(数据连接)
mysql tcp/3306
smtp tcp/25
pop3 tcp/110
dns tcp/53,udp/53
dhcp udp/67(服务端),udp/68(客户端)
SAMBA tcp/139,tcp/445,udp/137.udp/138
ntp udp/123
zabbix tcp/10050(agent),tcp/10051(server)

ARP-----Address Resolution Protocol 地址解析协议

  作用:根据已知的IP地址获取对应的MAC地址

Linux iptables 

  作用:

    进行数据过滤:入方向,出方向,转发穿过服务器的

    为数据打标记

    网络地址转换

  Linux防火墙

    内核集成的模块netfilter

    iptables工具:实现添加,删除,修改,查看防火墙规则

钩子函数,用来钩数据的

input:处理进来的数据

output:处理出去的数据

forward:处理转发的数据

prerouting:截获路由前的操作,数据处理没进网卡前

postrouting:截获路由后的操作,数据处理完了,从网卡流出去后

五条链

存规则的:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

iptables四表:

    filter(实现实现数据过滤):INPUT,OUTPUT,FORWARD

    nat (实现实现网络地址转换,换ip的):PREROUTING,OUTPUT,POSTROUTING

    mangle(为数据打标记):INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING

    raw(数据跟踪的)PREROUTING,OUTPUT

iptables工具的使用

# iptales <command> <chain> <rule>

命令command

查看类:

  -L:显示指定表中得规则

    -n:以数字的格式显示IP及端口号

    -v:显示规则相关的详细信息

    -x:显示计数器显示精确的数字

    --line-numbers:显示规则的号码

    -t:<table>:指定表名,默认为filter表

# iptables -nL --line-numbers -v

管理规则

1)添加规则

  -A:追加一条规则,添加到链的尾部

  -I CHAI【number】:插入一条规则,插入为CHAIN的第number条;number不写表示插入到第一条。-I INPUT

2)删除规则

  -D CHAIN【number】:删除指定链的第number条规则

3)修改规则

  -R CHAIN【number】:替换指定的规则

4)清空所有规则

  -F  CHAIN

5)修改链的默认规则

  -P CHAIN <处理方法>

规则的匹配标准

1)源IP地址

  -s address

    ! -s 192.168.1.1

    -s 192.168.1.0/24

2)目的IP地址

  -d address

    !-d 10.1.1.1

    -d 10.1.1.0/24

3)协议

  -p tcp  -sport port1[:port2]

  -p tcp --dport port1[:port2]

  -p udp --sport port1[:port2]

  -p udp --dport port1[:port2]

  -p icmp

    --icmp-type 8    echo-request

    --icmp-type 0  echo-reply

4)匹配数据包进行的网卡接口

  -i eth0

5)匹配数据包流出的网卡接口

  -o eth1

数据包的处理行为 -j target

  ACCEPT  允许

  REJECT  拒绝

  DROP     丢弃

  LOG    记录日志

先堵后通

主机IP是192.168.150.163d

实例1:允许客户端访问SSH服务  -P(修改某一条链的默认规则)

[root@node1 ~]# iptables -P INPUT DROP
[root@node1 ~]# iptables -P OUTPUT DROP
[root@node1 ~]# iptables -P FORWARD DROP

[root@node1 ~]# iptables -A INPUT -s 192.168.122.1 -d 192.168.122.135 -p tcp --dport 22 -j ACCEPT
[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -d 192.168.122.1 -p tcp --sport 22 -j ACCEPT

实例2:允许所有客户端访问web服务器

[root@node1 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 80 -j ACCEPT
[root@node1 ~]# iptables -I OUTPUT -s 192.168.122.135 -p tcp --sport 80 -j ACCEPT

实例3:允许客户端10.1.2.101  ping服务器

[root@node1 ~]# iptables -A INPUT -s 192.168.122.1 -d 192.168.122.135 -p icmp --icmp-type 8 -j ACCEPT
[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -d 192.168.122.1 -p icmp --icmp-type 0 -j ACCEPT

实例4:允许服务器ping其他主机

[root@node1 ~]# iptables -A OUTPUT -s 192.168.122.135 -p icmp --icmp-type 8 -j ACCEPT
[root@node1 ~]# iptables -A INPUT -d 192.168.122.1 -p icmp --icmp-type 0 -j ACCEPT

实例5:允许服务器ping本机

[root@node1~]# iptables -A INPUT -i lo -j ACCEPT

[root@node1~]# iptables -A OUTPUT -o lo ACCEPT

实例6:允许DNS服务器解析所有主机名

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p udp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -s 192.168.122.135 -p udp --sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -s 192.168.122.135 -p udp --dport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p udp --sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -d 192.168.122.135 -p tcp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -s 192.168.122.135 -p tcp -sport 53 -j ACCEPT

[root@node1~]# iptables -A INPUT -s 192.168.122.135 -p tcp --dport 53 -j ACCEPT

[root@node1~]# iptables -A OUTPUT -d 192.168.122.135 -p tcp --sport 53 -j ACCEPT

保存防火墙规则

Centos 6:

[root@node1~]# service iptables save

iptables:将防火墙规则保存到 /etc/sysconfig/iptables:    [确定]

Centos 7:

[root@node1~]# iptables-save > /iptables.rule

恢复规则

[root@node1~]# iptables-restore < /iptables.rule

实例7:删除规则

[root@node1~]# iptables -D INPUT 3

实例8:修改规则

[root@node1~]# iptables -R INPUT 7 -d 192.168.122.135 -p icmp --icmp-type 0 -j ACCEPT

iptables模块

1、multiport 离散多端口

  -m multiport

    --sports port1,port2,port3

    --dports port1,port2,port3

[root@node01 ~]# iptables -I INPUT -s 192.168.122.1 -d 192.168.122.135 -p tcp -m multiport --dports 80,139,445,22 -j ACCEPT

2、iprange

  -m iprange

    --src-range IP1[-IP2]  连续写多个连续的源ip

    --dst-range IP1[-IP2]  连续写多个连续的目的ip

[root@node01 ~]# iptables -A INPUT -m iprange --src-range 192.168.1.1-192.168.1.10 -d 192.168.122.135 -p tcp --dport 80 -j ACCEPT

常说的加入白名单

3、state 状态,用连接的状态进行数据过滤

  -m state --state <状态>  决定什么样状态接收,什么样状态拒绝,像ftp根据端口放行就很麻烦,使用-m state --state模块就简单很多

  state状态:

    NEW状态

      针对某个服务的首次访问

    ESTABLISHED状态

      1、某服务的后续所有访问状态

      2、表示服务器的响应数据

    RELATED状态

      相关联的连接,给ftp用的。比如ftp服务器,只有命令连接完成,才能进行建立数据连接

      ftp两种工作模式

        主动连接:

            20/tcp:数据连接

            21/tcp:命令连接

               当客户端向服务端通过21端口建立命令连接,命令连接就是传输命令的,像get,put等,命令连接创建好后会通过20号端口主动向客户端建立数据连接

        被动连接:

               当客户端访问ftp服务器时候,通过21号端口建立命令连接后,ftp服务器会在本地随机产生一个大于1024的随机端口,完了告诉客户端,客户端在通过那个随机端口建立数据连接

    INVALID状态

      无效的连接

1、就不用每条都写OUTPUT的规则了,有一条ESTABLISHED就能全部能出去(响应)OUTPUT

[root@node01 ~]# iptables -I OUTPUT -s 192.168.122.135 -m state --state ESTABLISHED -j ACCEPT

2、保证首次访问和后续的所有访问都可以正常

[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

实例:允许ftp服务的访问

首先要卸载ip_nat_ftp和ip_conntrack_ftp

[root@node01 ~]# yum install -y iptables-services

# vim /etc/sysconfig/iptables-config

IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"

# systemctl restart iptables

[root@node01 ~]# iptables -I INPUT -d 192.168.122.135 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@node01 ~]# iptables -I INPUT 2  -d 192.168.122.135 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables四表五链及默认规则使用,的更多相关文章

  1. iptables 四表五链

    netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则.这些规则存储在专用的信息包过滤表中 ...

  2. IPtables 之“四表五链”

    目录 架构图 IP tables 简介 包过滤防火墙 Iptables如何过滤 "四表" "五链" Iptables流程 架构图 公司架构模式(酒店迎宾比喻) ...

  3. iptables详解(2):四表五链

    关于iptables中“四表五链”,我们今天来好好唠唠: 1.表的概念: 我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而ip ...

  4. 1、架构--架构图、Iptables(简介、四表五链、流程图、使用、扩展模块)、包过滤防火墙

    笔记 1.画架构图 2.Iptables 1.1 什么是防火墙 防止别人恶意访问. 1.2 防火墙种类 硬件防火墙 F5 软件防火墙 iptables firewalld 安全组 3.Iptables ...

  5. Linux对外提供服务 网络操作 端口操作 1.开启服务监听端口 2.设置防火墙,放行访问端口的包 iptables&netfilter 四表五链和通堵策略

    主题: Linux服务器上软件提供服务 1.网络操作 2.端口操作 1.网络操作 本机必须能够ping通目标主机(本地虚拟机或者远程主机) 2.端口操作 1.开启服务监听端口 2.设置防火墙,放行访问 ...

  6. iptable四表五链

    链(内置): PREROUTING:对数据包作路由选择前应用此链中的规则: INPUT:进来的数据包应用此规则链中的策略: FORWARD:转发数据包时应用此规则链中的策略: OUTPUT:外出的数据 ...

  7. [转帖] iptables之四表五链

    iptables之四表五链 http://www.cnblogs.com/clouders/p/6544584.html mark 学习一下 对防火墙一无所知.. iptables可谓是SA的看家本领 ...

  8. iptables之四表五链

    iptables可谓是SA的看家本领,需要着重掌握.随着云计算的发展和普及,很多云厂商都提供类似安全组产品来修改机器防火墙. iptables概念 iptables只是Linux防火墙的管理工具而已. ...

  9. 期中架构&防火墙¥四表五链

    今日内容 架构图 包过滤防火墙 Iptables 新建虚拟机 内容详细 一.架构图 用户通过域名访问一个网站类比开车去饭店用餐 访问网站的流程 1.浏览器输入网站的域名(www.baidu.com), ...

随机推荐

  1. Linux中inotify软件部署及参数事件演示

    声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...

  2. CSS设置百分比值的问题

    当给元素设置width:100%:height:100% 的时候没有反应 因为,元素的宽高是根据内容来自动适应的,当设置百分比值时,是根据这个元素的父元素来确定百分比的 如果父元素没有固定的值,那就需 ...

  3. 洛谷P4007 小 Y 和恐怖的奴隶主(期望dp 矩阵乘法)

    题意 题目链接 Sol 首先不难想到一种暴力dp,设\(f[i][a][b][c]\)表示还有\(i\)轮没打,场上有\(a\)个1血,\(b\)个2血,\(c\)个三血 发现状态数只有\(s = 1 ...

  4. Linux LB--负载均衡和高可靠

    1.负载均衡典型应用场景,外网.内网.私网公共服务. 典型场景: (1)用户通过公网访问数据中心的ftp.web.https服务器. (2) 在数据中心内部东西向访问其他服务时,例如,访问其他虚拟机. ...

  5. JSP内置对象——pageContext对象和config对象

    它对应的常用方法有: 现在,我新建一个“pageContext.jsp”页面,可以获得“session_page1.jsp”这个页面中保存的用户名: pageContext.jap: session_ ...

  6. 洗礼灵魂,修炼python(16)--列表进阶话题—>上节作业讲解+copy模块,浅拷贝,深拷贝

    上节课后作业: 1.使用列表解析输出结果:[(0,0),(0,2),(2,0),(2,2)] 方法1: 方法2: 方法3: 2.使用列表生成器打印斐波那契数列 3.使用列表解析生成列表[1x2,3x4 ...

  7. C++基础学习一(基础之基础)

    开篇:做了这么多年的软件,第一次使用博客的方式记录学习过程,之前都是笔记本(都有一摞了),因为之前一直从事的都是.NET的开发工作,对C++知之甚少,但一直想了解C++这门鼻祖级的语言,现在终于下定决 ...

  8. 合理配置SQLSERVER内存

    合理配置SQLSERVER内存 原文地址:https://www.cnblogs.com/lyhabc/archive/2012/09/28/2707857.html SQLSERVER是个很喜欢内存 ...

  9. java针对不同方法的分页

    一.常见的分页实现方式 ①使用List接口中的subList(int startIndex,int endIndex)方法实现分页 ②直接使用数据库SQL语句实现分页 ③使用hibernate等框架实 ...

  10. web高并发的解决方案

    我们先了解一下什么是并发和并行 并发:并发是指两个或多个事件在同一时间间隔内发生,就是可以重叠在时间段启动,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机 ...