zoukankan      html  css  js  c++  java
  • linux 防火墙

    防火墙定义

    防火墙是一种高级访问控制设备,置于不同网络安全域之间,他通过相关的安全策略来控制(允许,拒绝,监视,记录)进出网络的访问行为。

    防火墙是一组规则,当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。

    防火墙分类

    硬件防火墙
    软件防火墙

    主机防火墙
    网络防火墙


    iptables 四表五链

    功能(表)

    filter:防火墙过滤数据包,默认表
    nat:网络地址转换(network address translation)
    mangle:拆分,做出修改
    raw:关闭nat表上启用的连接追踪功能
    

    PREROUTING      (previous  routing路由前)
    INPUT
    OUTPUT
    FORWARD
    POSTROUTING  (postpone routing路由后)
    

    功能(表)中的链

    filter:INPUT,FORWARD,OUTPUT
    nat:PREROUT(DNAT),INPUT,OUTPUT,POSTROUTING(SNAT)
    mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    raw:PREROUTING,OUTPUT
    

    firewalld优先级

    策略应用优先级:raw,mangle,nat,filter
    策略常用优先级:filter,nat,mangle,raw
    

    iptables

    iptables工具:
    	-t:指定表
    	-L:查看规则 
    	-n:以数字形式查看
    	-F:清空所有规则
    	-X:清除自定义链
    	-P:指定链的默认规则
    	-j:指定要执行的动作
    		ACCEPT:接受
    		DROP:丢弃
    		REJECT:拒绝
    		DNAT:目标地址转换
    		SNAT:源地址转换
    	-A:append追加策略
    	-s:source源ip(网段)
    	-d:destination目标ip(网段)
    	-I:insert插入策略
    	-p:protocol指定协议
    	--dport:指定目标端口
    	--sport:指定源端口
    	--line-num:显示规则行号
    	-D:按照行号删除某链中的规则
    	-i:指定网卡
    

    filter表为例

    清空所有策略:                                        iptables -F
    清空自定义链:                                        iptables -X
    自定义一个链                                         iptables -N old_forward
    修改自定义链的名字                                    iptables -E old_forward new_forward
    把filter中forward链的默认策略打成drop                  iptables -P FORWARD DROP                
    查看filter表中的策略并且显示行数:                      iptables -L -n --line-number    
    删除filter表中forward链中的第9条策略:                 iptables -t filter -D FORWARD 9
    
    
    
    限制所有主机(0.0.0.0)拒绝ping本主机                    
    iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT    
    
    显示所有主机(0.0.0.0)拒绝通过ens33网卡ping本主机       
    iptables -t filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT
    
    放行80端口
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    

    开启转发模式

    ╭─root@localhost.localdomain ~  
    ╰─➤  cat /proc/sys/net/ipv4/ip_forward 
    0
    ╭─root@localhost.localdomain ~  
    ╰─➤  echo 1 > /proc/sys/net/ipv4/ip_forward
    
    或者
    
    # vim /etc/sysctl.conf 
    ...
    net.ipv4.ip_forward = 1
    ...
    # sysctl -p
    
    #源地址为192.168.250.0网段的ip地址经过防火墙都转换成192.168.31.100这个ip地址(SNAT:源地址转换)
    
    iptables -t nat -A POSTROUTING -s 192.168.250.0/24  -d 192.168.250.0/24 -j SNAT --to-source 192.168.31.100
     
    -------------------------------------------------------
       
    #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.250.1(DNAT目标地址转换)
    
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.1:80
    
    -------------------------------------------------------
    
    #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.31.100的9999号端口(DNAT目标端口地址转换)
    
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.31.100:9999
    

    firewall相关配置使用

    firewall-cmd --state       #查看状态
    firewall-cmd --list-all        #查看过滤的列表信息
    firewall-cmd --add-port=80/tcp --permanent    #永久添加一个80端口(重启生效)
    firewall-cmd --remove-port=4444/tcp    #移除4444/tcp端口
    firewall-cmd --reload     #重新加载firewall
    
    

    firewall 有zone的概念

    [root@node1 ~]# firewall-cmd --get-zones
    work drop internal external trusted home dmz public block
    
    
    1. drop (丢弃) 任何接收到的网络数据都被丢弃,没有任何回复,公有发送出去的网络连接
    2. block(限制)任何接收的网络连接都被IPV4 的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒绝
    3. public (公共) 在公共区域内使用,不能相信网络内的其它计算机不会对你的计算机造成危害,只接收经过选取的连接
    4. external (外部)特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其它计算,不能信任它们不会对你的计算机造成危害,只能接收经过选择的连接。
    5. dmz (非军事区) 用于你的非军事区的电脑 ,此区域内可公开访问,可以有限的进入你的内部网络,仅接收经过选择的连接。
    6. work (工作) 可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
    7. home (家庭) 用于家庭网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
    8. internal (内部)用于内部网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接
    9. trusted (信任) 可接收所有的网络连接

  • 相关阅读:
    SQL SERVER2005中将普通表修改为分区表
    手把手教你建立SQL数据库的表分区
    捕获input 文本框内容改变的事件(onchange,onblur,onPropertyChange比较)
    sql语句求排名
    带输出参数的插入语句
    js Base64.encode(str)_decode(str).html
    jquery.base64.js(完美解决中文乱码) 免费版
    sql数据库如何获取某个字段里的最大值?
    C#里封装 继承 多态
    C#中的属性get和set()方法
  • 原文地址:https://www.cnblogs.com/du-z/p/11089983.html
Copyright © 2011-2022 走看看