iptables 一些小练习

可以参考之前的一起食用 https://www.cnblogs.com/lovesKey/p/10909633.html

  1. 允许来自192.168.0.0/16网段的地址来访问我的192.168.1.7的sshd服务(22端口).

    1. 定义进来的:

      iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -j ACCEPT

    2. 定义出去的:

      iptables -t filter -A OUTPUT -s 192.168.1.7 -d 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT

    3. 将默认策略都改成DROP:

      iptables -P INPUT DROP
      iptables -P OUTPUT DROP
      iptables -P FORWARD DROP
    4. 状态检测

      这是一种现实扩展(意味着我们要用-m 显示加载模块),用于检测回话之间的连接关系,我们可以实现会话功能的扩展

      什么是状态检测?

      对于tcp协议来说,它是一个有连接的协议,需要三次握手,第一次握手我们称之为NEW连接,而从第二次握手之后,ack都为1,这是正常的数据传输,tcp第二次第三次握手称为 已建立的连接ESTABLISHED,如:SYN=1 ACK=1 RST=1 这种我们无法识别,称为 无法识别的 INVALID

      在如比较特殊的,ftp协议 21是控制端口,20是数据端口.在主动模式下是这样的. 这样21和20端口就是有关系的,我们称为 RELATED

      这样我们就有了四种状态了.

      NEW

      ESTABLISHED

      RELATED

      INVALID

      2.1 练习题

      ​ 默认进来的拒绝,出去的允许,进来的只允许ESTABLISHED进来,出去只允许ESTABLISHED出去,默认规则都是用拒绝

      • 查看之前的规则位于第几行.[这里是因为上一个练习的原因才使用替换的,请注意. 默认你可以增加或插入不用改写的]

        ​ iptables -L -n --line-number

      • 改写INPUT

        • iptables -R INPUT 2 -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
        • iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT

      ​

    5. 允许自己ping别人,别人不能ping我们.

      1. icmp 协议 进来的 request 8(ping),出去的 response 0(响应) . 我需要标记为8出去,标记为0进来. 其中 8 可以用 echo-request 0 可以用echo-reply

        • iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
        • iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

        小扩展:对于127.0.0.1比较特殊,我们需要明确定义它

        ​ iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

        ​ iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

    6. SNAT 源地址转换

      ​ 将所有192.168.0.0网段ip经过的时候全部转换成223.223.223.223 这个假设出来的外网ip:

      ​ iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 223.223.223.223

      1. 如果外网地址不确定,如拨号连接的每次都会变动的ip可以使用 MASQUERADE(动态地址伪装)

        1. iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

    地址伪装并不适用于所有的地方。

    1. DNAT 目标地址转换

      1. 数据流向是由外向内的,外面是客户端,里面是服务器端通过目标地址转换可以让外面的ip通过我们的外网ip来访问我们内部不同的服务器.

        1. iptables -t nat -A PREROUTING -d 223.223.223.223 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.7

      目标地址转换一定要在路由之前来进行转换,所以要在 PREROUTING

iptables一些练习的更多相关文章

  1. iptables

    一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...

  2. 浅谈iptables 入站 出站以及NAT实例

    --------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

  5. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  6. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  7. /etc/sysconfig/下找不到iptables文件解决方法

    时间:2014-12-19 01:17来源:csdn 作者:大智 举报 点击:5639次 本想做些防火墙策略.防火墙策略都是写在/etc/sysconfig/iptables文件里面的.可我发现我也没 ...

  8. docker通过iptables修改或新增镜像映射端口

    443 8088 22 端口是初始映射端口 [root@SERVER ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...

  9. lnmp 预设iptables设置

    「LNMP」iptables初始配置   首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...

  10. 关闭SELinux和iptables防火墙

    1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...

随机推荐

  1. VK Cup 2017 - Round 1 (CDE)

    771C Bear and Tree Jumps 大意: 给定树,每步能走到距离不超过$k$的任意点,记$f(s,t)$为$s$到$t$的最少步数,求$\sum\limits_{s<t}f(s, ...

  2. NOPI 读与写

    Excel读取和写入的完整代码using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using Sys ...

  3. python之爬取小说

    继上一篇爬取小说一念之间的第一章,这里将进一步展示如何爬取整篇小说 # -*- coding: utf- -*- import urllib.request import bs4 import re ...

  4. gradle上传jar包到maven公共仓库

    首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...

  5. H5之拖拽

    步骤: 1.为将要拖拽的元素设置允许拖拽,并赋予dragstart事件将其id转换成数据保存: 2.为容器添加dragover属性添加事件阻止浏览器默认事件,允许元素放置,并赋予drop事件进行元素的 ...

  6. @Transactional 同一个类中无事务方法a()内部调用有事务方法b()的问题

    https://blog.csdn.net/u010235716/article/details/90171802 1. 事务的4种特性       序号 参数 含义1 原子性(Atomicity) ...

  7. 编译安装的httpd实现服务脚本,通过service和chkconfig进行管理

    把编译安装的httpd 实现服务脚本,通过service和chkconfig 进行管理 1 编译安装httpd 把httpd编译安装在/app/httpd/目录下. 2 在/etc/rc.d/init ...

  8. layui表单

    {include file="Public:inner_header" /} <link rel="stylesheet" href="__ST ...

  9. Python-共享引用

    A会改变么? 下面三小段代码,A的值都会改变么? >>> A = "spam" >>> B = A >>> B = " ...

  10. Linux VPS搭建蚂蚁笔记Leanote私有云笔记存储平台

    一.基础环境LNMP 安装nginx: yum install epel-release -y yum install nginx -y # 启动 nginx systemctl start ngin ...