共计 3350 个字符,预计需要花费 9 分钟才能阅读完成。
- iptable 基本概念
- Iptables 表链规则
- iptables 传输数据包的过程
- iptables 命令格式
- iptables 常用选项 OPTIONS 解释
- 常用命令 COMMANDS 解释
- 常用参数 PARAMETERS 解释
- 使用 MATCH EXTENSIONS 扩展模块
- 其他
- 举例搭建 samba 服务器
- 配置 samba 服务器
- 添加 samba 账户
- 关闭 SELinux 防火墙
- 配置 iptables
- 首先查看当前的规则
- 添加规则以启用 samba 所使用的端口
- 查看添加的规则
- 保存当前规则并启用 samba
iptable 基本概念
iptables 防火墙包含两部分,即位于用户空间的 iptables 模块和位于内核空间 netfilter 模块。用户空间模块提供插入、修改和除去包过滤表中规则,内核模块进行实际的过滤,所以更准确的名称应该是 iptables/netfilter。
- 表(tables):提供特定的功能,iptables 内置了 4 个表,即filter 表、nat表、mangle表和 raw 表,分别用于实现 包过滤,网络地址转换、包重构 (修改) 和数据跟踪处理。
- 规则(rules):其实就是网络管理员预定义的条件。
- 链(chains):是数据包传播的路径,每一条链其实就是众多规则中的一个 检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables 就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。共 5 个链, 即 INPUT、OUTPUT、FORWARD、PREROUTING 和 POSTROUTING。
Iptables 表、链、规则:
iptables 传输数据包的过程
iptables 命令格式
iptables 常用选项 OPTIONS 解释
常用命令 COMMANDS 解释:
- -A, –append chain:增加一条规则到链的末端
- -D, –delete chain:删除一条规则
- -I, –insert chain [rulenum]:以给定的 rule 编号,在选定的链上插入规则
- -R, –replace chain rulenum:替换某条规则
- -L, –list [chain]:查看指定表和指定链的规则列表
- -F, –flush [chain]:删除 [指定] 表中所有规则
常用参数 PARAMETERS 解释:
- -p 协议类型:可以指定规则应用的协议,即 TCP、UDP 和 ICMP 等
- -s 源地址:地址可以是 hostname,也可以是 IP 等
- -d 目标 IP 地址
- -j 动作
- –line-numbers:和 - L 一起使用,显示规则的 rulenum 编号
- -n:以数字形式输出 IP 地址和端口
使用 MATCH EXTENSIONS 扩展模块
- -m, –match module_name:启用扩展模块,如 state、tcp、udp、multiport、string、addrtype、mac 等
- iptables -m module_name -h:查看扩展模块的帮助信息;如:
iptables -m mac -h
其他
- 假如没有 -t 选项,则默认的 table 为 filter 表
- 默认的保存在 /etc/sysconfig/iptables 文件中
- service iptables save:保存更改的 iptables
举例搭建 samba 服务器
配置 samba 服务器
修改 /etc/samba/smb.conf
文件,首先添加要共享的目录:
[workspace] writable = yes path = /root/
如果打算使符号链接也可以访问,则在 smb.conf 的[global] 部分,添加如下配置:
follow symlinks = yes wide links = yes unix extensions = no
添加 samba 账户
smbpasswd -a smbpasswd -e
关闭 SELinux 防火墙
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # setenforce 0 # reboot
配置 iptables
首先查看当前的规则:
[root@DDAN ~]# iptables -L --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- anywhere anywhere 2 ACCEPT icmp -- anywhere anywhere 3 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 4 ACCEPT tcp -- anywhere anywhere tcp dpt:http 5 ACCEPT tcp -- anywhere anywhere tcp dpt:https 6 ACCEPT udp -- anywhere anywhere udp dpt:bootpc 7 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 8 DROP all -- anywhere anywhere
添加规则以启用 samba 所使用的端口
经查看,要添加到 8 号规则的前面,否则 samba 不起作用:
iptables -I INPUT 8 -p udp -m multiport --dport 137,138 -j ACCEPT iptables -I INPUT 8 -p tcp -m state --state NEW -m multiport --dport 139,445 -j ACCEPT
查看添加的规则
[root@DDAN ~]# iptables -L --line-number -n Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:68 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW multiport dports 139,445 9 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 137,138 10 DROP all -- 0.0.0.0/0 0.0.0.0/0
保存当前规则并启用 samba:
# 保存规则 service iptables save # 启用 smb: service smb restart # 使 smb 随机器启动 chkconfig smb on
也可以使用 iptables -F
完全删除规则
————————————– 分割线 ————————————–
iptables 使用范例详解 http://www.linuxidc.com/Linux/2014-03/99159.htm
iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm
Linux 防火墙 iptables 详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables+L7+Squid 实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm
iptables 的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux 下防火墙 iptables 用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm
————————————– 分割线 ————————————–