Linux学习笔记11:防火墙与selinux


前言

要适度的往前看的同时按部就班的处理眼下的事物,这点至为关键,无论做什么。


一、 iptables用户态防火墙管理工具

iptables 是用户态的防火墙管理工具,netfilter是内核态真正生成安全规则的框架,主要就是五链四表。
在这里插入图片描述

  • PREROUTING:raw/mangle/nat
  • INPUT:mangle/filter/nat
  • OUTPUT:raw/mangle/nat/filter
  • POSTROUTING:mangle/nat
  • FORWARD:mangle/filter

规则组成:

匹配条件

​ 基本匹配条件

​ 扩展匹配条件

动作

二、iptables常用参数

​ -t:指定表名,如果不写默认针对filter表

​ -L: 指定链名

​ -v:显示详细信息

​ -x:展开数字

  • 查看规则t

​ iptables -t 表名 -vxL 链名

​ 每个字段的解释
​ policy:当前链的默认策略,当所有规则都没有匹配成功时执行的策略
​ packets:当前链默认策略匹配到的包的数量
​ bytes:当前链默认策略匹配到的包的大小

​ pkts:对应规则匹配到的包数量
​ bytes:对应规则匹配到的包大小
​ target:对应规则执行的动作
​ prot:对应的协议,是否针对某些协议应用此规则
​ opt:规则对应的选项
​ in:数据包由哪个接口流入
​ out:数据包由哪个接口流出
​ source:源ip地址
​ distination:目的ip地址

  • 清空规则F

​ iptables -t 表名 -F 链名

  • 增加规则A

​ iptables -t 表名 -A 链名 (-s ip)匹配条件 -j 执行动作

  • 删除规则D

​ iptables -t 表名 -D 链名 编号(根据编号

​ iptables -t 表名 -D 链名 匹配条件 执行动作(根据匹配条件 执行动作

  • 修改规则R

​ iptables -t 表名 -R链名 被修改的规则编号 新的匹配条件 新的执行动作

  • 修改链的默认规则P

​ iptables -t 表名 -P 链名

  • 自定义链的使用

​ 创建自定义链

​ iptables -t 表名 -N 自定义链名

​ 引用自定义链

​ iptables -t 表名 -I 链名 匹配条件 -j 自定义链名

​ 创建自定义链的规则

​ iptables -t 表名 -A 自定义链名 匹配条件 -j 执行动作

  • 删除一个自定义链

​ 清空自定义链的规则

​ iptables -F 自定义链名

​ 删除引用链的规则

​ 删除链

​ iptables -X 自定义链名

例1:阻止指定IP地址

[root@server1 ~]#BLOCK_THIS_IP="x.x.x.x"
[root@server1 ~]#iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

例2:允许http和https的连接请求

[root@server1 ~]#iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@server1 ~]#iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

[root@server1 ~]#iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@server1 ~]#iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

NAT案例

  1. 准备两台机器,server1有两块网卡(一块NAT,一块仅主机),server2有一块仅主机网卡
  2. server2的仅主机网卡需要将网关指定为server1,可以达到的效果是在server2能ping通server1的两块网卡
  3. 在server1上先清空规则iptables -t nat -F POSTROUTING,清空完成之后是做SNAT,达到效果是能ping通114.114.114.114
[root@server1 ~]#iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -j SNAT --to-source 192.168.65.131
###SNAT原地址转换

[root@server1 ~]# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -j MASQUERADE
####MASQUERADE自动转换
  1. 在server1上做DNAT,达到的效果是使用xshell SSH连接server1的8822端口,能够成功登录上server2
[root@server1 ~]# iptables -t nat -A PREROUTING -p tcp --dport 8822 -j DNAT --to-destination 172.16.10.128:22
###DNAT 目的地址转换

三、firewalld防火墙常用命令

systemctl status firewalld.service		查看防火墙

systemctl stop/disable firewalld		停用(临时/永久)防火墙

systemctl restart firewalld		重启防火墙

firewall-cmd --list-all		查询所有firewall规则

firewall-cmd --add-port --permanent		放行端口号

firewall-cmd --add-service --permanent		放行服务

firewall-cmd --remove-port --permanent		拒绝端口号

firewall-cmd --remove-service --permanent		拒绝服务

firewall-cmd --reload		重载防火墙

firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址> 		把原本访问本机端口的流量转发到目标端口,长期均有效

四、SELinux安全子系统

selinux是内部安全子系统,用于限制内部进程的规则,通常将其关闭,原因是selinux的规则太多太复杂

getenforce 可以查看selinux状态

setenforce 可以临时设置selinux状态, 0代表关闭,1代表开启

永久修改selinux状态需要在 /etc/selinux/config 修改

SELinux服务有三种配置模式,具体如下。

  • enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
  • permissive:遇到服务越权访问时,只发出警告而不强制拦截。
  • disabled:对于越权的行为不警告也不拦截。

总结

以上就是今天总结的内容,本文仅仅简单介绍了防火墙的管理以及selinux。感兴趣的小伙伴可以再多多阅读其他的详细博客进行进一步学习。


版权声明:本文为mminions原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。