iptables - Go语言中文社区

iptables


1.iptables防火墙

 

1,selinux(生产中也是关闭的),ids入侵检测,md5指纹。

2,iptables(生产看情况,内网关闭,外网打开)大并发的情况,不能打开防火墙,影响性能,硬件防火墙。

安全优化

1,尽可能的不给服务器配置外网IP,可以通过代理转发,或者换通过防火墙映射。

2. 并发不是特别大的情况并在有外网IP的环境下,开启iptables防火墙。

1.2 iptabbles基础

 

OSI7层模型以及不同层次对应那些协议

TCP/IP的三次握手,四次挥手,TCP HRADER

常用的服务端口要了如指掌

1.3 iptables防火墙简介

       iptables又可以称作为netfilter,是Linux/Unix自带的一款优秀的且开放源代码的完全自由的基于包过滤的防火墙工具,他的功能十分的强大,使用非常的灵活,可以对流入和流出的数据包进行很精细的控制。特别它可以在一台硬件很 低的机器上跑的很好,提供近400人的上网读取,好不逊色企业级专业路由器防火墙。iptables主要工作在OSI七层的二三层和四层,如果重新编译内核iptables也可以支持7层控制。

1.3 iptables工作流程

iptables采用数据包过滤机制来工作,所以他会对请求的数据包的包头数据进行分析,并根据我么预先设定的规则进行匹配来决定是否可以进入主机。

iptables 工作流程小结

 

防火墙是一层层过滤的,实际是按照配置规则自上而下进行的,从前到后进行过滤的。

如果匹配上规则,即明确表示是阻止还是通过,此时的数据包就不在进行下面的匹配了。

如果所有规则中没有明确是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到到匹配到默认规则(默认规则会明确表明是通过还是阻止)。

防火墙的默认规则是对应链的所有的规则 执行完才会执行的。

1.5 iptables专业名词

 

容器:包含和被包含的关系   

iptables是表的容器

iptables包含四张表

表是链的容器,每个表中都包含着若干个链

链是规则的容器,真正的过滤规则是属于链里面的,

规则,是iptables一系列过滤信息的规范和具体方法

真正的规则是属于链里面的

形象比喻

iptables====国家

表    =====省

链    =====市

规则   =====县级

 

2 .iptables的表(tables)和链(chains)

2.1 简介

默认的情况下,iptables根据功能和表的定义划分包含的三个表,filter,nat,mangle,其每张表又包含不同的操作链(chains)

2.2 表和链的对应关系

 

     iptables  表  filter  nat  mangle  raw

     chain     链  INPUT FORWARD OUTPUT PRETOUTING POSTROUTING

     policy    规则 端口IP协议等各式各样的规则

 

filter表 真正的防火墙 INPUT FORWARD OUTPUT  三张链

NAT表  数据包的改写 网关共享上网,IP和端口的映射 OUTPUTPREROUTING POSTROUTING 三张表

mangel   不常用  路由包的改写。INPUT FORWARD OUTPUTPREROUTING POSTROUTING,不常用 路由的标记等

RAW   不常用

2.3 filter表

 

主要和主机自身有关,真正负责主机防火墙功能(过滤流入,流出,主机的数据包)。filter是主机默认使用的表。这表定义了三个链。生产场景单台,服务器的防火墙功能全靠这张表

 

INPUT:负责过滤进入主机的数据包

FORWARD:负责转发流进主机的数据包,起转发的作用,和NAT关系很大,后面会详细介绍,LVSNAT模式。路过 net.ipv4.ip_forward=0  内核模块

OUTPUT : 处理所有源地址就是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包

对filter表的控制是我们实现主机防火强的重要功能,特别是对INPUT链的控制。

2.4 nat表

 

负责网络地址转换,即来源与目的ip地址和port的转换。

应用:和主机本身无关,防火墙一般不用nat,一般用于局域网共享上网或者特殊的端口和ip的转换服务相关

一般企业工作场景:

1,用于做企业路由(zebra)或网关(ipbles),共享上网,POSTROUTING链起关键作用

2,做内部外部IP地址一对一映射,通过iptables防火墙映射到内部服务器

3,web,单个端口映射,直接映射80端口,这个表定义了三个链,nat功能 就相当于网络的acl控制。和网络交换机acl类似。

4,OUTPUT:和主机发出去的数据包有关,改变主机发出去数据包的目的地址

5,PREROUTING: 在数据包到防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址,目的端口的等(等于是收到信的时候,根据规则重写收件人的地址)打仗先锋。

 

6     PSOTROUYING: 在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,端口等(好比,就是寄邮件,写好发件人的地址,要让人家回信时能有地址可回)。举例:我们现在的笔记本和虚拟机都是10.0.0.0/24,就是出网的时候被我们企业路由器吧源地址改成了公网地址,生产应用:局域网共享上网,军队断后的部队,离开防火墙的最后一道关。

 

2.5 iptables表和链工作的流程

 可用北京1.2号地铁老表述

 

数据包进入流程:

nat PREROUTING   端口 IP转换 核心要控制的

filter INPUT   进去主机,防火墙核心要控制的的链

nat OUTPUT    

filter OUTPUT  出主机,核心要控制的。

流进主机的包

FORWARD

1号线:主要时NAT功能,

企业案例  1,局域网上网共享路由和网关。NAT POSTTOUTING  出网

         2,外部IP和端口映射成为内部的IP和端口 使用NAT 的 PREROUTING 链

2号线:主要时filter功能,指的就是防火墙的功能,filterINPUT FORWARD(转发)

企业案例: 主要指的就是企业当中的防火墙

 

3 iptables常用命令  基于filter表

3.1 常用命令

 

iptables -F  清楚所有规则,不会清理默认的规则

iptables -X  删除用户自定义的链  自己创建 链 再配置相应的规则

iptables -Z   链的计数器清零   

iptables-V   显示版本默认 Linux自带iptables防火墙

iptables -h   查看帮助

iptables -P   更改默认规则

iptables -p    协议(tcp udp icmp all) 不加的情况默认是all

iptables -nL   列表形式显示默认表的所有信息 L list 列表 -n number 数字

iptables -t    指定表   -t      tables  表

iptables -s     指定源地址-s source

iptables -i      input  匹配进入的端口

iptables -o     output  匹配出去的端口

iptables -A    添加规则到指定链的结尾,最后一条

iptables -I     添加规则到指定链的开头第一条  优先的使用 -I

iptables --deport     目标端口 到哪里去的

iptables  --prot    指定 源端口 从哪里来的

iptables -D  指定链指定 序号 进行 删除

netstat -lntup|grep ssh  ss -lntup|grep ssh  lsof -i:22 查看ssh对饮端口要服务的关系 

iptables -nL --line-number 显示链下面规则对饮的序号,便于删除。

 

3.2 模块加载

 

  modprobe ip_tables

  modprobe iptables_filter

  modprobe iptables_nat

  modprobe ip_conntrack

  modprobe ip_conntrack_ftp

  modeprobe ip_nat_ftp

  modprobe ipt_state

解析默认的filter表 INPUT 默认的规则是 ACCEPT 接受  

使用 /etc/init.d/iptables status 查询效果和iptables -nL  是一样的 

如何查看Linux加载的模块  

lsmod  | grep"nat|filter" 

 

3.3 全命令,在服务端禁止掉,客户端ssh的访问

iptables -t filter -A INPUT -p tcp --dport 22 -j DORP  也可以不指定表 默认是filter 表

iptables -t 指定表

Iptables -A 添加规则到指定链的结尾,最后一条  append 添加

iptables -I   是添加规则到指定链的开头,第一条 insert 插入 插到第一行 首先执行

iptables -p   指定协议  默认 不写 指的所有端口 

iptables -J 指定动作  ACCEPT 接受 DROP 丢弃 REJECT 拒绝(拒绝会透漏信息一般不用) 

iptables --line-numbers  显示序号

禁掉端口号 之后,跑到机房 VMworkstations关闭防火墙  -F清除规则 或者重启 即可

iptables -t filter -A INPUT -p tcp --deport 52113 -j DROP

 

3.4 删除小结

 

iptables -F 删除所有规则

/etc/init.d/iptables  restart

iptables -D INTUP  规则序号     D ------deleter  删除

iptables -D (指定链)指定链  后加链 在接所要删除的序号

iptables -t filter -D INPUT -p tcp --deport 22 -j DROP  

 

3.5 恢复刚才断掉的ssh链接

 

 去机房重启系统或者登陆服务器删除刚才禁止的规则

 让机房人员重新启动服务器或让机房的人员拿着密码登录进去

  通过服务器的远程连接卡管理      “推荐”

 先写一个定时任务  没五分钟关闭一次防火墙

 测试环境  提前测试好,写成脚本,批量执行

 

3.6 禁止网段连入

 

例如:我们要在LVS负载均衡组上面做防火墙,服务器上加上网段的限制,源地址符合什么网段如10网段的就让你连,别的拒绝。防火墙开的,ssh开的,外网连不进来,但是VPN之后,可以连接,这是因为内网做了iptables的允许。社会是不公平的,也是不公平的。

 

基于客户端源地址进行控制

 

iptables -t filter  -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP 
iptables            -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP   默认  filter 表 

 

Windows  CMD ipconfig 查看本机的网段。

注 :这两条命令的等价的 

执行以上命令,之后我们已经无法连接了。

登录虚拟机 , 删除我们刚才即禁止的来源地址为10网段的命令

iptables -D INPUT -I -s 10.0.0.0/24 -j DROP 

iptables -D INPUT 1   后面直接接,数字也可以。

 

 

 

3.7 ! 叹号 取反

iptables -t filter -A INPUT -i eth0 ! -s 10.0.0.0/24 -j DROP 

意将,不是这个网段的IP封杀在外面

 

3.8 多条件匹配  过滤

iptables -t filter -A INPUT -p tcp --dport 22 -i eth0 ! -s 10.0.0.0/24 -j DROP

去所有条件的交集,同时过滤

 

3.9封掉端口

iptables -A INPUT -p tcp --dprot 3306 -j DROP   ### 禁止访问MySQL端口 

 

3.10 匹配唯一端口

iptables -A  -p tcp  --sport 53   ## 指定 源端口

匹配除了指定端口之外的端口

iptables -A INPUT -p tcp --dport !22 ###匹配 指定目的端口以外

 

3.11 匹配端口范围

iptables -I INTUP -p tcp --dport 18:80 -j DROP
iptables -I INPUT  -p tcp  -m multiport --deport 21,22,23,24 -j DROP  ##输出禁止端口范围

 

3.12 匹配网络接口

 

iptables -A INPUT  -i  eth0 input  匹配进去的网卡接口

iptables -A FORWARD -o eth0   -o output  匹配 出去的网卡

匹配icmp类型

iptables -I INTUP -p icmp --icmp-type 8 -j DROP
iptables -I INTUP -p icmp --icmp-type 8 -j  ACCEPT

匹配网络状态

-m state --state 

 

NEW   已经或将启动新的连接

ESTABILISHED: 已经建立的连接

RELATRD 正在启动的新连接

INVALID: 非法或无法识别的

限制指定时间包的允许通过数量以及并发数-

-m limit --limit n/{second/minute/hour}:

 

4 .手动执行iptables命令配置企业生产环境下的防火墙

4.1 生产场景配置主机防火墙有两种模式,介绍

 

逛公园和看电影两种模式

逛公园:默认随便进出,对非法分子进行拒绝  企业实际生产场景:企业配置上网网关路由

看电影:默认没有票就进不去,花钱买票才能进去,看电影。企业应用:服务器主机防火墙

很显然,第二种更加的严格,安全

逛公园以及看电影两种模式两种模式的本质就防火墙的默认规则是允许还是拒绝,没有匹配上的情况下我是拒绝还是允许,拒绝才是安全的。类似与sudo命令。

再此,我们以电影院模式,来布置一个生产场景下的防火墙

 

4.2 各种清除

 

iptables -F 清空之前所有的规则

iptables -X 清空用户自定义的量

iptables -Z  清空计数器  

 

4.3 在配置拒绝之前,要配置允许,

[root@lb-01-5 ~]# iptables -A INPUT -p tcp -s 10.0.0.0/24 -j ACCEPT ##指定网段
[root@lb-01-5 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT   ###指定端口 

允许回环接口

iptables -t filtet -A INPUT -i lo -j ACCEPT 
iptables -t filter -A OUTPUT -o lo -j ACCEPT  

之后,自己的本级要能够通信

 

4.4 修改默认规则

iptables -P INPUT DROP  
iptables -P FORWARD DROP   
iptables -P OUTPUT ACCEPT

到目前为止,是很安全的模式,对外默认如果没有匹配上规则丢弃的

 

4.5 办公司固定ip网段

iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT  ##### 办公室固定IP段
iptables -A INPUT -s 192.168.1.9/24 -p all -j ACCEPT    ##### IDC机房的内网网段
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT         ###  其他机房的外网网段
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT  #### IDC机房的外网网段 
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT   ###其他IDC机房的外网网段

 

本步骤表示允许IDC LAN和办公网IP的无条件连接访问,因为使我们自己的“人”,所以要信任通过, 对于外部用户还无法访问服务器的任何服务。

 

4.6 允许80端口

[root@lb-01-5 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 

4.7 允许其他人能ping通

[root@lb-01-5 ~]# iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

 

4.8 允许关联的包通过

[root@lb-01-5 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@lb-01-5 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

4.9 基本的防火墙配置完成

[root@lb-01-5 ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  10.0.0.0/24          0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  124.43.62.96/27      0.0.0.0/0           
ACCEPT     all  --  192.168.1.0/24       0.0.0.0/0           
ACCEPT     all  --  192.168.1.0/24       0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255 
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

 

4.10.1 如何永久保存

 

我们在命令行中的操作,都是储存在内存当中,没有在磁盘,重启服务器就会丢失

我们要将其存到配置文件,做到永久存储

 

4.10.2 方法一:命令保存

[root@lb-01-5 ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 

4.10.2 方法二:重定向

 

[root@lb-01-5 sysconfig]# iptables-save>/etc/sysconfig/iptables.bak

 

4.11如何查看 所有端口

[root@lb-01-5 sysconfig]# nmap 10.0.0.5 -p 1-65535

Starting Nmap 5.51 ( http://nmap.org ) at 2017-04-16 15:31 CST
Nmap scan report for www.etiantian.org (10.0.0.5)
Host is up (0.0000030s latency).
Not shown: 65533 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.70 seconds

 

 

 

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wanchaopeng/article/details/80923635
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 20:46:32
  • 阅读 ( 1339 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢