centos7防火墙开启与关闭及开通策略

文章参考于:
Centos7安装防火墙firewall
https://www.cnblogs.com/anxminise/p/9650104.html

防火墙(firewalld与iptables)
https://blog.csdn.net/weixin_40658000/article/details/78708375

CentOS7 防火墙(firewall)的操作命令
https://www.cnblogs.com/leoxuan/p/8275343.html
https://blog.csdn.net/wangleiqqaaaaa/article/details/103408656
特此感谢!

环境
系统:centos7.2

firewalld

[root@VM-0-11-centos logs]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

防火墙策略
3.1 firewall与iptables
在centos7之前的系统使用的防火墙策略为iptables,从centos7之后的系统使用的是firewall命令动态管理iptables,底层也是用的iptables。而firewall和iptables的命令也是有很大区别的。当然centos7也可以使用iptables作为防火墙。

3.2 防火墙开启、关闭、状态查看
首先,输入命令确认自己的系统版本

$ cat /etc/redhat-release

可以查看到系统版本为Centos7.5版本,一般centos7都是默认安装firewall防火墙的,如需写在安装请使用yum命令安装与卸载,本文不做单独讲解。

查看防火墙状态(此命令与文章之后的命令为centos7系统的firewall命令,并不适用与centos7以下的系统)

$ systemctl status firewalld.service

在这里插入图片描述
或者使用firewall命令查看

$ firewall-cmd --state

running表示防火墙开启,not running标识防火墙关闭
在这里插入图片描述
启动防火墙命令

$ systemctl start firewalld.service

关闭防火墙命令

$ systemctl stop firewalld.service

重启防火墙命令

$ systemctl restart firewalld.service

设置开机启动命令

$ systemctl enable firewalld.service

禁止开机启动命令

$ systemctl disable firewalld.service

查看是否开机启动命令

$ systemctl is-enabled firewalld.service

3.3 防火墙添加策略
再添加防火墙策略前先确保防火墙为开启状态,然后执行命令。目前只介绍几种常见防火墙策略命令,如有特殊需求的请自行百度,此文章会在以后工作中遇到新需求后持续更新。
1.允许指定ip访问指定端口号

$ firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=" port protocol="" port="" accept"

例子:

$ firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.92.183.44” port protocol=“tcp” port=“22” accept”      #允许10.92.183.44 访问22端口

2.允许指定ip段访问指定端口号

$ firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.92.183.0/24” port protocol=“tcp” port=“22” accept”      #允许10.92.183.0网段 访问22端口

3.允许指定ip段访问指定端口段

$ firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“10.92.183.0/24” port protocol=“tcp” port=“7000-9100” accept”      #允许10.92.183.0网段 访问7000-9100端口

参数解读 –permanent

在执行命令时,如果没有带 --permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。如果带上则会将配置存储到配置文件,,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd --reload 命令重载配置才会生效。

使用–permanent 参数后需重启防火墙策略才会生效

$ firewall-cmd --reload

查看防火墙策略

$ firewall-cmd --list-all

应急命令

firewall-cmd --panic-on  # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
firewall-cmd --panic-off  # 取消应急模式,但需要重启firewalld后才可以远程ssh
firewall-cmd --query-panic  # 查看是否为应急模式

服务

firewall-cmd --add-service=<service name> #添加服务
firewall-cmd --remove-service=<service name> #移除服务

端口

firewall-cmd --add-port=<port>/<protocol> #添加端口/协议(TCP/UDP)
firewall-cmd --remove-port=<port>/<protocol> #移除端口/协议(TCP/UDP)
firewall-cmd --list-ports #查看开放的端口

协议

firewall-cmd --add-protocol=<protocol> # 允许协议 (例:icmp,即允许ping)
firewall-cmd --remove-protocol=<protocol> # 取消协议
firewall-cmd --list-protocols # 查看允许的协议

允许指定ip的所有流量

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" accept"

例如:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept" # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping

允许指定ip访问指定服务

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" accept"

例如

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept" # 允许192.168.2.208主机访问ssh服务

允许指定ip访问指定端口

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" accept"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept" # 允许192.168.2.1主机访问22端口

将指定ip改为网段
8-11 的各个命令都支持 source address 设置为网段,即这个网段的ip都是适配这个规则:

例如:
firewall-cmd --zone=drop --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” accept”
表示允许192.168.2.0/24网段的主机访问22端口 。
禁止指定ip/网段

8-12 各个命令中,将 accept 设置为 reject表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时)

例如:
firewall-cmd --zone=drop --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” reject”
表示禁止192.168.2.0/24网段的主机访问22端口 。

iptables

CentOS7默认的防火墙不是iptables,而是firewalle.

安装iptable iptable-service
#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables 
#安装iptables-services
yum install iptables-services

当前iptables的配置情况

iptables -L -n

清除默认的防火墙规则
#首先要在清楚前将policy INPUT改成ACCEPT,表示接受一切请求
#这个一定要做

iptables -P INPUT ACCEPT

#清空默认所有规则

iptables -F

#清空自定义的所有规则

iptables -X

#计数器置为0

iptables -Z

配置防火墙规则
#允许来自于lo接口的数据包
#若没有此规则,你将不能通过127.0.0.1访问本地服务,例ping 127.0.0.1

iptables -A INPUT -i lo -j ACCEPT

#ssh端口22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

#允许icmp包通过,–允许ping

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#允许所有对外请求的返回包
#本机对外请求相当于OUTPUT,对于返回包相当于INPUT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

#其他入站一律丢弃

iptables -P INPUT DROP

#所有出站一律绿灯

iptables -P OUTPUT ACCEPT

#所有转发一律丢弃

iptables -P FORWARD DROP

#添加内网IP信任

iptables -A INPUT -p tcp -s 172.10.10.2 -j ACCEPT

#过滤所有非以上规则的请求

iptables -P INPUT DROP

#封停一个IP

iptables -I INPUT -s 88.88.88.88 -j DROP

#解封一个IP

iptables -D INPUT -s 88.88.88.88 -j DROP

解决vsftpd在iptables开启后,无法使用被动模式的问题

1.首先在/etc/sysconfig/iptables-config中修改或者添加以下内容

#最新系统可能需要加载一下ftp模块
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
#添加以下内容,注意顺序不能调换
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

2.重新设置iptables设置

iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

修改端口/etc/sysconfig/iptables

设定预设规则

-- 请求接入包丢弃
[root@home ~]# iptables -p INPUT DROP
-- 接受响应数据包
[root@home ~]# iptables -p OUTPUT ACCEPT
-- 转发数据包丢弃 
[root@home ~]# iptables -p FORWARD DROP

添加防火墙规则
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。

开启SSH服务端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 

注:如果在预设设置把OUTPUT设置成DROP策略的话,就需要设置OUTPUT规则,否则无法进行SSH连接。

生产配置

[root@localhost ~]# cp -ra /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +%F`
[root@localhost ~]# iptables -P INPUT ACCEPT
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables -Z
[root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -P OUTPUT ACCEPT
[root@localhost ~]# iptables -P FORWARD DROP
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 9998 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 1970 -j ACCEPT  (根据需要来)
[root@localhost ~]# service iptables save





#######################
#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service

你可能感兴趣的:(应用服务,linux,centos,运维)