- 一、firewalld 防火墙的使用
- 二、iptables 防火墙的使用
一、firewalld 防火墙的使用
1、firewalld 的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机启用: systemctl enable firewalld
开机禁用: systemctl disable firewalld
2、systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
3.配置 firewalld-cmd
查看版本: 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
4、举例如何添加或者删除一个端口
- 添加端口(–permanent 永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重启 firewalld
firewall-cmd --reload
- 查看状态
firewall-cmd --zone= public --query-port=80/tcp
- 删除端口
firewall-cmd --zone= public --remove-port=80/tcp --permanent
二、iptables 防火墙的使用
在 CentOS7 中提供了 systemctl 命令,systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。此处写出使用 systemctl 来管理 iptables 的方法,这些命令等同于 CentOS7 以下时所使用的命令,但是不适用于 CentOS7 以下的系统。
iptables 的文件设置路径是:
vi /etc/sysconfig/iptables-config
iptables 的防火墙规则配置文件路径是:
vi /etc/sysconfig/iptables
1、iptables 的基本使用
启动: systemctl start iptables.service
关闭: systemctl stop iptables.service
查看状态: systemctl status iptables.service
开机启用: systemctl enable iptables.service
开机禁用: systemctl disable iptables.service
保存 iptables 规则: service iptables save
重启: systemctl restart iptables.service
2、查看 iptables 现有规则
iptables -L -n
iptables -nvL
两种方法均可,但稍有不同,参数有以下这些
-L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上-t NAT 参数
-n 不对 ip 地址进行反查,即不将 ip 解析为域名只显示 IP 地址和端口号,加上这个参数显示速度会快很多
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
-x 在 v 的基础上,禁止自动单位换算(K、M)
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
3、清除默认的防火墙规则
安装完成基本配置后需要做的
- 允许所有请求
首先在清除前要将 policy INPUT 改成 ACCEPT,表示接受一切请求。
这个一定要先做,不然清空后可能会直接悲剧
设置 INPUT 方向所有的请求都允许
iptables -P INPUT ACCEPT
- 清空所有默认规则
iptables -F
- 清空所有自定义规则
iptables -X
- 所有计数器归 0
iptables -Z
4、配置规则(命令版)
此处均为举例,意在写明命令的使用格式,请根据自己的实际使用情况来自行配置。
- 允许来自于 lo 接口的数据包(本地访问)
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
- 允许 ping
iptables -A INPUT -p icmp --icmp-type 8 -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 新人(接收其所有 TPC 请求)
iptables -A INPUT -p tcp -s 192.168.1.50(改为允许的内网 IP 即可) -j ACCEPT
- 保存规则
service iptables save
- 重启防火墙
systemctl restart iptables.service
5、配置规则(修改文件版)
修改配置规则路径:
vi /etc/sysconfig/iptables
修改与上面的命令版基本相同,仅仅是去掉了iptables
这条命令而已,固不做过多的讲解。
但是特别需要注意的是添加允许端口的位置,应在 22 端口的上面或者下面,但是不应在最底!如下图!!如果不是很清楚的话,请尽量使用命令版配置规则。
同理最后我们修改完后也需要重启防火墙。
service iptables save
systemctl restart iptables.service
6、其它命令
- 要封停一个 IP,使用下面这条命令
iptables -I INPUT -s **_._**.**_._** -j DROP
- 要解封一个 IP,使用下面这条命令
iptables -D INPUT -s **_._**.**_._** -j DROP
- 删除某个已有规则
首先要将所有的 iptables 规则以需要标记显示:
iptables -L -n --line-numbers
比如要删除 INPUT 里序号为 8 的规则:
iptables -D INPUT 8
参考资料:
- https://www.cnblogs.com/moxiaoan/p/5683743.html
- https://www.cnblogs.com/gophper/p/4889250.html
- https://www.jianshu.com/p/8fd07c60f23f
本文章笔记版本地址:http://ccdd6ec5.wiz03.com/share/s/3cTmX51TMQ-b2QTact03UPg834j-xL2evk5w20-rYV1MxNJY