MCBBS好像又奇葩了,我一修改格式就完全乱了。。。
不改了,SSH拼写问题别回复了
详情可以在SKYCATCHER大大的这个帖子看到
我只负责教大家iptables,windows的问题自己找别人去
我使用的系统:ubuntu 14.04
打开终端【ssh
先输入
- iptables -L -n
如果你安装系统选择了启动防火墙【windows azure这些提供商是强制启动的】
且没有进行改动,提示的信息应该是这样的
- 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
- Chain RH-Firewall-1-INPUT (0 references)
- target prot opt source destination
- ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
- ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
- ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
- ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
- ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
- ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
- ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
- ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
- REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
我们可以看见它默认开放了22【shh端口】80【网页端口】25【stmp端口】
若你没有启动防火墙则是
- 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
可以看到,没有添加一个规则。
TIP:若你服务器没有打开防火墙,且服务器是远程的,要注意不要贸然打开防火墙。后果。嘻嘻
嗯,windows azure提供的linux系统,一开始是打开防火墙的【我一开始不知道,于是我的minecraft服务器就开在80端口了= =】
怎么关闭呢?
关闭防火墙
- ufw disable
卸载怎么办?
- apt-get remove iptables
反正我的要加sudo。这是以root用户的身份强制执行
如果你的系统原本就没有防火墙【无良啊】
怎么办?
安装咯
- apt-get install iptables
好了,切回正题
你们想自己设置?那好吧,用这个指令
- iptables -F
这个可以清楚所有预设的规则。也就是说22,25,80也连接不上了。远程用户谨慎进行。
好吧,你的iptables发现了很多其他规则?那应该是被动过手脚【无良
你又不想清除所有规则?
那么,看下面的
- iptables -X
好吧,你用错指令了?
这还不算晚,,你还没保存呢
让我们重启下就一切都会好了
怎么保存设置?
- /etc/rc.d/init.d/iptables save
为啥会有这种代码?我怎么知道= =
然后让我们重启防火墙,让他生效
- service iptables restart
配置:
好了,终于到了配置iptables了。。。。
想要安全点?
- iptables -p INPUT DROP
控制流出的数据
你可以把DROP改成ACCEPT。你看下面吧,你这么做本帖就没意义了
- iptables -p OUTPUT ACCEPT
ACCEPT什么意思?同意啊。。。【通过】。再看看上面的吧。
最后一个代码,原理同上
- iptables -p FORWARD DROP
你前面清除了所有规则,你现在用第一条,你就完蛋了,找客服去吧。886
下面是两条命令,让SHH可以登录的咯
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
你要开MINECRAFT服务器?你把OUTPUT的规则改成DROP了?
好吧,我们得加个规则了。允许25565端口通过【丧心病狂的人自己想吧= =很简单的】
- iptables -A OUTPUT -p tcp --sport 25565 -j ACCEPT
我来给个格式吧,
- iptables -A [INPUT/OUTPUT/FORWARD] -p [tcp/udp] --[OUTPUT用sport,INPUT用dport] -j [ACCEPT/DROP]
对了,有一个不得不说的
要允许PING包的通过的话,用以下指令
- iptables -A OUTPUT -p icmp -j ACCEPT
- iptables -A INPUT -p icmp -j ACCEPT
但是我还是建议不要打开。许久之前,DDOS都是给服务端发送最大大小的PING包以达到搞崩服务器的目的。
更加严密的限制:
限制登录SHH的IP
- iptables -A INPUT -s [ip] -p tcp --dport 22 -j ACCEPT
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白名单
举个栗子:
- iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 25565 -j ACCEPT
这样就只有内网用户可以连接了、 = -
也可以做黑名单
栗子:
- iptables -A INPUT -s 127.0.0.1 -p tcp -dport 25565 -j DROP
好吧,到这里终于有FORWARD规则的用处了咯= =
这是转发的规则
把FORWARD设置成DROP再来吧= =
- iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
然后防止ddos攻击
- iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
- iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
意思就是他发了10个ping包之后。每秒只允许通过一个。
然后就是还是防范的
禁止非法链接
- iptables -A INPUT -m state --state INVALID -j DROP
- iptables -A OUTPUT -m state --state INVALID -j DROP
- iptables-A FORWARD -m state --state INVALID -j DROP
- iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
然后
The end~
注释:
由于udp按道理来说不常用(至少mc用不上),所以我就不讲了咯..