基础运维:iptables防火墙入门到掌握
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础运维:iptables防火墙入门到掌握相关的知识,希望对你有一定的参考价值。
一、简介
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。
二、IPtables结构
Linux下的iptables表结构
三、基础iptables
Linux centos7.X中iptables地位变低了,改成firewall。但日常使用的都是iptables。
1.安装iptables防火墙服务[[email protected] ~]# yum install -y iptables
2.查找系统关于iptables防火墙的文件或者目录
[[email protected] ~]# find / -name iptables* ( * 代表任意长度字符串)
/etc/sysconfig/iptables-config #iptables防火墙的配置文件
/etc/selinux/targeted/active/modules/100/iptables #selinux下的防护规则目录
/usr/bin/iptables-xml #iptables的二进制xml文件
/usr/sbin/iptables-restore #iptables的管理命令,重置或恢复iptables规则命令
/usr/sbin/iptables-save #iptables的管理命令,保存iptables规则命令
/usr/sbin/iptables #iptables管理命令,设置iptables规则命令
/usr/share/doc/iptables-1.4.21 #iptables的目录(带版本)
/usr/share/man/man1/iptables-xml.1.gz #对应上面文件或命令的压缩软件包
/usr/share/man/man8/iptables-extensions.8.gz #对应上面文件或命令的压缩软件包
/usr/share/man/man8/iptables-restore.8.gz #对应上面文件或命令的压缩软件包
/usr/share/man/man8/iptables-save.8.gz #对应上面文件或命令的压缩软件包
/usr/share/man/man8/iptables.8.gz #对应上面文件或命令的压缩软件包
[[email protected] ~]#
3.减少实验障碍操作(非生产环境)
[[email protected] ~]# iptables -F #清除iptables规则链中已有的条目
[[email protected] ~]# iptables -X #清除iptables自定义的规则链
[[email protected] ~]# iptables -Z #清除iptables规则链中的数据包计算器和字节计算器(归零)
温馨提醒:该操作能在实验中少犯错,降低入门的门槛,在运维进阶中会详细说明各个规则及生产用处。
4.设置iptables规则链
4.1 官方设置说明:
[[email protected] ~]# iptables --help
iptables v1.4.21
Usage: iptables -[ACD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
Commands:
Either long or short options are allowed.
--append -A chain Append to chain
--check -C chain Check for the existence of a rule
--delete -D chain Delete matching rule from chain
--delete -D chain rulenum
Delete rule rulenum (1 = first) from chain
--insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
--list -L [chain [rulenum]]
List the rules in a chain or all chains
--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
--flush -F [chain] Delete all rules in chain or all chains
--zero -Z [chain [rulenum]]
Zero counters in chain or all chains
--new -N chain Create a new user-defined chain
--delete-chain
-X [chain] Delete a user-defined chain
--policy -P chain target
Change policy on chain to target
--rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
Options:
--ipv4 -4 Nothing (line is ignored by ip6tables-restore)
--ipv6 -6 Error (line is ignored by iptables-restore)
[!] --protocol -p proto protocol: by number or name, eg. `tcp‘
[!] --source -s address[/mask][...]
source specification
[!] --destination -d address[/mask][...]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
--jump -j target
target for rule (may load target extension)
--goto -g chain
jump to chain with no return
--match -m match
extended match (may load extension)
--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+]
network interface name ([+] for wildcard)
--table -t table table to manipulate (default: `filter‘)
--verbose -v verbose mode
--wait -w [seconds] maximum wait to acquire xtables lock before give up
--wait-interval -W [usecs] wait time to try to acquire xtables lock
default is 1 second
--line-numbers print line numbers when listing
--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
--modprobe=<command> try to insert modules using this command
--set-counters PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
4.2 通俗(常用)设置说明:
iptables(选项)(参数)
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
5.规则链设置
5.1 设置说明
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
举个例子:放行22端口,暴露在互联网中,任意地址都能通过22端口连接到服务器
解释:只需要在入站规则设置就好(入站就是进入服务器,出站就是从服务器出去)
[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[[email protected] ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT
[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
5.2 显示规则详情
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 3 packets, 234 bytes)
pkts bytes target prot opt in out source destination
128 9372 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 90 packets, 14552 bytes)
pkts bytes target prot opt in out source destination
[[email protected] ~]#
6.进阶iptables防火墙规则
这一部分有点复杂,放到运维进阶中,有兴趣可以关注动态,按照全栈运维路线更新。
以上是关于基础运维:iptables防火墙入门到掌握的主要内容,如果未能解决你的问题,请参考以下文章
马哥2016全新Linux+Python高端运维班-Iptables 防火墙基础练习,tcp_wrapper
第二十五天 IPtable基础框架扩展匹配及防火墙原理iptable入门
Linux运维Ubuntu18.04设置端口开放(iptables)