Centos7 防火墙的使用

引言

在服务器中,相对其他系统, Centos7 我使用的比较多一些。但是对防火墙命令这一块用的不多(仗着运营商提供的面板偷懒),前两天使用的时候一直在搜网上资料,感觉整理的不是很齐全,现在自己整理一份。

命令

使用 firewalld 命令

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
# 查看防火墙状态
systemctl status firewalld
# 启动
systemctl start firewalld / service firewalld start
# 停止
systemctl stop firewalld / service firewalld stop
# 禁用
systemctl disable firewalld
# 检查防火墙状态
firewall-cmd --state
# 查看所有打开的端口
firewall-cmd --zone=public --list-ports
# 检查防火墙规则
firewall-cmd --list-all
# 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone 作用域
--add-port=80/tcp 添加端口,格式为:端口/通讯协议
--permanent 永久生效,没有此参数重启后失效
--timeout=seconds 持续一段时间,到期后自动移除,经常用于调试,且不能与 --permanent 同时使用
# 删除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 查看端口是否开放
firewall-cmd --zone=public --query-port=80/tcp
# 重新载入(更新防火墙规则)
firewall-cmd --reload

firewalld 进阶命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 开放 ftp 服务
firewall-cmd --add-service=ftp
# 添加 eth0 接口至 信任等级,永久有效
firewall-cmd --zone=public --add-interface=eth0 --permanent
# 配置 public zone 的端口转发
firewall-cmd --zone=public --add-masquerade
# 然后转发 tcp 22 端口至 9527
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527
# 转发 22 端口数据至另一个 ip 的相同端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.123
# 转发 22 端口数据至另一 ip 的 9527 端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527:toaddr=192.168.1.100

# IP 封禁
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' reject"
# 通过 ipset 来封禁 ip
firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.123
# 封禁网段
firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.0/24
# 倒入 ipset 规则 blacklist,然后封禁 blacklist
firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/blacklist.xml
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'

使用 iptables 命令

切换到 iptables 首先应该关掉默认的 firewalld ,然后安装 iptables 服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 停止并禁用 firewalld
systemctl stop firewald.service
systemctl disable firewald.service
# 安装 iptables-services 、iptables-devel
yum install -y iptables-services iptables-devel`
# 启用并启动 iptables
systemctl enable iptables.service
systemctl start iptables.service
# 查看 iptables 配置文件
cat /etc/sysconfig/iptables`
# 开启转发功能
在 /etc/sysctl.conf 中添加 net.ipv4.ip_forward=1
vim /etc/sysctl.conf
输入 i 进入编辑,添加 net.ipv4.ip_forward=1
sudo sysctl -p 同步内核参数
继续查看内核参数 less /proc/sys/net/ipv4/ip_forward 如果为 1 则配置生效

其他相关运行命令

如要开放 80,22,8080 端口,输入以下命令即可

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

保存

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

查看打开的端口

1
/etc/init.d/iptables status

关闭防火墙

  • 永久性生效,重启后不会复原
    • 开启: chkconfig iptables on
    • 关闭: chkconfig iptables off
  • 即时生效,重启后复原
    • 开启: service iptables start
    • 关闭: service iptables stop

参考

Powered by Hexo and Hexo-theme-hiker

Copyright © 2018 - 2023 Leamx's Blog All Rights Reserved.

UV : | PV :