导读:虽然我们并不能完全阻止攻击行为,但一些安全工作还是必须要做的。在Linux系统中,我们可以通过配置Iptabels来加强服务器的安全,配置Iptables有些复杂,但通过本文的讲解一步一步配置就不是很困难了。-虽然我们无法完全避免被攻击,但还是有必要对服务器进行一些安全设置。就像在寒冷的冬天里,虽然穿一件衣服也无法完全抵御寒冷,但总比裸奔要好得多吧?在Linux下对防火墙的配置,事实上就是编辑/etc/sysconfig/iptables文件,下面珲珲详细介绍。首先我们可以查看一下服务器各服务的端口是多少:netstat –apn检查Iptables是否安装:service iptables status如果提示为iptables:unrecognized service,则表示还没有安装,如果是Centos系统,请执行以下命令安装:yum install iptables如果是Debian系统,请执行以下命令安装:apt-get install iptables查看本机Iptables的设置情况:iptables -L -n如果提示:Chain INPUT target prot opt source destinationChain FORWARD target prot opt source destinationChain OUTPUT target prot opt source destination表示还没有设置Iptables,如果已经有设置规则,但需要重新设置过,可以通过以下命令清除旧的规则。清除预设表filter中的所有规则链的规则:iptables -F清除预设表filter中使用者自定链中的规则:iptables -X将指定链中所有规则的包字节计数器清零:iptables –Z允许本地回环接口:iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT允许已建立的或相关连的通行:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT允许访问22端口,即SSH端口,如果你的SSH端口有修改过,请将命令中的22替换成你的实际SSH端口号:iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT对于Web服务器,我们应该允许访问80端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT允许访问数据库:iptables -A INPUT -p tcp --dport 3306 -j ACCEPT开启邮件服务端口:iptables -A INPUT -p tcp --dport 110 -j ACCEPTiptables -A INPUT -p tcp --dport 25 -j ACCEPT开启FTP端口:iptables -A INPUT -p tcp --dport 21 -j ACCEPTiptables -A INPUT -p tcp --dport 20 -j ACCEPT如果你想允许用户Ping服务器,需要添加:iptables -A INPUT -p icmp -j ACCEPT开启DNS服务器端口:iptables -A INPUT -p udp --dport 53 -j ACCEPT在做NAT时,如果FORWARD默认规则是DROP,必须开启转发功能:iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A FORWARD -i eth1 -o eh0 -j ACCEPT下面进行一些安全的设置,虽然只是轻量级的防攻击,但还是有必要设置一下。打开syncookie:sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null设置默认TCP连接痴呆时长为10800秒,即3小时:sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=10800 &>/dev/null设置支持最大连接数,具体数值需要根据公式来计算,这里以2G内存的32位系统为例:sysctl -w net.ipv4.ip_conntrack_max=131072 &>/dev/null计算公式为:CONNTRACK_MAX = RAMSIZE/16384/举个例子,32位系统512M内存的服务器,就这样计算:512*1024*1024/16384/=32768防止SYN攻击:iptables -N syn-floodiptables -A INPUT -p tcp --syn -j syn-floodiptables -A syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURNiptables -A syn-flood -j REJECT对于不管来自哪里的Ip碎片都进行控制,允许每秒通过100个碎片:iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPTICMP包通过的控制,防止ICMP黑客攻击:iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT丢弃坏的TCP包:iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j LOG --log-prefix “New not syn:”iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP保存配置文件:service iptables save使用以下命令也可以保存:/etc/rc.d/init.d/iptables save禁止Iptables中未允许的规则访问:vi /etc/sysconfig/iptables修改以下参数::INPUT DROP [162:14797]:FORWARD DROP [0:0]:OUTPUT ACCEPT [144:22674]重启Iptables:service iptables restart设置开机自动启动:chkconfig iptables on至此,防火墙已经配置好了。在我们设置允许通过的端口时,可以根据自己的需要开放端口,例如DA面板的2222端口:iptables -A INPUT -p tcp --dport 2222 -j ACCEPT