有些人安装的linux的系统默认防火墙不是iptables,而是firewall,那就得使用以下方式关闭防火墙了。
查看防火墙当前状态,是否是running
firewall-cmd --state
查看防火墙当前已经开放的端口
firewall-cmd --zone=public --list-ports
关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --reload # 配置立即生效
关闭后执行状态命令,查看是否关闭成功,如果看到inactive(dead)就意味着防火墙关闭了。
端口的查询/开放
查询端口是否开放
firewall-cmd --query-port=8080/tcp
新建永久规则,开放8080端口(TCP协议)
firewall-cmd --permanent --add-port=8080/tcp
移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
开启某个端口
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启80端口
firewall-cmd --reload # 配置立即生效
关闭某个端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent #关闭80端口
firewall-cmd --reload # 配置立即生效
IP(IP段)的开放
新建永久规则,开放192.168.1.1单个源IP的访问
firewall-cmd --permanent --add-source=192.168.1.1
新建永久规则,开放192.168.1.0/24整个源IP段的访问
firewall-cmd --permanent --add-source=192.168.1.0/24
移除上述规则
firewall-cmd --permanent --remove-source=192.168.1.1
开放端口给指定IP段。如开放给局域网192.168.1.1-192.168.1.255
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6666" accept"
firewall-cmd --reload
批量添加区间端口
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
firewall-cmd --reload # 配置立即生效
查看监听的端口
netstat -lnpt
系统服务的开放
开放http服务
firewall-cmd --permanent --add-service=http
移除上述规则
firewall-cmd --permanent --remove-service=http
自定义复杂规则(注意是否与已有规则冲突)
允许指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
允许指定IP段访问本机8080-8090端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'
禁止指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'
重启防火墙
firewall-cmd --reload
service firewalld restart
命令含义
- –zone #作用域
- –add-port=80/tcp #添加端口,格式为:端口/通讯协议
- –permanent #永久生效,没有此参数重启后失效
任何修改操作,配置完成后,需要重新装载firewall。可重新启动firewalld服务。
其他常用命令:
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
firewall规则扩展学习
查看已开放的端口
firewall-cmd --list-ports
开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=3338/tcp --permanent
关闭端口(关闭后需要要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=3338/tcp --permanent
重启防火墙
firewall-cmd --reload
开机启动防火墙
systemctl enable firewalld
开启防火墙
systemctl start firewalld
禁止防火墙开机启动
systemctl disable firewalld
停止防火墙
systemctl stop firewalld
更多命令,使用 firewall-cmd --help 查看帮助文件
下面是关于iptables的设置相关:
CentOS 7.0默认使用的是firewall作为防火墙,如果想使用使用iptables必须重新设置一下,具体方法如下:
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #iptabales规则,并非CentOS7默认规则
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
常用命令:
iptables -L -n /查看已开放端口
nano /etc/sysconfig/iptables //编辑现有端口,也可以使用vi
systemctl restart iptables.service //centos7 重启iptables
systemctl enable iptables.service //centos7 开机启动iptables
直接用iptables命令形式添加/删除端口等操作:
- 注意:192.168.0.0 是您的服务器IP地址。
telnet 127.0.0.1 8075 /测试端口是否开放telnet
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 30000:31000 -j DNAT --to 192.168.0.0 #添加端口段
iptables -I INPUT -s 11.11.11.11 -p tcp --dport 3306 -j ACCEPT #如果需要,可指定Ip可以访问3306端口
iptables -I INPUT -p tcp --dport 8808 -j DROP //禁止所有Ip访问8808端口
iptables --line -nvL INPUT #查询规则编号或已开放端口
iptables -D INPUT 1 #删除指定规则编号的规则
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 8808 -j ACCEPT #允许127.0.0.1访问8808