防火墙策略
防火墙策略一般分为两种, 一种叫通策略, 一种叫堵策略, 通策略, 默认门是关着的, 必须要定义谁能进堵策略则是, 大门是洞开的, 但是你必须有身份认证, 否则不能进所以我们要定义, 让进来的进来, 让出去的出去, 所以通, 是要全通, 而堵, 则是要选择当我们定义的策略的时候, 要分别定义多条功能, 其中: 定义数据包中允许或者不允许的策略, filter 过滤的功能, 而定义地址转换的功能的则是 nat 选项为了让这些功能交替工作, 我们制定出了表这个定义, 来定义区分各种不同的工作功能和处理方式
用的比较多个功能有 3 个:
1.filter 定义允许或者不允许的
2.nat 定义地址转换的
3.mangle 功能: 修改报文原数据
iptables 是工作在用户空间的, 它可以让规则进行生效的, 本身不是一种服务, 而且规则是立即生效的而我们 iptables 现在被做成了一个服务, 可以进行启动, 停止的启动, 则将规则直接生效, 停止, 则将规则撤销
iptables 还支持自己定义链但是自己定义的链, 必须是跟某种特定的链关联起来的在一个关卡设定, 指定当有数据的时候专门去找某个特定的链来处理, 当那个链处理完之后, 再返回接着在特定的链中继续检查
规则 (rules) 其实就是网络管理员预定义的条件, 规则一般的定义为如果数据包头符合这样的条件, 就这样处理这个数据包规则存储在内核空间的信息 包过滤表中, 这些规则分别指定了源地址目的地址传输协议 (如 TCPUDPICMP) 和服务类型 (如 HTTPFTP 和 SMTP) 等当数据包与规 则匹配时, iptables 就根据规则所定义的方法来处理这些数据包, 如放行 (accept) 拒绝 (reject) 和丢弃 (drop) 等配置防火墙的 主要工作就是添加修改和删除这些规则
注意: 规则的次序非常关键, 谁的规则越严格, 应该放的越靠前, 而检查规则的时候, 是按照从上往下的方式进行检查的
规则表之间的优先顺序 Rawmanglenatfilter
语法
iptables(选项)(参数)
选项
-t < 表>: 指定要操纵的表;
-A: 向规则链中添加条目; 在当前链的最后新增一个规则
-D num: 从规则链中删除条目; 明确指定删除第几条规则
-I num: 向规则链中插入条目; 把当前规则插入为第几条
-R num : 替换规则链中的条目; Replays 替换 / 修改第几条规则
-L num: 显示规则链中已有的条目;
-F: 清除规则链中已有的条目;
-Z: 清空规则链中的数据包计算器和字节计数器;
-N: 创建新的用户自定义规则链;
-P: 定义规则链中的默认目标;
-h: 显示帮助信息;
-p: 指定要匹配的数据包协议类型;-p tcp|udp --dport 80
-s: 指定要匹配的数据包源 ip 地址;
-j < 目标>: 指定要跳转的目标;
-i < 网络接口>: 指定数据包进入本机的网络接口; eth0 流入一般用在 INPUT 和 PREROUTING 上
-o < 网络接口>: 指定数据包要离开本机所使用的网络接口 eth0 流出一般在 OUTPUT 和 POSTROUTING 上
iptables 命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源 IP / 源子网> --sport 源端口 <-d 目标 IP / 目标子网> --dport 目标端口 -j 动作
表名包括
raw: 高级功能, 如: 网址过滤
mangle: 数据包修改(QOS), 用于实现服务质量
net: 地址转换, 用于网关路由器
filter: 包过滤, 用于防火墙规则
动作包括
ACCEPT: 接收数据包
DROP: 丢弃数据包
REDIRECT: 重定向映射透明代理
SNAT: 源地址转换
DNAT: 目标地址转换
MASQUERADE:IP 伪装(NAT), 用于 ADSL
LOG: 日志记录
案例
允许所有 IP 访问
iptables -A INPUT -j ACCEPT
禁止所有网络访问
- iptables -A INPUT -j REJECT
- iptables -A FORWARD -j REJECT
开放指定 IP 访问
iptables -A INPUT -s 192.167.3.4 -j ACCEPT
拒绝指定 IP 访问
iptables -A INPUT -s 192.167.3.4 -j REJECT
允许指定源 IP 访问指定目标 IP
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -j ACCEPT
允许指定源 IP 访问指定目标 IP 以及目标端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 22 -j ACCEPT
指定连续的端口 --dport 8080-9000 不能指定多个非连续端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 8080-9000 -j ACCEPT
-p tcp:TCP 协议的扩展
--dport 21 指定目标端口
--sport 指定源端口
-p udp:UDP 协议的扩展
--dport: 指定目标端口
--sport: 指定源端口
-p icmp:icmp 数据报文的扩展
--icmp-type:
echo-request(请求回显), 一般用 8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用 0 来表示
允许本地回环接口(即运行本机访问本机)
- iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
- # 允许已建立的或相关连的通行
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- # 允许所有本机向外的访问
- iptables -A OUTPUT -j ACCEPT
允许所有网络访问 22|80|ftp21|ftp20 端口
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- iptables -A INPUT -p tcp --dport 21 -j ACCEPT
- iptables -A INPUT -p tcp --dport 20 -j ACCEPT
允许指定 IP 网络访问 22|80|ftp21|ftp20 端口
- iptables -A INPUT -s ip -p tcp --dport 22 -j ACCEPT
- iptables -A INPUT -s ip -p tcp --dport 80 -j ACCEPT
- iptables -A INPUT -s ip -p tcp --dport 21 -j ACCEPT
- iptables -A INPUT -s ip -p tcp --dport 20 -j ACCEPT
禁止指定 IP 访问 22|80|ftp21|ftp20 端口, 屏蔽某个网络段: 123.0.0.0/8|16|24
- iptables -A INPUT -s ip -p tcp --dport 22 -j REJECT|DROP
- iptables -A INPUT -s ip -p tcp --dport 80 -j REJECT|DROP
- iptables -A INPUT -s ip -p tcp --dport 21 -j REJECT|DROP
- iptables -A INPUT -s ip -p tcp --dport 20 -j REJECT|DROP
规则保存
service iptables save
查看防火墙规则:
- iptables -L -n -v
- iptables -S
删除已添加的 iptables 规则
清空防火墙策略
iptabes -F
将所有 iptables 以序号标记显示, 执行:
- iptables -L -n --line-numbers
- Chain INPUT (policy ACCEPT)
- num target prot opt source destination
- 1 ACCEPT tcp -- 10.1.6.41 10.1.6.129 tcp dpt:22
- 2 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
比如要删除 INPUT 里序号为 8 的规则, 执行:
iptables -D INPUT 2
控制规则的存放以及开启
注意: 你所定义的所有内容, 当你重启的时候都会失效, 要想我们能够生效, 需要使用一个命令将它保存起来
1.service iptables save 命令
它会保存在 / etc/sysconfig/iptables 这个文件中
2.iptables-save 命令
iptables-save> /etc/sysconfig/iptables
3.iptables-restore 命令
开机的时候, 它会自动加载 / etc/sysconfig/iptabels
如果开机不能加载或者没有加载, 而你想让一个自己写的配置文件 (假设为 iptables.2) 手动生效的话:
iptables-restore < /etc/sysconfig/iptables.2
则完成了将 iptables 中定义的规则手动生效
来源: http://www.bubuko.com/infodetail-2527043.html