分享

Linux防火墙Iptables设置

 KILLKISS 2016-07-04
导读:虽然我们并不能完全阻止攻击行为,但一些安全工作还是必须要做的。在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 (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
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 ACCEPT
iptables -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 ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
开启FTP端口:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -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 ACCEPT
iptables -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/(bit数/32)
举个例子,32位系统512M内存的服务器,就这样计算:
512*1024*1024/16384/(32/32)=32768
防止SYN攻击(轻量级):
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
对于不管来自哪里的Ip碎片都进行控制,允许每秒通过100个碎片:
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
ICMP包通过的控制,防止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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多