Linux防火墙设置详解

1、介绍

在CentOS里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。

firewalld跟iptables比起来至少有两大好处:

1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。

2、firewalld

启动: systemctl start firewalld

查看状态: systemctl status firewalld 

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息:  firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

3、iptables

一直用的iptables来管理规则,iptables更熟悉一些。

linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。

  用户空间的iptables制定相应的规则策略控制内核空间的netfilter处理相应的数据访问控制。

     iptables有四表五链(其实有五表,是后来加进来的),四表分别是下图的的raw,mangle,nat,filter表。五链分别是PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING链。表有什么用?链又有什么用呢?其实表决定了数据报文处理的方式,而链则决定了数据报文的流经哪些位置。

    你可以从图中看出规则表的优先级:raw-->mangle-->nat-->filter。

wKioL1lH7uaimCIyAABOvTNqFYc093.png

5表:

wKiom1l65nKgFui_AABFeGNtpAk587.png

wKiom1l65tOQ8bdKAABnzYuun1Y634.png

命令结构: iptables [ -t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [ -j 目标动作或跳转 ]

不指定表名时默认是filter表,

wKioL1l8Yd2QEFI7AAA4OBtHvM8697.png

 -L, --list [chain]:列出规则;

-F:清除所有规则

 -v, --verbose:详细信息; 

 -vv 更详细的信息

 -n, --numeric:数字格式显示主机地址和端口号;

 -x, --exact:显示计数器的精确值,而非圆整后的数据;

 --line-numbers:列出规则时,显示其在链上的相应的编号;

-A, --append chain rule-specification:追加新规则于指定链的尾部; 

-I, --insert chain [rulenum] rule-specification:插入新规则于指定链的指定位置,默认为首部;

-D,删除一条规则

 

-p 指定规则协议,tcp udp icmp all

-s 指定数据包的源地址,ip hostname

-d 指定目的地址

-i 输入接口

-o 输出接口                                              

! 取反

 

多端口,一次不能超过15个

 iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT

 iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT

设置ip范围

   iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT

    iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT

设定过滤时间、对应用层数据进行正则过滤、限定速率、状态

规则设置实例

1.放行sshd服务

1

2

 iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.1 -p tcp --dport 22 -j ACCEPT

 iptables -t filter -A OUTPUT -s 192.168.0.1  -p tcp --sport 22 -j ACCEPT

  1.   2.放行httpd/nginx服务

1

2

 iptables -I OUTPUT -s 192.168.0.1 -p tcp --sport 80 -j ACCEPT

 iptables -I INPUT -d 192.168.0.1 -p tcp --dport 80 -j ACCEPT

  1.  

  2.  3.放行本机端的流入流出

1

2

3

  iptables -A  INPUT  -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT

  iptables -A  OUTPUT  -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT

  #不放行本机的流入与流出,访问本机的httpd服务,网页会出现Error establishing a database connection。

  1.  4.限制ping 192.168.0.1主机的数据包数,平均2/s个,最多不能超过3个

1

iptables -A INPUT -i ens33 -d 192.168.0.1 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT

 

 iptables -D INPUT 2     根据规则编号来删除规则

禁ping:iptables -I INPUT -p icmp -j REJECT

 

 

 

 

参考链接:https://blog.51cto.com/xjsunjie/1902993

https://www.cnblogs.com/makeinchina/p/8032899.html

https://www.cnblogs.com/frankb/p/7427944.html

https://blog.51cto.com/xiaozhuang/874244

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值