iptable防火墙,怎样使用参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptable防火墙,怎样使用参数相关的知识,希望对你有一定的参考价值。
参考技术A 第一步:屏蔽最常见的攻击缺省情况下,CentOS的iptables的设置是允许任何数据通过的。
首先要清空iptables中的所有的规则:
复制代码代码如下:
iptables-F
然后我们加上阻止简单扫描和攻击的规则
复制代码代码如下:
iptables-AINPUT-ptcp--tcp-flagsALLNONE-jDROP#NONE包(所有标识bit都没有设置)主要是扫描类的数据包
iptables-AINPUT-ptcp!--syn-mstate--stateNEW-jDROP#防止sync-flood攻击
iptables-AINPUT-ptcp--tcp-flagsALLALL-jDROP#ALL包(所有的标注bit都被设置了)也是网络扫描的数据包
关于sync-flood,请参照wikipedia的解释。
第二步:为相应的服务开放对应的端口
首先我们应该接受本机localhost的任何请求,否则,数据库连接等将无法工作
1:
iptables-AINPUT-ilo-jACCEPT
对于不同的服务需要开放不同的端口
复制代码代码如下:
iptables-AINPUT-ptcp--dport22-jACCEPT#SSH
iptables-AINPUT-ptcp--dport80-jACCEPT#HTTP
iptables-AINPUT-ptcp--dport443-jACCEPT#HTTPS
iptables-AINPUT-ptcp--dport25-jACCEPT#SMTP
iptables-AINPUT-ptcp--dport465-jACCEPT#SecureSMTP
iptables-AINPUT-ptcp--dport110-jACCEPT#POP3
iptables-AINPUT-ptcp--dport995-jACCEPT#SecurePOP3
iptables-AINPUT-ptcp--dport143-jACCEPT#IMAP
iptables-AINPUT-ptcp--dport993-jACCEPT#SecureIMAP
第三步:加上通用的规则
首先要允许所有从服务器端发起的连接,由此返回的响应数据应该是允许的!比如VPS发起的yumupdate,必须要允许外部的update数据进来
复制代码代码如下:
iptables-IINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
最后,设置缺省的策略:屏蔽任何进入的数据请求,允许所有从Server发出的请求
复制代码代码如下:
iptables-POUTPUTACCEPT</p>
<p>iptables-PINPUTDROP
至此,规则设置完毕
第四步:保存设置
首先通过下面的命令查看一下我们的设置是否正确!
复制代码如下:
iptable-L-n
确认没有问题后,执行下面的命令
复制代码代码如下:
serviceiptablessave
执行上述命令后,相应的规则会写入/etc/sysconfig/iptables这个文件,你可以检查一下看看。
最后执行
复制代码代码如下:
serviceiptablesrestart.
重新启动iptables防火墙,以使上述设置生效。
最佳的方法:
为了更方便的修改和维护自己的iptables的设置,我一般是把所有的iptables的设置先写到一个单独文件中,测试没有问题后。然后再保存到iptable的配置文件中。
下面是我自己的iptables文件~/script/firewall.sh
复制代码代码如下:
#!/bin/bash
#Asimpleiptablesfirewallconfiguration</p>
<p>PATH=/sbin:/bin:/usr/sbin:/usr/bin;exportPATH</p>
<p>#flush/eraseoriginalrules
iptables-F#清除所有已制定的rule
iptables-X#清除用户自定义的chain/table
iptables-Z#将所有的chain的计数和流量统计归零</p>
<p>#Acceptlocalhostconnetting,nomatterwhatitis
iptables-AINPUT-ilo-jACCEPT</p>
<p>#Acceptanyresponsepackagewhichisinitiatedfrominside
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT</p>
<p>#blockmostcommonnetworkattacks(reconpacketsandsyn-floodattack)
iptables-AINPUT-ptcp--tcp-flagsALLNONE-jDROP
iptables-AINPUT-ptcp!--syn-mstate--stateNEW-jDROP
iptables-AINPUT-ptcp--tcp-flagsALLALL-jDROP</p>
<p>#openportsfordifferentservices
iptables-AINPUT-ptcp--dport22-jACCEPT#SSH
iptables-AINPUT-ptcp--dport80-jACCEPT#HTTP
#iptables-AINPUT-ptcp--dport443-jACCEPT#HTTPS
#iptables-AINPUT-ptcp--dport25-jACCEPT#SMTP
#iptables-AINPUT-ptcp--dport465-jACCEPT#SecureSMTP
#iptables-AINPUT-ptcp--dport110-jACCEPT#POP3
#iptables-AINPUT-ptcp--dport995-jACCEPT#SecurePOP</p>
<p>#ICMPconfiguration
#TopreventICMPDDOS,wedonotallowICMPtype8(echo-request)orlimitthisrequestwith1/second
#someICMPrequestsareallowed.
icmp_type="0341112141618"
forticmpin$icmp_type
do
iptables-AINPUT-picmp--icmp-type$ticmp-jACCEPT
done
#iptables-AINPUT-picmp--icmp-type8-mlimit--limit1/second-jACCEPT</p>
<p>#defaultpolicies
iptables-POUTPUTACCEPT
iptables-PINPUTDROP</p>
<p>#saveto/etc/sysconfig/iptables
/etc/init.d/iptablessave
你可以根据你的需要进行相应的修改。
iptables基本使用
iptables是linux系统下的一款防火墙管理工具,也包含大量的参数,不过对于日常的防火墙策略来讲,只需要掌握常用的参数就可以了。
首先查看是否安装了iptables,没有安装的话需要先安装iptables:
service iptables status
yum install -y iptables
yum install iptables -y -services
安装之后还需要禁用掉firewalld防火墙,现在大部分使用的都是firewalld防火墙。
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewall
常用的参数和作用:
接下来配置一下防火墙策略:
iptables -L -n 查看已有的防火墙规则链:
清空已有的防火墙规则链 iptables -F:
把规则链的默认策略规则为拒绝,也就关闭了22端口,使用SSH登录会直接断开链接
iptables -P INPUT DROP
拒绝所有规则之后,还需要添加一些新的规则,比如只开放22、80端口。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
或者添加拒绝访问本机1000-1024端口的策略:
也可以添加置顶主机不能访问本机80端口的配置:
删除一条已有的规则:
如果要删除第一条规则可以这样:
要是规则过多的话,只需要把添加规则的 -A改成-D就可以了。
最基本的使用大致就是这样了,最后不要忘了保存配置:
以上是关于iptable防火墙,怎样使用参数的主要内容,如果未能解决你的问题,请参考以下文章