Ubuntu下iptables使用记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下iptables使用记录相关的知识,希望对你有一定的参考价值。

 Ubuntu下iptables使用记录

这里参考了百度百科还有Ubuntu论坛  http://wiki.ubuntu.org.cn/UbuntuHelp:IptablesHowTo/zh

这里参考了博主just_young大湿的文章  http://blog.csdn.net/just_young

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  


sudo iptables -A INPUT -p tcp -i eth1 --dport 2181 -j DROP  (禁止2181,且网卡为eth1)

5.阻断其他流量




6. iptables可以方便的配置多个端口。其中根据端口的连续性,又可分为连续端口配置和不连续端口配置。


1、连续端口配置


如:


sudo iptables -A INPUT -p tcp –dport 21:25 -j DROP

注:这里是英文状态下的冒号。



2、使用multiport参数配置不连续端口


如:


sudo iptables -A INPUT -p tcp -m multiport –dport 21:25,135:139 -j DROP



sudo iptables -A INPUT -p tcp -m multiport -i eth1  --dport 2181:2183,18087,56370:56480  -j DROP


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 eth0  

iface eth0 inet dhcp  

pre-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 ACCEPT  

sudo 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 ACCEPT  

sudo 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的请求通过过滤规则。


本文出自 “隐隐的泪” 博客,请务必保留此出处http://lijuntao.blog.51cto.com/11691147/1949731

以上是关于Ubuntu下iptables使用记录的主要内容,如果未能解决你的问题,请参考以下文章

Linux运维Ubuntu18.04设置端口开放(iptables)

Linux运维Ubuntu18.04设置端口开放(iptables)

IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙

Ubuntu下使用UFW配置防火墙(简化iptables的操作)

IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙

在ubuntu虚拟系统下实现iptables的配置,为啥输入命令后全部显示“找不到命令”呢?