linux防火墙
...大约 3 分钟
防火墙简介
防火墙技术种类:
(1)包过滤防火墙(packet filtering)
(2)应用代理防火墙 (application proxy)
(3)状态检测防火墙(stateful inspection)
(firewalld是包过滤防火墙)
包过滤防火墙概述:
(1)netfilter:位于Linux内核中的包过滤功能体系,成为Linux防火墙的"内核态"。
(2)firewalld:CentOS7默认的管理防火墙规则的工具,成为Linux防火墙的"用户态"。
包过滤的工作层次:
(1)主要是网络层,针对IP数据包、检查源IP。
(2)体现在对包内的IP地址、端口等信息的处理上。
firewalld
以下命令在centos7终端下执行
firewall命令行帮助
firewall-cmd -h
查看firewalld启用状态
systemctl status firewalld
启动firewalld
systemctl start firewalld
重启firewalld
systemctl restart firewalld
设置firewalld开机启动
systemctl enable firewalld
停止firewalld
systemctl stop firewalld
查看防火墙可用区域
firewall-cmd --get-zones
查看防火墙默认区域
firewall-cmd --get-default-zone
查看防火墙可用服务
firewall-cmd --get-service
设置默认区域允许访问http和https服务
firewall-cmd --add-service=http
firewall-cmd --add-service=https
# 重新加载配置
firewall-cmd --reload
查看已经开放的端口
firewall-cmd --list-all
开放端口
# 开放80
firewall-cmd --zone=public --permanent --add-port=80/tcp
# 开放443
firewall-cmd --zone=public --permanent --add-port=443/tcp
# 重新加载配置
firewall-cmd --reload
移除端口
# 移除80
firewall-cmd --remove-port=80/tcp --permanent
# 移除443
firewall-cmd --remove-port=443/tcp --permanent
# 重新加载配置
firewall-cmd --reload
添加ip白名单
# 给ip段192.168.100.1/24开放访问80端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.1/24" port protocol="tcp" port="80" accept"
# 给ip段192.168.100.1/24开放访问443端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.1/24" port protocol="tcp" port="443" accept"
# 重新加载配置
firewall-cmd --reload
移除ip白名单
# 移除ip段192.168.100.1/24访问443端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.100.1/24" port protocol="tcp" port="443" accept"
iptables
iptables开放端口
# 开放3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# 开放80,443端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
# 保存设置
service iptables save
# 查看
/sbin/iptables -L -n
禁止此IP访问服务器
iptables -I INPUT -s 1.2.3.4 -j DROP
#或
iptables -A INPUT -s 1.2.3.4 -j DROP
禁止服务器访问此IP
iptables -A OUTPUT -d 1.2.3.4 -j DROP
# 如果要封某个网段:
iptables -I INPUT -s 1.2.3.0/24 -j DROP
清空屏蔽IP
iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP
一键清空所有规则
iptables -F
查看iptables开放情况
iptables -L INPUT
# 或
iptables -L
保存规则,下次开机自动执行
iptables-save
处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
iptables -I INPUT -s 100.109.168.0/24 -j DROP
iptables -I INPUT -s 100.116.41.0/24 -j DROP
防范CC攻击
(1)控制单个IP的最大并发连接数
允许单个IP的最大连接数为 50
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
iptables -I INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j REJECT
提示
默认iptables模块不包含connlimit,需要自己单独编译加载,请参考该地址
http://sookk8.blog.51cto.com/455855/280372 不编译内核加载connlimit模块
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
# 单个IP在60秒内只允许最多新建30个连接
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
Powered by Waline v2.15.5