Linux-Firewalld-Cmd-1

Firewalld 命令的指南

一、centos7 版本对防火墙进行加强,不再使用原来的 iptables,启用 firewalld

1. firewalld 的基本使用

1
2
3
4
5
6
7
8
9
启动:  systemctl start firewalld
查状态:systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

2. 配置 firewalld-cmd

1
2
3
4
5
6
7
8
9
10
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

3. 那怎么开启一个端口呢

添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent

# 重新载入,更新防火墙规则
firewall-cmd --reload

# 查看
firewall-cmd --zone= public --query-port=80/tcp

# 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=<service>
firewall-cmd --delete-service=<service>

在每次修改端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改,所以也可以在文件中之间修改,然后重新加载
使用命令实际也是在修改文件,需要重新加载才能生效。

1
2
3
4
5
6
7
8
9
10
11
firewall-cmd --zone=public --query-port=80/tcp
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp
# 重新加载后才能生效
firewall-cmd --reload
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp

4. 参数解释

1
2
3
4
5
6
7
8
# 添加的服务
--add-service
# 作用域
--zone
# 添加端口,格式为:端口/通讯协议
--add-port=80/tcp
# 永久生效,没有此参数重启后失效
--permanent

5. 详细使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 设置某个 ip 访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'

# 删除配置
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'

# 设置某个ip访问某个端口
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/24 port port=80 protocol=tcp accept'

# 删除配置
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/24 port port=80 protocol=tcp accept'

# 检查是否允许伪装 IP
firewall-cmd --query-masquerade
# 允许防火墙伪装 IP
firewall-cmd --add-masquerade
# 禁止防火墙伪装 IP
firewall-cmd --remove-masquerade

# 将 80 端口的流量转发至 8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

# 将 80 端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1

# 将 80 端口的流量转发至 192.168.0.1 的 8080 端口
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080

二、更改 firewalld 配置文件进行配置防火墙

1. 修改 /etc/firewalld/zones/public.xml

1
vi /etc/firewalld/zones/public.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<port protocol="udp" port="4789"/>
<port protocol="tcp" port="5222"/>
<port protocol="udp" port="161"/>
<rule family="ipv4">
<source address="218.193.144.200"/>
<port protocol="tcp" port="3306"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="218.193.144.144"/>
<port protocol="tcp" port="3306"/>
<accept/>
</rule>
</zone>

2. 应用配置

1
firewall-cmd --reload

三、centos7 以下版本(使用 iptables 开放端口)

简单参数说明

参数 说明
-A 添加一条 INPUT 的规则
-p 指定是什么协议 (TCP/UDP)
–dport 就是目标端口,当前数据从外部进入服务器为目标端口
–sport 数据从服务器出去,则为数据原端口
-j 就是指定是 ACCEPT 接受或阻止 DROP

1. iptables 操作案例

允许所有 IP 访问

1
2
3
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

允许指定 IP 访问

1
iptables -A INPUT -s 192.168.10.2 -p tcp -m tcp --dport 80 -j ACCEPT

不允许 IP 访问

1
iptables -A INPUT -s 192.168.10.2 -p tcp -m tcp --sport 80 -j DROP

2. 保存

1
/etc/rc.d/init.d/iptables save

3. 查看打开的端口

1
/etc/init.d/iptables status
1
2
3
iptables -L -n
或者
iptables -L -n --line-number

4. 删除规则

1
2
# 根据序号删除,序号从 iptables -L -n --line-number 中获得
iptables -D INPUT 1

5. 关闭防火墙

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

1
2
开启: chkconfig iptables on
关闭: chkconfig iptables off

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

1
2
开启: service iptables start
关闭: service iptables stop

四、其他 FTP 策略配置

放行 20、21 端口还是不能连接 FTP,因为在 PASV 模式下,建立数据传输会随机开放端口,这个端口显然是没有处于 firewall 的允许策略之下的,因为需要修改配置文件,指定端口范围。

1
vi /etc/vsftpd/vsftpd.conf

在最后加入以下内容,端口尽量选择高范围,提高安全性

1
2
3
4
5
6
# 开启被动模式
pasv_enable=YES
# 随机最小端口
pasv_min_port=30000
# 随机最大端口
pasv_max_port=31000

然后对指定的 IP 开放指定的端口段

1
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="30000-31000" accept"
Contents
  1. 1. Firewalld 命令的指南
    1. 1.1. 一、centos7 版本对防火墙进行加强,不再使用原来的 iptables,启用 firewalld
      1. 1.1.1. 1. firewalld 的基本使用
      2. 1.1.2. 2. 配置 firewalld-cmd
      3. 1.1.3. 3. 那怎么开启一个端口呢
      4. 1.1.4. 4. 参数解释
      5. 1.1.5. 5. 详细使用
    2. 1.2. 二、更改 firewalld 配置文件进行配置防火墙
      1. 1.2.1. 1. 修改 /etc/firewalld/zones/public.xml
      2. 1.2.2. 2. 应用配置
    3. 1.3. 三、centos7 以下版本(使用 iptables 开放端口)
      1. 1.3.1. 1. iptables 操作案例
      2. 1.3.2. 2. 保存
      3. 1.3.3. 3. 查看打开的端口
      4. 1.3.4. 4. 删除规则
      5. 1.3.5. 5. 关闭防火墙
    4. 1.4. 四、其他 FTP 策略配置
|