如何配置linux下的防火墙?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何配置linux下的防火墙?相关的知识,希望对你有一定的参考价值。

请说明具体详细一点!

配置linux下的防火墙的方法,可以通过以下步骤操作来实现:

一、在Linux系统中安装Iptables防火墙

1、Linux发行版都预装了Iptables。您可以使用以下命令更新或检索软件包:

二、关闭哪些防火墙端口

防火墙安装的第一步是确定哪些端口在服务器中保持打开状态。这将根据您使用的服务器类型而有所不同。例如,如果运行的是Web服务器,则可能需要打开以下端口:

网络:80和443

SSH:通常在端口22上运行

电子邮件:110(POP3),143(IMAP),993(IMAP SSL),995(POP3 SSL)。

1、还原默认防火墙规则

为确保设置无误,需从一套新的规则开始,运行以下命令来清除防火墙中的规则:

2、屏蔽服务器攻击路由

可以运行下列标准命令来隔绝常见的攻击。

屏蔽syn-flood数据包:

屏蔽XMAS数据包:

阻止无效数据包:

3、打开所需端口

根据以上命令可屏蔽常见的攻击方式,需要打开所需端口。下列例子,供参考:

允许SSH访问:

打开LOCALHOST访问权限:

允许网络流量:

允许SMTP流量:

三、测试防火墙配置

运行下列命令保存配置并重新启动防火墙:

参考技术A

1、首先需要在Linux系统中查找并打开文件以编辑和配置防火墙,执行命令: vi /etc/sysconfig/iptables。

2、然后将以下语句添加到上面打开的文件中:-A INPUT -m state -state NEW -m tcp -p tcp -dport 80 -j ACCEPT(允许端口80通过防火墙,这里以端口80为例)。

请注意,上述语句不会加载文件的最后一面,这将导致防火墙无法启动。 应将正确的一个添加到默认的22端口规则中。

3、配置防火墙规则

# Manual customization of this file is not recommended.

4、重启防火墙,使配置生效。

/etc/init.d/iptables restart或者service iptables restart

重启如下:

扩展资料:

查看防火墙规则是否生效:

[root@localhost bin]# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source    destination         

ACCEPT     all  --  0.0.0.0/0   0.0.0.0/0    state RELATED,ESTABLISHED 

ACCEPT     icmp --  0.0.0.0/0     0.0.0.0/0           

ACCEPT     all  --  0.0.0.0/0     0.0.0.0/0           

ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0   state NEW tcp dpt:22 

ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0     state NEW tcp dpt:80 



参考技术B

准备装有Linux系统的电脑。

1.在linux系统里面找到并打开编辑配置防火墙的文件,执行命令:
vi /etc/sysconfig/iptables。

2.在上面打开的文件里面加入一下语句:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)。


3.重启防火墙使配置生效语句service iptables restart。



4.查看防火墙规则是否生效。


扩展资料:

查看防火墙状态: 

[root@cluster1 ~]# service iptables status

iptables:未运行防火墙。

开启防火墙:

[root@cluster1 ~]# service iptables start

关闭防火墙:

[root@cluster1 ~]# service iptables stop

参考技术C

Linux下开启/关闭防火墙命令

1、永久性生效,重启后不会复原。

开启: chkconfig iptables on

关闭: chkconfig iptables off

2、 即时生效,重启后复原

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

扩展资料

linux配置防火墙规则:

1、在Linux系统中查找并打开文件以编辑和配置防火墙,执行命令。: vi /etc/sysconfig/iptables。

2、将以下语句添加到上面打开的文件中:-A INPUT -m state -state NEW -m tcp -p tcp -dport 80 -j ACCEPT(允许端口80通过防火墙,这里以端口80为例)。

请注意,上述语句不会加载文件的最后一面,这将导致防火墙无法启动。 应将正确的一个添加到默认的22端口规则中。

3、配置防火墙规则

# Manual customization of this file is not recommended.

4、重启防火墙,使配置生效。

/etc/init.d/iptables restart或者service iptables restart

重启如下:

参考技术D

1、在Linux系统中查找并打开文件以编辑和配置防火墙,执行命令。: vi /etc/sysconfig/iptables。

2、将以下语句添加到上面打开的文件中:-A INPUT -m state -state NEW -m tcp -p tcp -dport 80 -j ACCEPT(允许端口80通过防火墙,这里以端口80为例)。

请注意,上述语句不会加载文件的最后一面,这将导致防火墙无法启动。 应将正确的一个添加到默认的22端口规则中。

3、配置防火墙规则

# Manual customization of this file is not recommended.

4、重启防火墙,使配置生效。

/etc/init.d/iptables restart或者service iptables restart

重启如下:

扩展资料:

查看防火墙规则是否生效:

[root@localhost bin]# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source    destination         

ACCEPT     all  --  0.0.0.0/0   0.0.0.0/0    state RELATED,ESTABLISHED 

ACCEPT     icmp --  0.0.0.0/0     0.0.0.0/0           

ACCEPT     all  --  0.0.0.0/0     0.0.0.0/0           

ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0   state NEW tcp dpt:22 

ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0     state NEW tcp dpt:80 

REJECT     all  --  0.0.0.0/0      0.0.0.0/0     reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)

target     prot opt source      destination

REJECT     all  --  0.0.0.0/0     0.0.0.0/0    reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)

target     prot opt source       destination

参考资料:百度百科-防火墙

linux下的防火墙Netfilter配置:iptables的了解与使用(详细)

什么是iptables

防火墙的基础知识:点击查看

linux系统在内核外加了层访问限制,这个访问限制就是 Netfilter数据包过滤机制(也就是linux的防火墙)。
在Linux上面我们使用内核内建了Netfilter 这个机制,Netfilter 利用一些数据包过滤的规则设置,来定义出什么数据可以接收,什么数据需要剔除,以达到保护主机的目的。
Netfilter 提供了iptables这个软件来作为防火墙数据包过滤的命令。通过iptables写入访问策略,而iptables又是通过表格和链管理这些策略的,写入表格可以用iptables或者firewalld软件


官方定义:
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置


防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。
在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。

iptables的三表五链

我上篇文章详细写了,可以点击蓝字查看

iptables规则的读取顺序

自上而下,从第一条开始读,符合规则就直接执行且不再往下读,不符合规则就继续读下一条,如此继续。

实验环境配置

我们需要一台双网卡主机,一台单网卡主机。
双网卡:luckya主机
先添加一块网卡
在这里插入图片描述
在这里插入图片描述
然后对两块网卡进行设置:

网卡ens160:
nm-connection-editor
ip设为静态192.168.187.129

网卡ens224:
nm-connection-editor
ip设为静态192.168.0.100

两个网卡更改完后都需重启网络
nmcli connection reload
nmcli connection up ens160
nmcli connection up ens224

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单网卡:luckyb主机

网卡ens160:
nm-connection-editor
ip设为静态192.168.0.200
网关设为luckya主机的第二块网卡ens224上的ip保证两个主机可以互相通信

网卡更改完后需重启网络
nmcli connection reload
nmcli connection up ens160

在这里插入图片描述
测试设置是否生效:
两台主机互相ping一下,如图,成功!
在这里插入图片描述
在这里插入图片描述

防火墙管理工具切换到iptables

在rhel8中默认使用的是firewalld,所以我们需要下载并切换为iptables。

firewalld---切换到--->iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld 
systemctl mask firewalld 			
systemctl enable --now iptables

iptales ---切换到---> fiewalld 
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld

下载并开启iptables:
在这里插入图片描述

iptables命令及简单使用

语法:
iptables [选项] [参数]
iptables
		-t 		#指定表名称,不指定这个参数默认是filter表
		-n 		#不做解析,保留ip
		-L 		#查看
		-A 		#添加策略
		-p 		#协议
		-m		#状态
		--dport #目的地端口
		-s 		#来源
		-j 		#动作
			ACCEPT 	#允许
			DROP 	#丢弃
			REJECT 	#拒绝
			SNAT 	#源地址转换
			DNAT 	#目的地地址转换
		-N 		#新建链
		-E 		#更改链名称
		-X 		#删除链
		-D 		#删除规则
		-I 		#插入规则
		-R 		#更改规则
		-P 		#更改默认规则

查看表规则
#prot是protocol协议
在这里插入图片描述
添加删除规则
在这里插入图片描述
添加/改名/删除链
在这里插入图片描述

防火墙策略的永久保存

我们使用iptables进行设置时,都是临时的,关机后就会重启恢复到默认,需要保存才不会让设置重置。

/etc/sysconfig/iptables 	#iptables 策略记录文件

永久保存策略两个方式(两个命令):
1、iptales-save > /etc/sysconfig/iptables
2、service iptables save

iptables设置规则使ssh只允许特定用户连接

先设置一个丢弃所有数据包的规则:
iptables -A INPUT -j DROP
然后在单网卡主机测试,如下图会一直没有回应

在这里插入图片描述

filter表INPUT链插入第一条规则,允许22端口的数据包:
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
##如果直接-A加规则会是第二条规则,那么数据包来了后读到第一条直接被丢弃,所以要用-I插入

然后在单网卡主机测试,ssh连接成功!

在这里插入图片描述
在这里插入图片描述

更改filter表INPUT链第一条规则使特定网段的才可以连接:
iptables -R INPUT 1 -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
##现在只有192.168.0.0/24网段的ip可以连

在这里插入图片描述

iptables设置规则不重复过滤数据包

防火墙在进行数据包过滤时如果规则有几万条,每一个数据包都要从头读到尾那么必然会影响过滤速度,添加状态检测会提高效率,比如在第一条添加规则检查这个包是不是以前建立过连接的,如果是,直接让它过,如果不是再往下读,这样重复的包就不会重复过滤。

iptables的数据包状态

数据包状态
RELATED 			#建立过连接的
ESTABLISHED 		#正在连接的
NEW 				#新的连接

设置步骤

filter表INPUT链进行设置:
iptables -F		#清空之前设置的规则
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT	#添加状态检测,连接过的和正在连接的直接允许过
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT	#新的连接里自己访问自己的都允许通过(lo回环接口)
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT	#新的连接里22端口的访问都允许
iptables -A INPUT -m state --state NEW-j REJECT 	#除了上面之外的新连接都拒绝

service iptables save		#保存规则

在这里插入图片描述

iptables设置规则做网关使内网能访问外网

nat表就是用来做地址转换的,我们要让单网卡主机(内网主机)能通过我们的双网卡主机(网关)访问外网,所以我们在nat表里进行设置。

先清除之前的规则:
iptables -F		#清空之前filter表设置的规则
iptables -t nat -F		#清空nat表设置的规则

前提:在我们之前的实验环境设置里已经设置好了网关,然后再开一台虚拟机当外网,总共三台虚拟机
内网:192.168.0.0/24
外网:192.168.187.0/24

第一步:做源地址转换
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.187.129		#从ens160网卡出去的数据包IP转换为192.168.187.129
#内网访问外网需要伪装成和外网一个网段的地址,所以需要在网关经过内核路由之后做源地址转换
第二步:开启内核路由功能
sysctl -a | grep ip_forward		#检查net.ipv4.ip_forward是否等于1,1开启0关闭
vim /etc/sysctl.conf			#如果是关闭,那么编辑文件
加入:
net.ipv4.ip_forward=1
sysctl -p 						#使设置生效

源地址转换
在这里插入图片描述
开启内核路由功能
在这里插入图片描述
在单网卡主机(内网主机)测试一下,如图,ping和ssh都没问题,测试成功!
#我的外网主机ip是192.168.187.135
在这里插入图片描述

以上是关于如何配置linux下的防火墙?的主要内容,如果未能解决你的问题,请参考以下文章

samba在linux下的配置

SELinux是啥意思,如何关闭?Linux下的防火墙用啥命令打开?

如何在linux suse中配置防火墙

linux下的防火墙Netfilter配置:iptables的了解与使用(详细)

Linux下的NFS搭建配置

如何在Linux操作系统下搭建配置流媒体服务器系统