iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
语法: iptables [options] [参数]
Options:
-n:不针对IP反解析主机名
-v:显示更详细的信息
-t:指定表(iptables命令默认作用于filter表,如iptables -t filter/nat -nvL)
-L:显示信息
-F:清空所有规则
-A/D:=add/delete,添加/删除一条规则
-I:插入一条规则
-p:指定协议,可以是tcp,udp或icmp
--sport:跟-p一起使用,指定源端口
--dport:跟-p一起使用,指定目标端口
-s:指定源IP(可以是一个IP段)
-d:指定目的IP(可以是一个IP段)
-j:后面跟动作(ACCEPT表示允许包;DROP表示丢掉包;REJECT表示拒绝包)
-i:指定网卡
-Z:把包以及流量计数器清零(清空表中pkts及bytes两列数据)
-P:=pre,预设策略

iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
查看规则:iptables -nvL(重启 service iptables restrat,也可恢复为/etc/sysconfig/iptables中保存的配置)

iptables 删除端口 iptables delete_操作系统

iptables规则配置文件:/etc/sysconfig/iptables
清空规则:iptables -F

iptables 删除端口 iptables delete_iptables 删除端口_02

注: 该命令不会清除配置文件内的规则!当更改规则后需要执行命令‘service iptables save’将其保存到配置文件。

增加一条规则(-A/I):iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP/REJECT(DROP直接丢弃,REJECT查看该包并返回拒绝信息)

iptables 删除端口 iptables delete_前端_03

说明: 增加一条规则,当IP~192.168.188.1、协议为tcp、端口为‘1234’的向IP~192.168.188.128、端口为80的机器发送包时执行操作:drop(丢掉包)。
注: 该命令也可以把-A换成-I,两者的区别类似于排队和插队,两种方法插入的规则优先级不同。-I插入到表中第一行,如iptables -I INPUT -p tcp --dport 80 -j DROP。-A是放在表中最后一行。放在前面的命令会优先执行。
删除一条规则(-D)
方法1: 知道规则的内容:iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

iptables 删除端口 iptables delete_iptables 删除端口_04

注: 要删除一条规则时,必须和插入的规则一致,也就是说,两条iptables命令除了-A/I和-D不一样外,其他地方都一样。

方法2: 忘记规则内容
首先所以用以下命令查看规则序号:iptables -nvL --line-number

iptables 删除端口 iptables delete_ViewUI_05

然后再执行删除命令:iptables -D INPUT 序号

iptables 删除端口 iptables delete_ViewUI_06

更改预设策略(-P):iptables -P OUTPUT DROP

iptables 删除端口 iptables delete_开发工具_07

 

注意: 尽量不要随意更改该配置,尤其是在进行远程登录时,一旦执行该命令后将会断开连接。这个策略设定后只能用需要回到主机上执行命令:‘iptables -P OUTPUT ACCEPT’来恢复成原始状态,这个规则不要随意更改,保持默认就好。

扩展
1. selinux教程:http://os.51cto.com/art/201209/355490.htm
2.selinux pdf电子书:https://pan.baidu.com/s/1jGGdExK

 

iptables filter表小案例

放行80、21、22端口。22端口指定ip段可访问,拒绝其他网段。

 

vim /usr/local/sbin/iptables.sh
 
#!/bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp —dport 21 -j ACCEPT
 
sh /usr/local/sbin/iptables.sh

 

其中

$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT

设置了INPUT、OUTPUT、FORWARD的默认规则。

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT表示允许以下端口,在端口状态为ESTABLISHED(保持连接状态)及RELATED(关联状态,在已有ESTABLISHED状态后,再产生一个与ESTABLISHED状态连接(有关系但不是其本身)之外的连接。)时,允许其通信的数据包通过。

icmp
iptables -I INPUT -p icmp --icmp-type 8 -j DROP

禁止外网ping本主机