• linux防火墙学习


    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
    语法:

    iptables(选项)(参数)
    1,命令选项
    -t<表>:指定要操纵的表;
    -A:向规则链中添加规则;
    -D:从规则链中删除规则;
    -i:向规则链中插入规则;
    -R:替换规则链中的规则;
    -L:显示规则链中已有的规则;
    -F:清除规则链中已有的规则;
    -Z:清空规则链中的数据包计算器和字节计数器;
    -N:创建新的用户自定义规则链;
    -P:定义规则链中的默认目标;
    -h:显示帮助信息;
    2,匹配条件

    • 隐含匹配

    -p:指定要匹配的数据包协议类型;
    -s:指定要匹配的数据包源ip地址;
    -d:目的地址
    -sport:指定源端口
    -dport:指定目标端口
    -j<目标>:指定要跳转的目标;
    -i<网络接口>:指定数据包进入本机的网络接口;
    -o<网络接口>:指定数据包要离开本机所使用的网络接口。

    • 扩展匹配

    -m state --state 匹配状态的
    -m mutiport --source-port 端口匹配 ,指定一组端口
    -m limit --limit 3/minute 每三分种一次
    -m limit --limit-burst 5 只匹配5个数据包
    -m string --string --algo bm|kmp --string"xxxx" 匹配字符串
    -mtime--timestart 8:00 --timestop 12:00 表示从哪个时间到哪个时间段
    -mtime--days 表示那天
    -m mac --mac-sourcexx:xx:xx:xx:xx:xx 匹配源MAC地址
    -m layer7 --l7proto qq 表示匹配腾讯qq的 当然也支持很多协议,这个默认是没有的,需要我们给内核打补丁并重新编译内核及iptables才可以使用 -m layer7 这个显示扩展匹配
    3,动作
    DROP 直接丢掉
    ACCEPT 允许通过
    REJECT 丢掉,但是回复信息
    LOG --log-prefix"说明信息,自己随便定义" ,记录日志
    SNAT 源地址转换
    DNAT 目标地址转换
    REDIRECT 重定向
    MASQUERAED 地址伪装

    iptables命令选项输入顺序:
    iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

    表名包括:
    raw:高级功能,如:网址过滤。
    mangle:数据包修改(QOS),用于实现服务质量。
    net:地址转换,用于网关路由器。
    filter:包过滤,用于防火墙规则。

    规则链名包括:
    INPUT链:处理输入数据包。
    OUTPUT链:处理输出数据包。
    PORWARD链:处理转发数据包。
    PREROUTING链:用于目标地址转换(DNAT)。
    POSTOUTING链:用于源地址转换(SNAT)。

    清除已有iptables规则
    iptables -F
    iptables -X
    iptables -Z

    开放指定的端口
    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT   #允许本地回环接口(即运行本机访问本机)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   #允许已建立的或相关连的通行
    iptables -A OUTPUT -j ACCEPT   #允许所有本机向外的访问
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT   #允许访问22端口
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT   #允许访问80端口
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT   #允许ftp服务的21端口
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT   #允许FTP服务的20端口
    iptables -A INPUT -j reject   #禁止其他未允许的规则访问
    iptables -A FORWARD -j REJECT   #禁止其他未允许的规则访问

    允许icmp包通过,也就是允许ping:
    [root@localhost ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
    [root@localhost ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)

    将本机的8080端口转发至其他主机,主机IP:192.168.1.12,目标主机IP和端口:192.168.1.13:8088,规则如下;
    iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088
    iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.1.12

    将本机的80端口转发到8080端口:
    iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

    Linux防火墙 封ip:
    iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
    iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
    iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
    iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令
    单个IP的命令是
    iptables -I INPUT -s 211.1.0.0 -j DROP


    封IP段的命令是
    Iptables -A INPUT -s 180.178.1.0/24 -p tcp -m tcp --dport 80 -j DROP
    iptables -I INPUT -s 211.1.0.0/16 -j DROP
    iptables -I INPUT -s 211.2.0.0/16 -j DROP
    iptables -I INPUT -s 211.3.0.0/16 -j DROP


    封整个段的命令是
    iptables -I INPUT -s 211.0.0.0/8 -j DROP
    封几个段的命令是
    iptables -I INPUT -s 61.37.80.0/24 -j DROP
    iptables -I INPUT -s 61.37.81.0/24 -j DROP


    解封:
    iptables -L INPUT
    iptables -L --line-numbers 然后iptables -D INPUT 序号

    查看已添加的iptables规则
    iptables -L -n -v
    Chain INPUT (policy DROP 48106 packets, 2690K bytes)
    pkts bytes target prot opt in out source destination
    5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
    191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
    1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
    4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination
    Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
    pkts bytes target prot opt in out source destination
    5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0

    删除已添加的iptables规则
    将所有iptables以序号标记显示,执行:
    iptables -L -n --line-numbers
    比如要删除INPUT里序号为8的规则,执行:
    iptables -D INPUT 8

    iptables保存规则

    • # 保存iptables规则

    service iptables save
    /etc/init.d/iptables save

    • # 重启iptables服务

    service iptables stop
    service iptables start
    /etc/init.d/iptables start

    配置文件路径

    /etc/sysconfig/iptables

    firewalld:

    RHEL 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
    firewalld中常用的区域名称及策略规则:
    trusted:允许所有的数据包
    home:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
    internal:等同于home区域
    work:拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
    public:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
    external:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
    dmz:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
    block:拒绝流入的流量,除非与流出的流量相关
    drop:拒绝流入的流量,除非与流出的流量相关
    firewall-cmd命令中使用的参数以及作用:
    --get-default-zone:查询默认的区域名称
    --set-default-zone=<区域名称>:设置默认的区域,使其永久生效
    --get-zones:显示可用的区域
    --get-services:显示预先定义的服务
    --get-active-zones:显示当前正在使用的区域与网卡名称
    --add-source=:将源自此IP或子网的流量导向指定的区域
    --remove-source=:不再将源自此IP或子网的流量导向某个指定区域
    --add-interface=<    网卡名称>:将源自该网卡的所有流量都导向某个指定区域
    --change-interface=<网卡名称>:将某个网卡与区域进行关联
    --list-all:显示当前区域的网卡配置参数、资源、端口以及服务等信息
    --list-all-zones:显示所有区域的网卡配置参数、资源、端口以及服务等信息
    --add-service=<服务名>:设置默认区域允许该服务的流量
    --add-port=<端口号/协议>:设置默认区域允许该端口的流量
    --remove-service=<服务名>:设置默认区域不再允许该服务的流量
    --remove-port=<端口号/协议>:设置默认区域不再允许该端口的流量
    --reload:让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
    --panic-on:开启应急状况模式
    --panic-off:关闭应急状况模式
    与Linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙策略时添加--permanent参数,这样配置的防火墙策略就可以永久生效了。

    示例:

     

  • 相关阅读:
    软工实践个人总结
    第02组 Beta版本演示
    第02组 Beta冲刺(5/5)
    第02组 Beta冲刺(4/5)
    第02组 Beta冲刺(3/5)
    第02组 Beta冲刺(2/5)
    第02组 Beta冲刺(1/5)
    第02组 Alpha事后诸葛亮
    第02组 Alpha冲刺(6/6)
    第02组 Alpha冲刺(5/6)
  • 原文地址:https://www.cnblogs.com/zhangan/p/10910380.html
Copyright © 2020-2023  润新知