Linux - iptable firewall 限制 IP 访问端口
iptable 设置iptables
访问限制格式:
# 禁止指定IP访问
iptables -A INPUT -p tcp -s IP -j DROP
# 禁止指定IP访问端口
iptables -A INPUT -p tcp -s IP --dport port -j DROP
# 允许在IP访问指定端口
iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT
限制某个IP访问:
iptables -I INPUT -s 172.15.2.11 -j DROP 或者: -A INPUT -s 172.15.2.11 -j DROP
指定特定IP 访问:
-A INPUT -s 172.16.2.20 -p tcp -j ACCEPT
-A INPUT -s 172.16.2.0/24 -p tcp -j ACCEPT
设置特定端口访问特定端口:
-A INPUT -s 172.17.1.0/16 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT -A INPUT -s 172.16.2.0/24 -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT
Centos7 防火墙 默认是 firewall
想和 Centos 6 一样配置 iptables;
直接更新 # yum update iptables
直接安装 # yum install iptables iptables-services
或者 直接 yum install iptables iptables-* -y
Systemctl stop firewalld Systemctl disable firewalld systemctl restart iptables.service systemctl status iptables.service systemctl enable iptables.service
Centos 7 没有 ifconfig
可以 直接安装;
yum install net-tools
Centos 7
firewall 默认配置:
# 默认配置路径 /etc/firewalld/
# 默认区域:
zones/public.xml
常见指令
#查看版本 firewall-cmd --version
#显示状态 firewall-cmd --state
#查看区域信息
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
1、firewall-cmd:指令
2、--zone: 指定区域public
3、--permanent:永久生效
4、--add-port:端口
# 添加一组
firewall-cmd --zone=public --add-port=500-1000/tcp --permanent
# 删除一个端口:
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 更新防火墙规则 firewall-cmd --reload # 查看所有打开的端口 firewall-cmd --zone=public --list-ports
限制端口
# 允许指定IP访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" port protocol="tcp" port="80" accept"
# 禁止指定IP访问
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="172.19.20.21" drop'
或:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" port protocol="tcp" port="80" reject
# 限制指定段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.0.0/24" port protocol="tcp" port="80" reject"
--add-rich-rule:添加规则
--remove-rich-rule:删除规则
drop:丢弃fin包超时
reject:拒绝包
IP 添加规则
#限制IP地址访问端口,reject 表示拒绝,设置为 drop 表示直接丢弃 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" port protocol="tcp" port="80" reject" #解除限制(允许) firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" port protocol="tcp" port="80" accept" #限制IP段访问端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject" #解除限制(允许) firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" accept" #允许某个IP的所有连接 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="<ip>" accept" #允许某个IP访问ssh服务 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" service name="ssh" accept" #允许某个IP访问icmp协议 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.19.20.21" protocol value="icmp" accept"
服务配置规则
firewall-cmd --get-services #查看所有预设的服务 firewall-cmd --list-services #查看已放行的服务 firewall-cmd --info-service=ssh #查看某个服务包含的端口,如ssh firewall-cmd --permanent --add-service=<service name> #放行服务 firewall-cmd --permanent --add-service=ssh #如放行 ssh firewall-cmd --permanent --remove-service=<service name> #移除服务
协议配置规则
firewall-cmd --permanent --add-protocol=<protocol> # 允许协议 firewall-cmd --permanent --add-protocol=icmp # 例:icmp,即允许ping firewall-cmd --permanent --remove-protocol=<protocol> # 取消协议 firewall-cmd --list-protocols # 查看允许的协议
查看已设置规则
# 重新加载规则 firewall-cmd --reload # 查看规则列表 firewall-cmd --zone=public --list-rich-rules
# 配置文件
/etc/firewalld/zones/public.xml