【Linux安全管理】iptables配置与iptables基本用法

目录

一、服务的启动与关闭命令

二、iptables介绍

1、防火墙分类

2、iptables的启动

① 在开机时禁用firewalld服务:

 ②安装iptables-services

③将它设置为开机自启

3、iptables 四表五链详解

 表和链的关系​编辑

 不是所有的表都附着在同一条链上​编辑

4、iptables基本用法

匹配条件 

 处理动作

 iptables常用的选项​编辑

 iptables常用规则匹配​编辑

iptables配置

基本匹配条件总结

扩展匹配条件总结

(补充)selinux

1、工作模式

2、如何禁用


一、服务的启动与关闭命令

  • 启动服务:systemctl start service
  • 关闭服务:systemctl stop service
  • 重启服务:systemctl restart service
  • 显示服务的状态:systemctl status service
  • 在开机时启用服务:systemctl enable service
  • 在开机时禁用服务:systemctl disable service
  • 查看服务是否开机启动:systemctl is-enabled service
  • 查看已启动的服务列表:systemctl list-unit-files|grep enabled
  • 查看启动失败的服务列表:systemctl --failed

二、iptables介绍

1、防火墙分类

①从逻辑上

  ②从物理上【Linux安全管理】iptables配置与iptables基本用法_第1张图片

        iptables 并不是真正意义上的防火墙,我们可以理解为一个客户端工具,用户通过 ipatbles 这个客户端,将用户的安全设定执行到对应的"安全框架”中,这个"安全框架"才是真正的防火墙,这个框架的名字叫 netfilter .iptables 是一个命令行工具,位于用户空间,通过这个命令行工具来操作 netfilter



         netfilter 才是防火墙真正的安全框架, netfilter 位于内核空间。

         netfilter / iptables (简称为 iptables )组成 Linux 平台下的包过滤防火墙,与大多数的 Linux 软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换( NAT )等功能。

【Linux安全管理】iptables配置与iptables基本用法_第2张图片

2、iptables的启动

① 在开机时禁用firewalld服务:

[root@localhost ~]# systemctl disable firewalld【Linux安全管理】iptables配置与iptables基本用法_第3张图片

 ②安装iptables-services

[root@localhost ~]# yum install iptables-services -y

【Linux安全管理】iptables配置与iptables基本用法_第4张图片

③将它设置为开机自启

安装以后查看服务状态显示未启动,可以将它设置为开机自启

[root@localhost ~]# systemctl enable iptables

【Linux安全管理】iptables配置与iptables基本用法_第5张图片

3、iptables 四表五链详解

        防火墙是按照规则办事的,我们就来说说规则( rules ),规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如 TCP 、 UDP 、 ICMP )和服务类型(如 HTTP 、 FTP 和 SMTP )等。当数据包与规则匹配时, iptables 就根据规则所定义的方法来处理这些数据包,如放行( accept )、拒绝( reject )和丢弃( drop )等。配置防火墙的主要工作就是加、修改和删除这些规则。

        当客户端访问服务器的 web 服务时,客户端发送报文到网卡,而 tcp / ip 协议栈是属于内核的一部分,所以,客户端的信息会通过内核的 TCP 协议传输到用户空间中的 web 服务中,而此时,客户端报文的目标终点为 web 服务所监听的套接字( IP : Port )上,当 web 服务需要响应客户端请求时, web 服务发出的响应报文的目标终点则为客户端,这个时候, web 服务所监听的 IP 与端口反而变成了原点,我们说过, netfilter 才是真正的防火墙,它是内核的一部分,所以,如果我们想要防火墙能够达到"防火"的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了 input 关卡和 output 关卡,而这些关卡在 iptables 中不被称为"关卡”,而被称为“链”。   【Linux安全管理】iptables配置与iptables基本用法_第6张图片

        这只是一个简单的描述,除过这两个关卡以外,我们还有其他关卡,也就是其他链,他们就是“路由前"、“转发”、“路由后”,对应英文表示为 PREROUTING 、 FORWARD 、POSTROUTING . 

【Linux安全管理】iptables配置与iptables基本用法_第7张图片

报文的流向:

  • 到本机某进程的报文: PREROUTING > INPUT
  • 由本机转发的报文: PREROUTING > FORWARD > POSTROUTING
  • 由本机的某进程发出报文(通常为响应报文): OUTPUT > POSTROUTING 

        防火墙的作用就在于对经过的报文匹配”规则",然后执行对应的”动作",所以,当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了“链”,所以,我们把每一个"关卡”想象成如下图中的模样,这样来说,把他们称为“链”更为合适,每个经过这个"关卡”的报文,都要将这条”链”上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作。

【Linux安全管理】iptables配置与iptables基本用法_第8张图片


        我们把具有相同功能的规则的集合叫做"表”,不同的规则放置于不同的表中工作,在 iptables 中定义了四种表,每种表对应不同的功能。【Linux安全管理】iptables配置与iptables基本用法_第9张图片


 表和链的关系【Linux安全管理】iptables配置与iptables基本用法_第10张图片


 不是所有的表都附着在同一条链上【Linux安全管理】iptables配置与iptables基本用法_第11张图片

 iptables 为我们定义了4张”表",当他们处于同一条”链”时,执行的优先级如下。

优先级次序(由高而低): raw -> mangle -> nat --> filter 


来看一个完整的图来了解在数据传输过程中,防火墙的表和链的功能体现

【Linux安全管理】iptables配置与iptables基本用法_第12张图片

4、iptables基本用法

        在上述描述中我们一直在提规则,可是没有细说,现在说说它。先说说规则的概念,然后再通俗的解释它
        规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理。
        在这里我们提到了两个概念,第一个匹配条件,第二个处理动作,我们通过这两个概念来解释一下什么是iptables的规则。
        在上面讲解中我们提到了每一条”链"都是一个关卡,凡是要通过这个关卡就需要匹配这个关卡上面的规则,根据配规则来决定处理动作。
        举个例子:大家都玩游戏,有一些关卡类游戏,就需要你完成了一些相应的任务,在通过关卡的时候才会通过,到下一个关卡,否则不能到下一个关卡。那么要想通过关卡就需要满足完成任务的"规则”,"完成任务就是一个匹配条件,完成之后就可以通过到下一个关卡,"通过"就是一个处理动作,匹配条件加上处理动作共同组成了规则。


匹配条件 

【Linux安全管理】iptables配置与iptables基本用法_第13张图片


 处理动作

【Linux安全管理】iptables配置与iptables基本用法_第14张图片


 iptables常用的选项【Linux安全管理】iptables配置与iptables基本用法_第15张图片

         -t               指定表

         -j                处理动作 指定处理动作

         --line-numbers   显示规则的序号

          -v               显示详细信息


 iptables常用规则匹配【Linux安全管理】iptables配置与iptables基本用法_第16张图片


iptables配置

清理原有规则:
# iptables -F(临时清除)
# iptables -nvL

增加规则
 # iptables -t filter -I INPUT -s 192.168.100.134 -j DROP

修改(替换)规则 
# iptables -t filter -R INPUT 1 -s 192.168.100.134 -j ACCEPT
(替换规则一定要指明是第几条规则,替换规则未指定唯一地址)

删除规则
第一种 # iptables -D INPUT 1  
(按照规则号删除)
第二种 # iptables -D INPU -s 192.168.100.134 -j ACCEPT
(按照匹配规则删除)

保存规则 centos6 或者是7上禁用firewalld 安装iptables-services后
# service iptables save

保存的文件
/etc/sysconfig/iptables 
# iptables-save > /etc/sysconfig/iptables
(这个命令保存规则到其他文件(除了/etc/sysconfig/iptables)可以通过iptables-restore恢复回来)


恢复规则
# iptables-restore < /etc/sysconfig/iptables

修改链的默认策略 慎重使用 可以采用别的方式实现白名单
# iptables -P INPUT DROP
(设置了DROP后ssh就不能连接了)

       iptables执行规则时,是从从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作 (accept, reject, log等),决定下一步执行的情况。

        先规定表(-t)再用选项给哪一条链制定规则,再用-s/-d匹配源地址/目标地址,再用选项设置处理动作。

        我们在添加iptables规则的时候,一般会同时使用协议类型(-p)和端口号(-dport/sport。只有这样添加的规则,iptables才会知道,我们要对哪个应用程序的通讯进行放行或者禁行的操作。

        如果不指定协议,则默认为所有协议。


基本匹配条件总结

#匹配源地址
# iptables -t filter -I INPUT -s 192.168.100.142 -j REJECT
# iptables -t filter -I INPUT -s 192.168.100.142,192.168.100.143 -j DROP
(指定多个地址源时每个IP用逗号隔开)
# iptables -t filter -I INPUT -s 192.168.100.0/24 -j DROP
(指定一个网段)
# iptables -t filter -I INPUT ! -s 192.168.100.0/24 -j DROP
(指定除了这个网段的数据包,其他IP的数据包均丢弃)

#匹配目标地址
# iptables -t filter -I OUTPUT -d 192.168.100.142 -j REJECT
# iptables -t filter -I INPUT -d 192.168.100.142,192.168.100.143 -j DROP
# iptables -t filter -I INPUT -d 192.168.100.0/24 -j DROP
# iptables -t filter -I INPUT ! -d 192.168.100.0/24 -j DROP
#匹配协议
# iptables -t filter -I INPUT -p tcp -d 192.168.100.142 -j REJECT
# iptables -t filter -I INPUT -p udp -d 192.168.100.142,192.168.100.143 -j DROP
# iptables -t filter -I INPUT -p tcmp -d 192.168.100.0/24 -j DROP
(匹配端口时一定要加协议)

#匹配入口网卡
# iptables -t filter -I INPUT -p tcp -i ens33 -j REJECT
# iptables -t filter -I INPUT -p tcp -i eth0 -j REJECT

扩展匹配条件总结

(-p指定协议 -m表明它是是扩展协议)
-p tcp -m tcp --sport 可以指定一个,或者用冒号指定连续端口
-p tcp -m tcp --dport 可以指定一个,或者用冒号指定连续端口
-p tcp -m multiport --sport 可以指定离散端口,用逗号分隔
-p tcp -m multiport --dport 可以指定离散端口,用逗号分隔
# iptables -t filter -I INPUT -s 192.168.100.142 -p tcp -m tcp --dport 22 -j REJECT

# iptables -t filter -I INPUT -d 192.168.100.142 -p tcp -m tcp --sport 22:80 -j REJECT
(拒绝连续端口)

# iptables -t filter -I INPUT -d 192.168.100.142 -p tcp -m tcp --sport 22: -j REJECT
(指定从22开始的连续端口)

# iptables -t filter -I INPUT -d 192.168.100.142 -p tcp -m tcp --sport :80 -j REJECT
(指定到80结束的连续端口)

# iptables -t filter -I INPUT -d 192.168.100.142 -p tcp -m tcp ! --sport 22:80 -j REJECT

# iptables -t filter -I INPUT -s 192.168.100.142 -p tcp -m multiport --dport 22,80 -j REJECT
(拒绝离散端口)

# iptables -t filter -I INPUT -d 192.168.100.142 -p tcp -m multiport --sport
22,80 -j REJECT

(补充)selinux

SELinux诞生的初衷是防止权限和资源的滥用

1、工作模式

SELinux 有三种工作模式,分别是:

  1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
  2. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
  3. disabled:关闭 SELinux。

        SELinux 工作模式可以在 /etc/sysconfig/selinux 中设定。

        如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。

        enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。

        需要注意的是,如果系统已经在关闭 SELinux 的状态下运行了一段时间,在打开 SELinux 之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文。

        一般会禁用selinux,因为可能出现莫名其妙的报错

2、如何禁用

1、编写 /etc/sysconfig/selinux文件

[root@localhost ~]# vi /etc/sysconfig/selinux

将高亮显示改为disabled

【Linux安全管理】iptables配置与iptables基本用法_第17张图片

2、重启虚拟机,查看现在的状态

 
 

你可能感兴趣的:(Linux安全管理,linux,服务器,运维)