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的请求通过过滤规则。
原文链接:https://www.f2er.com/ubuntu/352070.html