防火墙

linux 不同的程序对外提供了不同的服务,以端口的形式.
netfilter (linux的防火墙) 以iptables为规则来检查进出是否可以与内部服务通讯.

netfilter

netfilter是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集.
netfilter是LINUX内核的一个通用架构,它提供一系统列的表(table),每个表由若干链(chains)组成,而每条链中可吧有一条或数条规则(rule).
netfilter功能强大,支持L2,L3,L4层的包过滤,数据包修改,NAT,转发策略和拦截策略等.而且你还可以自已写模块(module)实现很多其它的功能,比如xt_limit module能够实现简单的流量控件功能.**

在centos7.1之前也就是system v下 netfilter规则表的文件写在/etc/system/ipconfig.
在centos7.1之后也就是systemd下, netfilter规则表写在/etc/sysconfig/iptables-config.

修改规则表主要有哪些工具软件

规则的实际文件是 /etc/sysconfig/iptables-config.
可以手工操作此文件.
但规则文件源文件语法比较复杂,并且人为很容易改错.所以有很多工具软件来修改规则文件.ufw和firewalld主要为了解决单个的问题.构建全方面的网络解决方案通常需要iptables.2014年出现了iptables的替代品nftables(nft命令行工具).目前iptables依然使用很广泛.

现在其实centos上主要用firewall-cmd.

启动停止

查看防火状态

  1. systemctl status firewalld

显示结果

  1. firewalld.service - firewalld - dynamic firewall daemon
  2. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  3. Active: inactive (dead)
  4. Docs: man:firewalld(1)

出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。

开启防火墙

  1. systemctl start firewalld
  2. (/etc/init.d/iptables start 或者 service iptables start

暂时关闭防火墙

  1. systemctl stop firewalld
  2. (service iptables stop 或者 /etc/init.d/iptables stop)

3:开机关闭防火墙

  1. (chkconfig iptables off)
  1. 开机启动防火墙
    1. systemctl enable firewalld
    2. (service iptables restart 或者 /etc/init.d/iptables restart)
  2. 重启防火墙
    ···
    systemctl restart firewalld
    ···
iptables的使用方法

iptables是一种管理内核包的过滤包工具,在用户空间运行,它使插入,修改,除去信息包过滤表中的规则变得很容易.然后执行是由netfilter程序来执行.

iptables是一步步发展起来的,以前它不叫这个名字.

  1. Linux2.4.x and 2.6x Iptables
  2. Linux2.2x Ipchains
  3. linux 2.0.x Ipfwadm

要封停一个IP

  1. iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP

  1. iptables -D input -s ***.***.***.*** -j drop

查看IP规则表(验证一下是否规则都已经生效

  1. iptables -L
  2. iptables --list
  3. iptables -L
  4. Chain INPUT (policy ACCEPT)
  5. target prot opt source destination
  6. Chain FORWARD (policy ACCEPT)
  7. target prot opt source destination
  8. Chain OUTPUT (policy ACCEPT)
  9. target prot opt source destination
  10. 封装IP
  11. iptables -I INPUT -s 121.0.0.0/8 -j DROP

firewalld-cmd

firewalld-cmd 存放在/usr/bin/firewalld-cmd下.
打开文件第一行是#!/usr/bin/python -Es,说明firewalld-cm是用phthon写的脚本.

操作的命令分别是
查看版本: firewall-cmd —version
查看帮助: firewall-cmd —help
显示状态: firewall-cmd —state

查看所有打开的端口 firewall-cmd —list-all

查看区域信息: firewall-cmd —get-active-zones
查看指定接口所属区域: firewall-cmd —get-zone-of-interface=eth0
拒绝所有包:firewall-cmd —panic-on
取消拒绝状态: firewall-cmd —panic-off
查看是否拒绝: firewall-cmd —query-panic

添加
firewall-cmd —zone=public —add-port=80/tcp —permanent (—permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd —reload
查看
firewall-cmd —zone= public —query-port=80/tcp
删除
firewall-cmd —zone= public —remove-port=80/tcp —permanent