首页 > 系统相关 >Linux系统配置(防火墙)

Linux系统配置(防火墙)

时间:2022-09-07 16:58:51浏览次数:56  
标签:iptables -- 规则 防火墙 Linux INPUT 数据包 系统配置

前言
linux系统服务器如果作为网关服务器或网络服务器来使用时,配置规划防火墙能够很好的为服务器提供安全保障,Linux系统的RHEL7系列之前默认是通过iptables管理防火墙,现在的新版本都是默认通过firewalld管理防火墙,管理防火墙的工具有很多种,选其中一款即可

一、iptables
1、策略表
(1)filter表
filter表用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包,filter表对应的内核模块为iptable_filter,表内包含三个链,即INPUT、FORWARD、 OUTPUT,在使用iptables配置防火墙时如果不指定表就是默认的filter表

(2)nat表
nat(Network Address Translation,网络地址转换)表主要用来修改数据包的IP地址、端口号等信息,nat表对应的内核模块为iptable_nat,表内包含三个链,即PREROUTING、POSTROUTING、OUTPUT

(3)mangle表
mangle表用来修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期),或者为数据包设置Mark标记,以实现流量整形、策略路由等高级应用,mangle表对应的内核模块为iptable_mangle,表内包含五个链,即PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

(4)raw表
raw表是自1.2.9以后版本的iptables新增的表,主要用来决定是否对数据包进行状态跟踪,raw表对应的内核模块为iptable_raw,表内包含两个链,即OUTPUT、PREROUTING

2、规则链
(1)INPUT链
当收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则,OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则

(2)FORWARD链
当接收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则

(3)PREROUTING链
在对数据包做路由选择之前,应用此链中的规则

(4)POSTROUTING链
在对数据包做路由选择之后,应用此链中的规则

其中,INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而 FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙” 中,如使用Linux防火墙作为网关服务器,在公司内网与Internet之间进行安全控制

3、数据流向
当数据包抵达防火墙时,将依次应用raw表、mangle表、nat表和filter表中对应链内的规则(如果存在),应用顺序为raw - mangle - nat - filter

(1)入站数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断该数据包应发往何处);如果数据包的目标地址是防火墙本机(如Internet用户访问网关的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应

(2)转发数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后再进行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发或拦截、丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理

(3)出站数据流向
防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网 DNS服务时),首先进行路由选择,确定了输出路径后,再经由OUTPUT链处理,最后再交给POSTROUTING链(是否修改数据包的地址等)进行处理

二、配置
1、安装
yum -y install iptables 安装
systemctl start iptables 运行
systemctl enable iptables 设置开机自启
2、命令参数
iptables[-t 表名]管理选项[链名][匹配条件][-j 控制类型]
-A 在规则链的末尾加入新规则
-I 数字 在规则链的头部加入新规则
-D 数字 删除某一条规则
-L 查看规则链
-F 清空规则链
-P 设置默认策略
-s 匹配源地址
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
--dport 数字 匹配目标端口号
--sport 数字 匹配来源端口号
-t 指定表,默认的表为filter
3、控制类型
ACCEPT 规则验证通过,不再检查当前链的后续规则,直接跳到下一个规则链
DROP 直接丢弃数据包,不给任何回应
REJECT 拒绝数据包通过,会返回响应信息
SNAT 源地址转换
DNAT 目标地址转换
4、常用配置
iptables -L --line-number 查看带有数字编号的防火墙规则
把INPUT规则链的默认策略设置为拒绝(INPUT规则没有允许的都将被拒绝连接,如果是通过ssh连接配置的话要先将ssh加入到INPUT规则里并设置ssh连接为ACCEPT)
iptables -P INPUT DROP
允许多个目标端口通过tcp连接访问本机服务器
iptables -A INPUT -p tcp -m multiport --dport 20,21,22 -j ACCEPT
iptables -A INPUT -p tcp --dport 20:22 -j ACCEPT
设置为只允许指定网段的主机访问本机的22端口
iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 22 -j ACCEPT
设置为允许范围ip的主机访问本机的22端口(--src-range为源ip范围,--dst-range为目标ip范围)
iptables -A INPUT -p tcp -m iprange --src-range 192.168.10.1-192.168.10.10 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m iprange --dst-range 192.168.10.1-192.168.10.10 --dport 22 -j ACCEPT
允许某个mac地址访问22端口
iptables -A INPUT -p tcp -m mac mac-source mac地址 --dport 22 -j ACCEPT
防止syn攻击(限制单个ip的最大syn连接数)
iptables –A INPUT –p tcp --syn -m connlimit --connlimit-above 15 -j DROP
防止ping攻击
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
只允许自己ping别人,不允许别人ping自己
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
以上配置INPUT规则链的默认策略为拒绝
5、nat转换
启用IP路由转发功能
vi /etc/sysctl.conf 然后在文件内容里添加添加 net.ipv4.ip_forward = 1
最后使用sysctl -p命令启用路由转发功能
内网用户通过一个外网口上网,内网的地址转换为一个外网的IP以此来访问外网
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 20.20.20.20
外网地址不固定,可将外网地址转换方式换成MASQUERADE(动态伪装),它可以实现自动读取外网网卡的IP地址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
设置允许某外网ip访问内网ip对应端口
iptables -t nat -A PREROUTING -d 20.20.20.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.200
结语
如果让防火墙策略永久有效,可使用iptables-save命令或service iptables save命令,使用iptables防火墙需要使用systemctl stop firewalld和systemctl disable firewalld命令关闭firewalld防火墙,也可关闭核心防护,vi /etc/selinux/config然后修改为SELINUX=disabled,再使用命令setenforce 0关闭
————————————————
版权声明:本文为CSDN博主「1风天云月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/le616616/article/details/122831198

标签:iptables,--,规则,防火墙,Linux,INPUT,数据包,系统配置
From: https://www.cnblogs.com/tingtaishou/p/16666385.html

相关文章

  • Linux 下 tar 打包命令详细教程
    转:Linux下tar打包命令详细教程 1.打包:选项“-cvf”一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用“.tar”作为扩展名。打包目录也是如此:......
  • LFS(Linux From Scratch)构建过程全记录(三):准备并下载所需的软件包
    写在前面本文将记录构建LFS的过程中,下载软件包的全过程 准备下载的地址我们需要创建一个文件夹,地址为$LFS/sources,用于保存对应的源码输入的指令如下:sudomkdir-v......
  • Linux 配置 jdk 环境变量
    本文是为了自己学习记录的,有参考各路大神在安装之前,查看当前Linux系统是否已经安装java,输入rpm-qa|grepjava卸载两个openJDK输入rpm-e--nodeps要卸载的软件......
  • linux环境配置 (redis、jdk、nginx、mysql)
    linux环境配置环境准备服务器:腾讯云服务器操作系统:centos8.0终端控制器:finalshell3.9.34redis7.0.4jdk1.8.0nginx-1.21.3mysql8.0.30redis安装创建或选......
  • Linux系统启动流程
    开机启动流程图1.开机自检 电脑通电之后,首先加载BIOS(basicinputoutputsystem,基本输入输出系统)。而BIOS程序首先检查计算机能否满足运行的基本条件,这个叫做“硬件自......
  • 在Linux服务器上装个kali
     在Linux服务器上装个kali 微信公众号:小惜渗透,欢迎大佬一起交流进步  0x01  前几天练习的时候突然想用beef,而我们在本地搭建beef还需要内网映射,所以就......
  • LINUX系统中查询Oracle数据库的归档日志目录
    注:查询Linux系统中Oracle数据库的归档日志方法,不同的安装目录使用不同的方法,一下有两种方式,其中一种是我目前使用的数据库未查到归档才换的第二种方式。-----方式一:查询数......
  • LINUX服务器重启Oracle数据库命令
    ---关闭数据库的命令:用oracle用户名和密码登录Oracle数据库后,su -oracle   ---切换成oracle用户登录;sqlplus /nolog ---切换至sqlplus控制台;conn  /as ......
  • Linux 静态库、动态库
    静态库静态库本质就是一个.o文件,命名为libxxx.a创建静态库:gcc-cadd.c#默认生成add.o文件gcc-c-olibadd.aadd.c#这就是标准的静态库文件arrcslibfu......
  • linux内核
    Linux系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是Linux操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程......