netfilter/iptables框架可以实现数据包过滤,网络地址转换以及数据包管理功能,linux防火墙系统中包括netfilet/iptables这两部分。netfilet是linux内核的一部分。
iptables默认的规则表有 fileter表(过滤表),nat表(地址转换规则表),mangle(修改数据标识记位表),raw(跟踪数据表规则表)。每个规则表中包含多个数据链,如下图所示,防火墙的规则需要写入到这些具体的数据链中。
1.iptables防火墙语法格式
用法 iptales [-t 表名] {-A|-D|-I|-D|-F|-L|-Z|-P} 链名:rule-specification
ps: -t 不加表名,默认为filter表。
-A 追加防火墙规则
-D 输出防火墙规则
-i 插入防火墙规则
-F清空防火墙规则
-L 列出防火墙规则
-R 替换防火墙规则
-Z 清空防火墙缓存
-p 设置链默认规则
匹配参数:
[!]-p 匹配协议 ,!表示取反
[!]-s 匹配源地址
[!]-d 匹配目标地址
[!]-i 匹配入站网卡
[!]-o 匹配出站网卡
[!]--sport 匹配源端口
[!]--dpor 匹配目标端口
[!]--src-rangr 匹配源地址范围
[!]--dst-range 匹配目标地址范围
[!]--limit 匹配数据表速率
[!]- -mac-source 匹配mac地址
[!]--sports 匹配源端口
[!]--dports 匹配目标端口
[!]--state 匹配状态
[!]--string 匹配应用层字串
触发动作
ACCEPT 允许数据包通过
DROP 丢去数据包
REJECT 禁止数据包通过
LOG 将数据包信息记录在日志
DNAT 目标地址转换
SNAT 源地址转换
MASQUERADE 地址欺骗
REDIRECT 重定向
2.防火墙应用案例
案例1:允许任意客户访问(http,https,ssh,dns,ntp,stmp,pop3)
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 22-j ACCEPT #ssh端口为22
[root@centos6 ~]# iptables -A INPUT -P udp --dport 25-j ACCEPT #邮件服务器SMTP端口
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 53-j ACCEPT #dns端口
[root@centos6 ~]# iptables -A INPUT -P udp --dport 53-j ACCEPT #dns端口
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 80-j ACCEPT #http默认端口
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 110-j ACCEPT #邮件服务pop3端口
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 143-j ACCEPT #邮件服务端口
[root@centos6 ~]# iptables -A INPUT -P tcp --dport 123-j ACCEPT #系统的时间服务
案例2:在互联网上各种攻击手段层出不穷,很多攻击会采用发送大量的数据包给服务器,导致服务器无法响应,iptables提供一个limit提供扩展的功能,可以现在单位时间内的数据包个数。这里设置500个数据包每秒。
[root@centos6~]#iptables -I INPUT -m limit --limit 500/src -j ACCEPT
[root@centos6~] #iptables -P INPUT DROP
转载:https://aisky.cc/linuxBasics/60.html