一、前言
iptables 中文名:IP信息包过滤系统,它是一个配置 Linux 内核防火墙的命令行工具,是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多前端和图形界面配置。iptables 用于 ipv4,ip6tables 用于 ipv6。
iptables 是 Linux 核心网络安全的重要工具,使用前需要先启动服务。
(nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。)
二、 iptables 命令
2.1 语法
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口
-j 动作
2.2 说明
1)表名
- filter:包过滤,用于存放所有与防火墙相关操作的默认表。
- raw:数据跟踪处理,用于配置数据包,raw 中的数据包不会被系统跟踪。
- nat:用于网络地址转换(例如:端口转发)
- mangle:用于对特定数据包的修改
- security:用于强制访问控制网络规则
2)规则
- -A:追加,在当前链的最后新增一个规则
- -I num:插入,把当前规则插入为第几条
- -R num:替换/修改第几条规则(格式:iptables -R INPUT 3 ……)
- -D num:删除,明确指定删除第几条规则
3)规则链名
- INPUT链:处理输入数据包
- OUTPUT链:处理输出数据包
- PORWARD链:处理转发数据包
- PREROUTING链:用于目标地址转换(DNAT)
- POSTOUTING链:用于源地址转换(SNAT)
4)协议名
- TCP
- UDP
- ICMP
5)动作
- ACCEPT:接收数据包
- DROP:丢弃数据包
- REDIRECT:重定向、映射、透明代理
- SNAT:源地址转换
- DNAT:目标地址转换
- MASQUERADE:IP伪装(NAT),用于ADSL
- LOG:日志记录
2.3 选项
- -t<表>:指定要操纵的表
- -A:向规则链中添加条目
- -D:从规则链中删除条目
- -i:向规则链中插入条目
- -R:替换规则链中的条目
- -L:显示规则链中已有的条目
- -F:清楚规则链中已有的条目
- -Z:清空规则链中的数据包计算器和字节计数器
- -N:创建新的用户自定义规则链
- -P:定义规则链中的默认目标
- -h:显示帮助信息
- -p:指定要匹配的数据包协议类型
- -s:指定要匹配的数据包源ip地址
- -j<目标>:指定要跳转的目标
- -i<网络接口>:指定数据包进入本机的网络接口
- -o<网络接口>:指定数据包要离开本机所使用的网络接口
2.4 实例
禁止服务器 INPUT 链的 80 端口:
iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
三、将 iptables 配置保存
3.1 方法一
使用 iptables save 选项
service iptables save
2.2 方法二
使用 iptables-save 命令,需要指定保存的配置文件路径
iptables-save /etc/sysconfig/iptables
3.3 实例
开启服务器 INPUT 链的 80 端口,并保存配置:
iptables -t filter -R INPUT 1 -p tcp --dport 80 -j ACCEPT
service iptables save
四、netstat 命令
netstat 是一款命令行工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
netstat 可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。
4.1 基本语法
netstat [选项]
4.2 选项
- -a 或 --all:显示所有连线中的 Socket
- -A <网络类型> 或 --<网络类型>:列出该网络类型连线中的相关地址
- -c 或 --continuous:持续列出网络状态
- -C 或 --cache:显示路由器配置的快取信息
- -e 或 --extend:显示网络其他相关信息
- -F 或 --fib:显示 FIB;
- -g 或 --groups:显示多重广播功能群组组员名单
- -h 或 --help:在线帮助
- -i 或 --interfaces:显示网络界面信息表单
- -l 或 --listening:显示监控中的服务器的 Socket
- -M 或 --masquerade:显示伪装的网络连线
- -n 或 --numeric:直接使用 ip 地址,而不通过域名服务器
- -N 或 --netlink 或 --symbolic:显示网络硬件外围设备的符号连接名称
- -o 或 --timers:显示计时器
- -p 或 --programs:显示正在使用 Socket 的程序识别码和程序名称
- -r 或 --route:显示 Routing Table
- -s 或 --statistice:显示网络工作信息统计表
- -t 或 --tcp:显示 TCP 传输协议的连线状况
- -u 或 --udp:显示 UDP 传输协议的连线状况
- -v 或 --verbose:显示指令执行过程
- -V 或 --version:显示版本信息
- -w 或 --raw:显示RAW传输协议的连线状况
- -x 或 --unix:此参数的效果和指定 -A unix 参数相同
- --ip 或 --inet:此参数的效果和指定 -A inet 参数相同
4.3 实例
显示 tcp 模式运行状况:
netstat -ant
tcp 状态(state):
- LISTENING :服务启动后首先处于侦听状态
- ESTABLISHED :建立连接,表示两台机器正在通信
- CLOSE_WAIT:对方主动关闭连接或者网络异常导致连接中断
- TIME_WAIT :我方主动调用 close() 断开连接,收到对方确认后状态变为 TIME_WAIT