Linux下iptables的基础配置

整理的Linux的IPtables资料,目前工作中基本用不到,记录一下。

iptables常用命令

1
2
3
4
5
6
7
8
iptables -A 追加一条防火墙规则至链的末尾位置
iptables -I 插入一条防火墙规则至链的开头
iptables -L 查看iptables所有规则
iptables -n 以数字形式显示地址,端口等信息
iptables - -line-numbers 查看规则时,显示规则的行号
iptables -D 删除链内指定序号(或内容)的一条规则
iptables -F 清空所有规则
iptables -P 为指定链设置默认规则

iptables框架

iptables的4个表

1
2
3
4
nat表(地址转换表)
filter表(数据过滤表)
raw表(状态跟踪表)
mangle表(包标记表)

iptables的5个链

1
2
3
4
5
INPUT链(入站规则)
OUTPUT链(出站规则)
FORWARD链(转发规则)
PREROUTING链(路由前规则)
POSTROUTING链(路由后规则)

iptables语法格式

1
2
3
4
5
6
7
8
9
10
11
12
iptables  [-t 表名]  选项  [链名]  [条件]  [-j 目标操作]
//注意事项与规律:
//可以不指定表,默认为filter表
//可以不指定链,默认为对应表的所有链
//如果没有找到匹配条件,则执行防火墙默认规则
//选项/链名/目标操作用大写字母,其余都小写
**************************************************
//目标操作:
// ACCEPT:允许通过/放行
// DROP:直接丢弃,不给出任何回应
// REJECT:拒绝通过,必要时会给出提示
// LOG:记录日志,然后传给下一条规则

示例

创建

1
2
3
4
5
6
[root@localhost~]# iptables  -t  filter  -A  INPUT  -p tcp  -j  ACCEPT
//追加规则至filter表中的INPUT链的末尾,允许任何人使用TCP协议访问本机
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
//插入规则至filter表中的INPUT链的开头,允许任何人使用UDP协议访问本机
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
//插入规则至filter表中的INPUT链的第2行,允许任何人使用ICMP协议访问本机

查看

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# iptables  -nL  INPUT                    //仅查看INPUT链的规则
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
[root@localhost ~]# iptables -L INPUT --line-numbers //查看规则,显示行号
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere
2 ACCEPT icmp -- anywhere anywhere
3 ACCEPT tcp -- anywhere anywhere

删除

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# iptables  -D  INPUT  3
//删除filter表中INPUT链的第3条规则
[root@localhost ~]# iptables -nL INPUT //查看规则,确认是否删除
[root@localhost ~]# iptables -F
//清空filter表中所有链的防火墙规则
[root@localhost ~]# iptables -t nat -F
//清空nat表中所有链的防火墙规则
[root@localhost ~]# iptables -t mangle -F
//清空mangle表中所有链的防火墙规则
[root@localhost ~]# iptables -t raw -F
//清空raw表中所有链的防火墙规则

设置默认

1
[root@localhost ~]# iptables  -t  filter  -P  INPUT  DROP

iptables防火墙过滤与转发

过滤条件

  • 协议匹配 -p 协议名称
  • 地址匹配 -s 源地址 -d 目标地址
  • 接口匹配 -i 接受数据的网卡 -o 发送数据的网卡
  • 端口匹配 - -sport 源端口号 –dport 目标端口号
  • ICMP类型匹配 - -icmp-type ICMP 类型