系统:Ubuntu18.04
iptables是一款基于命令行的防火墙策略管理工具
常用命令
- -P:设置默认策略
- -F:清空规则链
- -L:查看规则链
- -A:在规则链末尾加入新规则
- -I num:在规则链指定编号位置前插入新规则
- -D num:删除某条规则
常用参数
- -s:匹配来源地址IP/MASK,加叹号”!”表示除了某个ip外
- -d:匹配目标地址
- -i 网卡名称:匹配从这块网卡流入的数据
- -o 网卡名称:匹配从这块网卡流出的数据
- -p:匹配协议,如TCP、UDP、ICMP
- –dport num:匹配目标端口号
- –sport num:匹配来源端口号
- -n:以数字形式显示规则,配合-L使用,有-n,会显示为0.0.0.0,没有会显示为anywhere或any
- -v:显示的信息更详细,更友好,便于产看
- –line-number:显示行号,配合-L使用
示例
vagrant@homestead:~$ sudo iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
vagrant@homestead:~$ sudo iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
vagrant@homestead:~$ sudo iptables -vL INPUT
Chain INPUT (policy ACCEPT 4518 packets, 2152K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
vagrant@homestead:~$ sudo iptables -nvL INPUT
Chain INPUT (policy ACCEPT 19064 packets, 5181K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
vagrant@homestead:~$ sudo iptables -L INPUT --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:http
规则链
- PREROUTING:路由选择前处理数据包
- INPUT:过滤流入的数据包
- OUTPUT:过滤流出的数据包
- FORWARD:过滤转发的数据包
- POSTROUTING:路由选择后处理数据包
处理动作
- DROP:丢弃(直接丢弃掉,不响应)
- REJECT:拒绝(不允许通过,并响应一条拒绝信息)
- ACCEPT:允许
示例
//开启web服务端口(80)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
//开启FTP服务端口
iptables -A INPUT -p tcp --dprot 21 -j ACCEPT
//只允许某个ip可以SSH连接服务器
iptables -A INPUT -s 192.168.0.2 -p tcp --dport 22 -j ACCEPT
//删除规则
iptables -D INPUT -p tcp --dport 21 -j ACCEPT
//也可以先获取行号,再通过行号删除规则
iptables -L INPUT --line-number
iptables -D INPUT 1
定义完策略过后需要执行iptables-save保存
netstat主要是用来查看网络及端口使用情况
常用参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到