Linux防火墙笔记

使用iptables命令配置防火墙

构建防火墙的通常三步:

  • 清楚所有规则
  • 设置防火墙策略
  • 设置防火墙规则

基本语法:

iptables [-t table] CMD [option]  [chain]  [matcher] [-j target]
  • 表(table):可以是raw/mangle/nat/filter/security,默认是filter
  • 操作命令(CMD):包括添加、删除、更新链规则、创建自定义链等
  • 链(chain):针对不同用途指定要操作的链
  • 规则匹配器(matcher):指定各种匹配规则,如IP地址、端口、包类型等
  • 目标(target):当规则匹配一个包时,真正要执行的任务用目标标识,如接受或拒绝,每条规则只能有一个目标
    注意:iptables命令严格区分大小写,所有表名用小写,所有的链名有大写,所有规则匹配用小写

清除防火墙
语法:iptables [-t table] [-FXZ] [chain]

操作命令说明
-F或 --flush清楚指定链和表中的所有规则,若没有指定链,则清空所有链
-X或 --delete-chain删除指定的用户自定义链,必须保证链中的规则都不在使用时才能删除链,没有指定链,删除所有用户自定义链
-Z 或 --zero对链中的包计数器和字节计数器清零

设置防火墙策略
语法:iptables [-t table] -P [chain] ACCEPT | DROP
配置链的默认策略的一般三种方法:

  • 先允许所有包,然后设置规则禁止有危险的包

    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT

  • 先禁止所有包,然后设置规则允许安全包

    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

  • 先允许所有包,再允许特定包,最后禁止所有包

    iptables -P INPUT DROP
    iptables -A INPUT -j ACCEPT
    iptables -P OUTPUT DROP
    iptables -A OUTPUT -j ACCEPT
    iptables -P FORWARD DROP
    iptables -A FORWARD -j ACCEPT

设置防火墙规则

语法:iptables [-t table]  <CMD> [<option>]  <chain> <rules>  -j <target>

iptables链操作命令(CMD)

操作命令说明
-A 或 --append在所选链尾加入一条规则
-I 或 --insert [ rulenum]用给出的规则号在所选链中插入一条规则
-R 或 --replace rulenum用给出的规则号在所选链中替换一条规则
-D 或 --delete rulenum用给出的规则号在所选链中删除一条规则
-L 或 --list [–line-numbers] [-v] [-n]列出指定链的所有规则,若没有指定链,则列出所有链。选项–line-numbers用于显示规则编号,选项-v使输出详细化,选项-n在输出中以IP地址和端口数值形式显示,而不是默认的名字
-N 或 --new-chain < chain-name>以给定的名字创建一条新的用户自定义链,不能与已有链同名
-E < old-chain-name> < new-chain-name>改变自定义链的名字

iptables常用的匹配规则(rules)

参数说明
-s [!] address[/mask]匹配数据包的源地址或地址范围 如 -s 192.168.1.0/24
-d [!] address[/mask]匹配目的地址或地址范围 如 -d 192.168.1.0
-i [!] interface name[+]匹配数据包从哪个网络接口流入,默认为所有接口
-o [!] interface name[+]匹配数据包从哪个网络接口流出,默认为所有接口
-p [!] protocol指出要匹配的协议
-m实现扩展匹配

注意:每一条命令中的多个匹配条件是“与”关系。

协议参数(-p)的用法

协议相关参数说明举例
-p tcp 或 -p udp–sport匹配规则的源端口或端口范围-p udp --sport 1024:65535
-p tcp 或 -p udp–dport匹配规则的目的端口或端口范围-p tdp --dport 80
-p tcp–tcp-flags匹配指定的TCP标记,该选项有两个参数,都是列表,列表内部用逗号分隔,列表之间用空格分隔,第一个列表列出需要检查的标记,第二个列表指定在第一个列表中必须被设为1的“标记” ,也就是说第一个参数提供检查范围,第二个参数提供设置条件,匹配操作可识别的标记有:
URG(U:Urgent紧急);
ACK(A:Acknowledgement 回应);
PSH(P:Push推进);
RST(R:Rest 重置);
SYN(S:Synchronize 同步);
FIN:(F:Final 终止);
另外还有两个,ALL和NONE
-p tcp --tcp-flags SYN,FIN,ACK SYN
匹配SYN被设置为1,而FIN和ACK没有被设置的包,
-p tcp --tcp-flags !SYN,FIN,ACK SYN
匹配那些FIN和ACK被设置而SYN没被设置的包
-p tcp --tcp-flags ALL NONE
匹配所有标记未置1的包
-p tcp[!] --syn仅仅匹配设置了SYN位,清楚了ACK、FIN位的TCP包-p tcp --syn
-p icmp–icmp-type [!] typename匹配ICMP信息类型-p icmp --icmp-type 8

扩展匹配(-m)的用法

扩展相关参数说明举例
iprange–src-range源地址内的任意IP均可匹配-m iprange --src-range 10.0.0.1-10.0.0.100
iprange–dst-range目的地址内的任意IP均可匹配
multiport–sports源端口范围内的任意端口均可匹配
multiport–dports目的端口范围内的任意端口均可匹配-m multiport --dports 111,2049,10001:10004
multiport–ports端口范围内的任意端口均可匹配
state–state使用链接跟踪进行状态匹配-m state --state INVALID,NEW
conntrack–ctstate使用链接跟踪进行状态匹配-m conntrack --ctstate INVALID,NEW
mac–mac-source匹配包的源MAC地址,只用于INPUT、PREROUTING和FORWARD链-m mac --mac-source 00:21:97:30:51:2B
limit–limit指定单位时间内允许通过的数据包的个数,单位时间可以是/second、/minute、/hour、/day或首字母-m limit --limit 3/hour --limit burst 5
limit–limit-burst指定单位时间内最多可匹配数据包的个数,用来匹配瞬间大量数据包的个数

iptables常用的规则目标(target)

目标目标说明参数
-j ACCEPT允许数据包通过
-j DROP简单丢弃数据包
-j REJECT拒绝数据包并用ICMP错误信息予以回应–reject-with < type>
-j DNAT修改数据包的目的socket–to-destination ipaddr [-ipaddr][:prot-prot]
-j REDIRECT在防火墙上将数据包重定向至本机的另一个端口–to-ports port[-port]
-j SNAT修改数据包的源socket–to-source ipaddr[-ipaddr][:port-port]
-j MASQUERADE与SNAT功能相似,知识无须指定–to-source–to-ports port[-port]
-j LOG使用rsyslogd记录日志,默认记录在/var/log/messages中–log-prefix
--log-ip-options
–log-tcp-options
-j < custom chain>跳转到用户自定义链,执行后返回调用它的链
-g < custom chain>跳转到用户自定义链,执行后不返回调用它的链

设置规则实例
1.允许接收远程主机的SSH请求
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
2.允许发送本地主机的SSH响应
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
3.送出的数据包目的端口为22
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
4.接收的数据包源端口为22
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
5.允许接收远程主机的HTTP请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
6.允许发送本地主机的HTTP响应
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值