如何配置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流量:
三、测试防火墙配置
运行下列命令保存配置并重新启动防火墙:
参考技术A1、首先需要在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
准备装有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
参考技术CLinux下开启/关闭防火墙命令
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
重启如下:
参考技术D1、在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
什么是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下的防火墙?的主要内容,如果未能解决你的问题,请参考以下文章
SELinux是啥意思,如何关闭?Linux下的防火墙用啥命令打开?