跳至主要內容

linux防火墙

zhengcog...大约 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/280372open in new window 不编译内核加载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
上次编辑于:
贡献者: Hyman
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5