Ubuntu下iptables使用记录

来源:互联网 发布:制作app软件 编辑:程序博客网 时间:2024/05/16 12:59

由于iptables的命令偏长,所以记录一下我用到的命令,先记录一点,以后边学边记~

这里参考了百度百科还有Ubuntu论坛

1.查看iptables表项

sudo iptables -L -v
默认情况下,ubuntu下的iptables是允许任意流量进入的。所以刚开始时会看到如下的表项。

解释下target,防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除],QUEUE[排队],或者 RETURN[返回]。chain是链的意思,INPUT链表示入流量。

2.允许ssh协议通过eth0网卡的ssh端口(默认为22)进入服务器

sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT 

根据我的理解解释一下命令:

(1)-A应该是append的意思,即在iptables的过滤表项中的末尾添加表项;

(2)INPUT是指的是进入服务器的流量;

(3)-p代表的是protocol,即协议;

(4)-i指定规则应用的网卡;

(5)--dport指定规则应用的端口;

(6)-j代表目标跳转

ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。

3.允许tcp协议通过eth0网卡的80端口进入服务器
sudo iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
4.允许lo协议进行回环
sudo iptables -A INPUT -i lo -j ACCEPT

5.阻断其他流量

sudo iptables -A INPUT -i eth0 -j DROP
这里把除上述规则以外经过eth0进入服务器的IP包都丢弃了。

这时可查看我们的iptables列表如下所示,其中packets表示收到的IP包数量,bytes是字节数。


6.向iptables中插入规则

iptables是从前往后进行规则匹配的,如果有一条规则匹配则不会匹配后面的规则。所以如果我们在添加drop规则后,发现还要accept新的规则,则需要使用插入。

允许https协议的规则插入如下所示,它允许IP包经过eth0网卡和443端口,进入服务器

sudo iptables -I INPUT 3 -p tcp -i eth0 --dport 443 -j ACCEPT
7.插入icmp协议通过规则,即允许ping该主机
sudo iptables -I INPUT 3 -p icmp -i eth0 -j ACCEPT
8.使用如下的命令可以保存iptables的配置

机器重启的时候会将配置好的iptables表项清空,所以要做保存,否则下次不好恢复,可使用如下的命令进行保存操作。

sudo iptables-save > ~/iptables.up.rules
用vi查看该文件如下所示:


然后再修改/etc/network/interfaces文件,添加最后一行代码即可

auto eth0iface eth0 inet dhcppre-up iptables-restore < ~/iptables.up.rules

9.删除一个iptables规则

可通过如下的命令来查看目前iptables的规则,如下所示,多了一行num,一会儿可通过num来指定要删除的规则。

sudo iptables -L -v --line-number


然后使用如下命令删除你想要删除的那一条规则,这里我删除的是第一条规则

sudo iptables -D INPUT 1

10.允许DNS请求

使用如下的命令可允许DNS查询请求和结果通过iptables过滤规则。

sudo iptables -I INPUT 1 -p udp -i eth0 --sport 53 -j ACCEPTsudo iptables -I INPUT 1 -p udp -i eth0 --dport 53 -j ACCEPT

DNS有时候也会使用tcp因此可再加如下两条命令

sudo iptables -I INPUT 1 -p tcp -i eth0 --sport 53 -j ACCEPTsudo iptables -I INPUT 1 -p tcp -i eth0 --dport 53 -j ACCEPT

11.允许本机访问HTTP/HTTPS/SSH

sudo iptables -I INPUT 7 -i eth0 -p tcp -m multiport --sports 22,80,443 -j ACCEPT
这条语句的意思是允许远程主机端口号为22,80和443的请求通过过滤规则。





0 0