最全防火墙设置
前言
本篇文章主要记录一些防火墙常用设置(持续更新中)
CentOS 防火墙相关
CentOS 中防火墙程序主要是 firewall 和 iptables,CentOS7 中 firewall 服务已经默认安装好了,而 iptables 服务需要自己用
yum install iptabes-services
来安装。
firewall
查看防火墙状态
systemctl status firewalld
# 或
systemctl status firewalld.service
防火墙运行状态
firewall-cmd --state
查看端口开放情况
查询端口开放列表
firewall-cmd --zone=public --list-ports
# 或
netstat -ntlp # 此命令若无法运行请先安装:yum install net-tools -y
查询指定端口是否已开
firewall-cmd --query-port=端口号/tcp
# 提示yes表示开启,no表示未开启
查看防火墙规则
firewall-cmd --zone=public --list-all
开启防火墙
systemctl start firewalld
# 或
systemctl start firewalld.service
若遇到无法开启,可以执行
systemctl unmask firewalld.service
systemctl start firewalld.service
关闭防火墙
临时停止防火墙:
systemctl stop firewalld
# 或
systemctl stop firewalld.service
永久关闭防火墙:
systemctl disable firewalld.service
重启防火墙
systemctl restart firewalld.service
禁止开机启动
systemctl disable firewalld.service
开启开机启动
systemctl enable firewalld.service
开放或关闭指定端口
--zone=public
:表示作用域为公共
--permanent
:表示永久生效
开放端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
重载入添加的端口
firewall-cmd --reload
查询指定端口是否开启成功
firewall-cmd --query-port=端口号/tcp
移除指定端口
firewall-cmd --permanent --remove-port=端口号/tcp
查看指定端口是否被占用
lsof -i tcp:6666 # 查看所有6666端口使用情况
# 或
netstat -ntulp | grep 6666 #查看所有6666端口使用情况,此命令也可以查出占用端口的进程
查看&关闭占用进程
查看进程详细信息:
ps 11111 # 11111为进程的PID
杀掉进程:
kill -9 11111
查询已开放的端口
netstat -anp
查看服务是否开机启动
systemctl is-enabled firewalld.service
查看已启动的服务列表
systemctl list-unit-files | grep enabled
查看启动失败的服务列表
systemctl --failed
示例说明
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'
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至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端口
iptables
centos7 以下版本使用
安装
检查 yum 更新
yum check update
然后执行
yum install iptables-services
初始化配置
systemctl enable iptables
启动服务
systemctl start iptables
# 或
systemctl start iptables.service
查看状态
service iptables status
# 或
systemctl status iptables.service
查看打开的端口
/etc/init.d/iptables status
开放指定端口
/sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
# 保存
/etc/rc.d/init.d/iptables save
查看或编辑配置添加指定端口
查看或编辑配置文件内容
vi /etc/sysconfig/iptables
文件内容示例 (仅参考)
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
可以看到已经开放的端口,如果需要添加指定端口,可按照示例继续往下添加
重启防火墙
systemctl restart iptables.service
systemctl enable iptables.service
关闭防火墙
- 即时生效,重启后复原
# 开启防火墙
service iptables start
# 关闭防火墙
service iptables stop
#或
systemctl stop iptables.service
- 永久性生效,重启后不会复原
# 开启防火墙
chkconfig iptables on
# 关闭防火墙
chkconfig iptables off
# 检查防火墙
chkconfig --list | grep iptablesiptables 0:off1:off2:on3:on4:on5:on6:off # 由此可见:2/3/4/5都是开机启动,数字代表runlevel等级
Debian&Ubuntu 防火墙相关
有两种防火墙,可自由选择,当然在后面的命令中需要选择对应的命令方可执行,一般系统会自带
ufw
,iptables
可能需要安装,自己可以先试
iptables
安装
apt-get update
apt-get install iptables-persistent
开启防火墙
service iptables start
放行指定端口
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
重启防火墙
service iptables restart
查看防火墙现有规则
iptables -L -n -v
查看所有端口号
netstat -ntlp # 此命令如果无法运行请先安装:apt-get install net-tools -y
查看指定端口是否被占用
lsof -i tcp:6666 # 查看所有6666端口使用情况
# 或
netstat -ntulp |grep 6666 # 查看所有6666端口使用情况,此命令也可以查出占用端口的进程
查看&关闭占用进程
kill -9 [PID]
禁止开机启动
service iptables stop
开启开机启动
service iptables save
查看防火墙状态
service iptables status
关闭防火墙
service iptables stop
ufw
安装
apt-get update
apt-get install ufw
开启防火墙
ufw enable
放行指定端口
放行 tcp 或者 udp 端口:
ufw allow 端口号/tcp
放行 tcp 与 udp 端口:
ufw allow 端口号
删除指定端口:
ufw delete allow 端口号
重启防火墙
ufw reload
查看防火墙现有规则
ufw status
查看刚添加的规则:
ufw show added
查看所有端口号
netstat -ntlp # 此命令如果无法运行请先安装:apt-get install net-tools -y
查看指定端口是否被占用
lsof -i tcp:6666 #查看所有6666端口使用情况
# 或
netstat -ntulp |grep 6666 #查看所有6666端口使用情况,此命令也可以查出占用端口的进程
查看&关闭占用进程
kill -9 PID
禁止开机启动
ufw disable
开启开机启动
ufw enable
查看防火墙状态
ufw status verbose
关闭防火墙
ufw disable
重置防火墙配置
ufw reset