大数据教程(2.6):Linux防火墙配置详解

天涯浪子 提交于 2020-01-09 14:43:29

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

    我们从事IT的部分人员中,经常会与Linux系统打交道,而Linux中有一个非常重要的包过滤工具,它就是防火墙。大多数人员可能对这块知识不甚了解,亦或是只知道其中一些简单的配置。本节博主将为大家简单的讲述防火墙相关的知识,帮助小白们快速的配置Linux防火墙技术iptables。

    Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。

   

一、iptables中的“四表五链”及“堵通策略”

A.“四表”是指,iptables的功能——filter, nat, mangle, raw.

    filter, 控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路有input, forward, output

    nat, 控制数据包中地址转换,可以控制的链路有prerouting, input, output, postrouting

    mangle,修改数据包中的原数据,可以控制的链路有prerouting, input, forward, output, postrouting

    raw,控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting, output

    注:在centos7中,还有security表,不过这里不作介绍

 

B.“五链”是指内核中控制网络的NetFilter定义的五个规则链,分别为

    PREROUTING, 路由前

    INPUT, 数据包流入口

    FORWARD, 转发关卡

    OUTPUT, 数据包出口

    POSTROUTING, 路由后

C.“堵通策略”是指对数据包所做的操作,一般有两种操作——“通(ACCEPT)”、“堵(DROP)”,还有一种操作很常见REJECT(此种配置有可能会暴露服务器的存在). 

    谈谈REJECT和DROP之间的区别,Jack写了一封信,向Rose示爱。Rose如果不愿意接受,她可以不回应Jack,这个时候Ming不确定Rose是否接到了信;Rose也可以同样写一封信,在信中明确地拒绝Jack。前一种操作就如同执行了DROP操作,而后一种操作就如同REJECT操作。

 

二、常用iptables防火墙配置

#查看帮助
iptables -h
man iptables

列出iptables规则
iptables -L -n
列出iptables规则并显示规则编号
iptables -L -n --line-numbers

列出iptables nat表规则(默认是filter表)
iptables -L -n -t nat

清除默认规则(注意默认是filter表,如果对nat表操作要加-t nat)
#清除所有规则
iptables -F 

查看iptables状态
service iptables status

开启/关闭iptables
service iptables start
service iptables stop

查看iptables是否开机启动
chkconfig iptables --list

设置iptables开机启动/不启动
chkconfig iptables on
chkconfig iptables off

#重启iptables发现规则依然存在,因为没有保存
service iptables restart

#保存配置
service iptables save
/etc/rc.d/init.d/iptables save


#禁止ssh登陆(若果服务器在机房,一定要小心)
iptables -A INPUT -p tcp --dport 22 -j DROP
#删除规则
iptables -D INPUT -p tcp --dport 22 -j DROP

-A, --append chain    追加到规则的最后一条
-D, --delete chain [rulenum]    Delete rule rulenum (1 = first) from chain
-I, --insert chain [rulenum]    Insert in chain as rulenum (default 1=first) 添加到规则的第一条
-p, --proto  proto    protocol: by number or name, eg. 'tcp',常用协议有tcp、udp、icmp、all
-j, --jump target 常见的行为有ACCEPT、DROP和REJECT三种,但一般不用REJECT,会带来安全隐患

注意:INPUT和DROP这样的关键字需要大写

#禁止192.168.33.0网段从eth0网卡接入
iptables -A INPUT -p tcp -i eth0 -s 192.168.33.0 -j DROP
iptables -A INPUT -p tcp --dport 22 -i eth0 -s 192.168.33.61  -j ACCEPT

#禁止ip地址非192.168.10.10的所有类型数据接入
iptables -A INPUT ! -s 192.168.10.10 -j DROP

#禁止ip地址非192.168.10.10的ping请求
iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.50.100 -j DROP

#扩展匹配:1.隐式扩展 2.显示扩展
    #隐式扩展
    -p tcp
        --sport PORT 源端口
        --dport PORT 目标端口

    #显示扩展:使用额外的匹配规则
    -m EXTENSTION --SUB-OPT
    -p tcp --dport 22 与 -p tcp -m tcp --dport 22功能相同

    state:状态扩展,接口ip_contrack追踪会话状态
        NEW:新的连接请求
        ESTABLISHED:已建立的连接请求
        INVALID:非法连接
        RELATED:相关联的连接
    

#匹配端口范围
iptables -I INPUT -p tcp --dport 22:80 -j DROP

#匹配多个端口
iptables -I INPUT -p tcp -m multiport --dport 22,80,3306 -j ACCEPT

#不允许源端口为80的数据流出
iptables -I OUTPUT -p tcp --sport 80 -j DROP


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!