防火墙指定IPport

#开放端口(不限制ip)
#firewall-cmd --zone=public --add-port=28080/tcp --permanent
#删除端口(ports)    
firewall-cmd --remove-port=29093/tcp --permanent
 firewall-cmd --remove-port=80/tcp --permanent   
#重新加载
firewall-cmd --reload
  
firewall-cmd  --list-all
#指定ip    
firewall-cmd  --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="27.196.95.59"  port protocol="tcp" port="20022" accept'
#指定服务器    
firewall-cmd  --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="172.16.140.22"  port protocol="tcp" port="33306" accept' 
#指定网段     
firewall-cmd  --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="27.196.95.50"  port protocol="tcp" port="29093" accept' 
#删除(指定ip限制的端口)    
firewall-cmd  --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="172.16.140.65"  port protocol="tcp" port="33306" accept' 


iptables防火墙

  • 有时候关了防火墙,下次登录又开了,发现服务起不来,找半天才发现防火墙又开了,所以建议永久关闭防火墙和selinux
  1. 基本操作
# 查看防火墙状态
service iptables status

# 停止防火墙
service iptables stop

# 启动防火墙
service iptables start

# 重启防火墙
service iptables restart

# 永久关闭防火墙
chkconfig iptables off

# 永久关闭后重启
chkconfig iptables on 
  1. 开启80端口
vim /etc/sysconfig/iptables
# 加入如下代码
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# 保存退出后重启防火墙

service iptables restart

firewall防火墙

# 查看firewall服务状态

systemctl status firewalld

# 查看firewall的状态

firewall-cmd --state



#### 关闭 firewalld:

systemctl stop firewalld #临时关闭

systemctl disable firewalld #永久关闭,即设置开机的时候不自动启动


# 开启、重启、关闭、firewalld.service服务

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop



# 查看防火墙规则
firewall-cmd --list-all


  1. #查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp

#开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
 

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
# firwall-cmd:是Linux提供的操作firewall的一个工具;
# --permanent:表示设置为持久;
# --add-port:标识添加的端口;       

centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld

#1.firewalld的基本使用

#启动
  systemctl start firewalld
#查状态
systemctl status firewalld 
#停止
  systemctl disable firewalld
#禁用
  systemctl stop firewalld
#在开机时启用一个服务
systemctl enable firewalld.service
#在开机时禁用一个服务
systemctl disable firewalld.service
#查看服务是否开机启动
systemctl is-enabled firewalld.service
#查看已启动的服务列表
systemctl list-unit-files|grep enabled
#查看启动失败的服务列表
systemctl --failed


#2.配置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 

开启一个端口

# 添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload    # 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp  #查看
firewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除

firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=<service>
firewall-cmd --delete-service=<service>
# 在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
# 使用命令实际也是在修改文件,需要重新加载才能生效。

firewall-cmd --zone=public --query-port=80/tcp
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --reload  # 重新加载后才能生效
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp

参数解释

–add-service #添加的服务
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

详细使用

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务
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'     //设置某个ip访问某个端口
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端口
 

centos7以下版本

# 开放80,22,8080 端口
/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
# 保存
/etc/rc.d/init.d/iptables save
# 查看打开的端口
/etc/init.d/iptables status

# 关闭防火墙 
    1) 永久性生效,重启后不会复原
        开启: chkconfig iptables on
        关闭: chkconfig iptables off
    2) 即时生效,重启后复原
        开启: service iptables start
        关闭: service iptables stop