前言
要适度的往前看的同时按部就班的处理眼下的事物,这点至为关键,无论做什么。
一、 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案例
- 准备两台机器,server1有两块网卡(一块NAT,一块仅主机),server2有一块仅主机网卡
- server2的仅主机网卡需要将网关指定为server1,可以达到的效果是在server2能ping通server1的两块网卡
- 在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自动转换
- 在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。感兴趣的小伙伴可以再多多阅读其他的详细博客进行进一步学习。