本帖最后由 z25096708 于 2015-8-3 11:23 编辑

MCBBS好像又奇葩了,我一修改格式就完全乱了。。。
不改了,SSH拼写问题别回复了


详情可以在SKYCATCHER大大的这个帖子看到

我只负责教大家iptables,windows的问题自己找别人去


我使用的系统:ubuntu 14.04


打开终端【ssh
先输入
  1. iptables -L -n
复制代码
查看iptables的情况
如果你安装系统选择了启动防火墙【windows azure这些提供商是强制启动的】
且没有进行改动,提示的信息应该是这样的
  1. Chain INPUT (policy ACCEPT)

  2. target prot opt source destination

  3. Chain FORWARD (policy ACCEPT)

  4. target prot opt source destination

  5. Chain OUTPUT (policy ACCEPT)

  6. target prot opt source destination

  7. Chain RH-Firewall-1-INPUT (0 references)

  8. target prot opt source destination

  9. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

  10. ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255

  11. ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0

  12. ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0

  13. ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353

  14. ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631

  15. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

  16. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

  17. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80

  18. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25

  19. REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
复制代码

我们可以看见它默认开放了22【shh端口】80【网页端口】25【stmp端口】

若你没有启动防火墙则是
  1. Chain INPUT (policy ACCEPT)

  2. target prot opt source destination

  3. Chain FORWARD (policy ACCEPT)

  4. target prot opt source destination

  5. Chain OUTPUT (policy ACCEPT)

  6. target prot opt source destination
复制代码

可以看到,没有添加一个规则。

TIP:若你服务器没有打开防火墙,且服务器是远程的,要注意不要贸然打开防火墙。后果。嘻嘻

嗯,windows azure提供的linux系统,一开始是打开防火墙的【我一开始不知道,于是我的minecraft服务器就开在80端口了= =】
怎么关闭呢?
关闭防火墙
  1. ufw disable
复制代码

卸载怎么办?
  1. apt-get remove iptables
复制代码
一般来说,你需要在这俩个指令前加sudo。sudo后有空格。不需要大写。

反正我的要加sudo。这是以root用户的身份强制执行
如果你的系统原本就没有防火墙【无良啊】
怎么办?
安装咯
  1. apt-get install iptables
复制代码



好了,切回正题
你们想自己设置?那好吧,用这个指令
  1. iptables -F
复制代码
若是提示限权不足,请在前面加sudo。下面不说这个了
这个可以清楚所有预设的规则。也就是说22,25,80也连接不上了。远程用户谨慎进行。

好吧,你的iptables发现了很多其他规则?那应该是被动过手脚【无良
你又不想清除所有规则?
那么,看下面的
  1. iptables -X
复制代码
清除所有自定义规则。
好吧,你用错指令了?
这还不算晚,,你还没保存呢
让我们重启下就一切都会好了
怎么保存设置?
  1. /etc/rc.d/init.d/iptables save
复制代码
是的,就是这个代码。
为啥会有这种代码?我怎么知道= =
然后让我们重启防火墙,让他生效
  1. service iptables restart
复制代码
妈呀,我用不了这个指令。这是一些残缺系统会遇到的【无良】,那就重新安装iptables吧。





配置:
好了,终于到了配置iptables了。。。。
想要安全点?
  1. iptables -p INPUT DROP
复制代码
用这个指令吧。拒绝任何在规则以外的链接。DROP是啥意思?扔掉咯
控制流出的数据
你可以把DROP改成ACCEPT。你看下面吧,你这么做本帖就没意义了
  1. iptables -p OUTPUT ACCEPT
复制代码
意思是不在OUTPUT规则里的数据,全部可以通过。
ACCEPT什么意思?同意啊。。。【通过】。再看看上面的吧。
最后一个代码,原理同上
  1. iptables -p FORWARD DROP
复制代码
好吧,警告:用SHH登录的千万别用= =
你前面清除了所有规则,你现在用第一条,你就完蛋了,找客服去吧。886
下面是两条命令,让SHH可以登录的咯
  1. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
复制代码
看到数字相信大家都明白了。不过那些丧心病狂的改了端口的人,那就修改下数字就好了。
你要开MINECRAFT服务器?你把OUTPUT的规则改成DROP了?
好吧,我们得加个规则了。允许25565端口通过【丧心病狂的人自己想吧= =很简单的】
  1. iptables -A OUTPUT -p tcp --sport 25565 -j ACCEPT
复制代码
【设置成APPECT的别蛋疼用了啊。。。】
我来给个格式吧,
  1. iptables -A [INPUT/OUTPUT/FORWARD] -p [tcp/udp] --[OUTPUT用sport,INPUT用dport] -j [ACCEPT/DROP]
复制代码
大家自己设置把。
对了,有一个不得不说的
要允许PING包的通过的话,用以下指令
  1. iptables -A OUTPUT -p icmp -j ACCEPT
复制代码
【你把OUTPUT设置成ACCEPT就不用了】
  1. iptables -A INPUT -p icmp -j ACCEPT
复制代码
【把INPUT设置成ACCEPT就不用了】
但是我还是建议不要打开。许久之前,DDOS都是给服务端发送最大大小的PING包以达到搞崩服务器的目的。

更加严密的限制:
限制登录SHH的IP
  1. iptables -A INPUT -s [ip] -p tcp --dport 22 -j ACCEPT
复制代码
ip改成你的IP。方括号去掉,上文全部方括号都要去掉。又不是搞数据库
ip可以是这样的格式:42.159.197.0/24
这样代表允许42.159.197.1-42.159.197.255全部的ip
【AB段是42.159的都是windows azure的ip】
24是子网掩码
设置了这里上面就别设置ssh登录的了。
因为那里不限制ip
生效的话请保存后重启防火墙
【以上方法建议天朝不要用,因为天朝的动态IP,,,,】
当然这个东东也可以用来弄IP白名单
举个栗子:
  1. iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 25565 -j ACCEPT
复制代码


这样就只有内网用户可以连接了、 = -
也可以做黑名单
栗子:
  1. iptables -A INPUT -s 127.0.0.1 -p tcp -dport 25565 -j DROP
复制代码







好吧,到这里终于有FORWARD规则的用处了咯= =
这是转发的规则
把FORWARD设置成DROP再来吧= =

  1. iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
复制代码
以上代码是扔掉没用的TCP包。
然后防止ddos攻击
  1. iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
复制代码
处理IP。每秒100个。单位不能少咯。
  1. iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
复制代码
这个是过滤icmp【就是ping的包】。每秒仅允许一个。开启限制的触发点是10个之后。
意思就是他发了10个ping包之后。每秒只允许通过一个。



然后就是还是防范的
禁止非法链接

  1. iptables -A INPUT -m state --state INVALID -j DROP

  2. iptables -A OUTPUT -m state --state INVALID -j DROP

  3. iptables-A FORWARD -m state --state INVALID -j DROP
复制代码
允许现在已和服务器建立的链接
  1. iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  2. iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
复制代码


然后
The end~


注释:
由于udp按道理来说不常用(至少mc用不上),所以我就不讲了咯..