开发者

Linux防火墙配置及iptables与firewalld的使用解读

目录
  • 1 防火墙定义
  • 2 防火墙分类
  • 3 iptables
    • 3编程客栈.1 iptables 四表五链
      • 3.1.1 功能(表)
      • 3.1.2 链
      • 3.1.3 功能(表)中的链
    • 3.2 优先级
      • 3.3 iptables 命令的使用
        • 3.3.1 filter表
        • 3.3.2 nat表
    • 4 firewall相关配置使用
      • 总结

        1 防火墙定义

        • 防火墙是一种高级访问控制设备,置于不同网络安全域之间,他通过相关的安全策略来控制(允许,拒绝,监视,记录)进出网络的访问行为。
        • 防火墙是一组规则,当数据包进出受保护的网络区域时,进出内容(特别是编程客栈关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。

        2 防火墙分类

        • 硬件防火墙
        • 软件防火墙
        • 主机防火墙
        • 网络防火墙

        3 iptables

        3.1 iptables 四表五链

        3.1.1 功能(表)

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

        3.1.2 链

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

        Linux防火墙配置及iptables与firewalld的使用解读

        3.1.3 功能(表)中的链

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

        3.2 优先级

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

        3.3 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:指定网卡

        3.3.1 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
        
        #只允许10.159.32.65访问本地80端口
        
        iptables -I INPUT -p TCP --dport 80 -j DROP     //拒绝所有机器访问
        iptables -I INPUT -s 10.159.32.65-p TCP --dport 80 -j ACCEPT       //对某个ip放行
        
        或
        
        iptables -P INPUT  -j DROP     //设置INPUT链的默认规则
        iptables -I INPUT -s 10.159.32.65-p TCP --dport 80 -j A编程客栈CCEPT       //对某个ip放行

        3.3.2 nat表

        ##开启转发模式
        
        ╭─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:9javascript999

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

        总结

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新运维

        运维排行榜