firewall使用记录

原文链接:https://wangchujiang.com/linux-command/c/firewall-cmd.html

firewalld自身并不具备防火墙功能 和iptables一样需要通过内核的netfilter来实现 两者作用都是维护规则

systemctl是CentOS 7的service和chkconfig融合工具

# 安装firewalld
yum install firewalld firewall-config

systemctl start firewalld # 启动
systemctl status firewalld # 或者 firewall-cmd --state 查看状态
systemctl disable firewalld # 停止
systemctl stop firewalld # 禁用

# 使用iptables 关闭服务的方法
yum install iptables-services
systemctl start iptables
systemctl enable iptables

服务管理

# 显示服务列表
# Amanda FTP Samba和TFTP等最重要的服务已经被firewalld提供相应服务
firewall-cmd --get-services

# 允许SSH服务通过
firewall-cmd --enable service=ssh

# 禁止SSH服务通过
firewall-cmd --disable service=ssh

# 打开TCP的8080端口
firewall-cmd --enable ports=8080/tcp

# 临时允许Samba服务通过600秒
firewall-cmd --enable service=samba --timeout=600

# 显示当前服务
firewall-cmd --list-services

# 添加HTTP服务到内部区域internal
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload # 在不改变状态的条件下重新加载防火墙
端口管理
# 打开443/TCP端口
firewall-cmd --add-port=443/tcp

# 永久打开3690/TCP端口
firewall-cmd --permanent --add-port=3690/tcp

# 永久打开端口需要reload一下 临时打开不用 如临时打开端口reload此端口会失效
firewall-cmd --reload

# 查看防火墙 添加的端口也可以看到
firewall-cmd --list-all

直接模式

# 打开TCP协议的9999端口
firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
firewall-cmd --reload

控制端口 / 服务

可以通过两种方式控制端口的开放 指定端口号或指定服务名
	虽然开放http 服务就是开放80端口 但不能通过端口号来关闭 即通过指定服务名
开放的要通过指定服务名关闭 通过指定端口号开放的就要通过指定端口号关闭 指定端口
的时一定要指定协议(http tcp udp)

firewall-cmd --add-service=mysql # 开放mysql端口
firewall-cmd --remove-service=http # 阻止http端口
firewall-cmd --list-services # 查看开放的服务
firewall-cmd --add-port=3306/tcp # 开放通过tcp访问3306
firewall-cmd --remove-port=80tcp # 阻止通过tcp访问3306
firewall-cmd --add-port=233/udp # 开放通过udp访问233
firewall-cmd --list-ports # 查看开放的端口

伪装 IP

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

端口转发

端口转发可将指定地址访问指定的端口时 将请求转发至指定地址的指定端口 转发ip不指定时默认为本机 如指定ip未指定端口默认使用来源端口

如果配置好端口转发之后不能用 可以检查下面两个问题

如将80端口转发至8080端口 先检查本地80端口和目标8080端口是否开放监听
其次检查是否允许伪装 ip没允许的话要开启伪装ip
# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
想把某个端口隐藏时 就可在防火墙上阻止那个端口访问 然后再开一个不规则的端口 之后配置防火墙的端口转发 将请求转发过去
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章