Rexdf

The devil is in the Details.

三分钟新建shadowsocks服务器

| Comments

Shadowsocks速度真的是没话说啊!我自己也尝试折腾过l2tp/ipsec,在winxp/win8.1下面均可以登陆,但是非常不稳定,大约浏览2个页面链接就会自动断开,大约是要配置iptables来忽略某些干扰包,但是据说速度并不佳所以放弃了。最重要的还是我发现在Ubuntu下面、Android下面无论如何也是连不上我自己配置的l2tp/ipsec的,只有win是能连上,还不稳定。

快速搭建shadowsocks服务器一来是因为万一RP不高被盯上,更重要的是可以随时删掉服务器来节省费用。DO上面是按小时计费的,所以每新建一个服务器用不用至少都是略高于一个小时的费用的。shadowsocks和主服务器分离也是为安全出发考虑。

下面是配置笔记,主要注重安全性。因为并不复杂,涉及密码较多,故没有做成脚本。

新建主机

这个无需赘言,这里新建的是LEMP主机。用完随手删掉主机。

安装shadowsocks

apt-get update && apt-get -y upgrade
apt-get install python-pip python-m2crypto supervisor iptables-persistent
pip install shadowsocks

配置shadowsocks

/etc/shadowsocks.jsonMyBlog
nano /etc/shadowsocks.json
{
"server":"my_server_ip",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":600,
"method":"aes-256-cfb",
"fast_open": true,
"workers": 1
}
/etc/supervisor/conf.d/shadowsocks.confMyBlog
nano /etc/supervisor/conf.d/shadowsocks.conf
[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autorestart=true
user=nobody
/etc/default/supervisorMyBlog
nano /etc/default/supervisor
ulimit -n 51200

启动shadowsocks

service supervisor start
supervisorctl reload

现在你就可以使用了,下面的属于安全方面的优化。不优化,使用起来也是没有问题,大不了随手删掉重建一个,所以大家都说一键安装shadowsocks的。

系统安全设置

adduser xxx
visudo
xxx    ALL=(ALL:ALL) ALL

service nginx stop
update-rc.d -f nginx remove
service mysql stop
update-rc.d -f mysql remove
service cron stop
nano /etc/init/mysql.conf #注释掉start on一行

ssh配置

注意下面,否则只能Web页面VNC登陆改配置 把root下面.ssh/authorized_keys复制到~/.ssh下面,同时权限要正确。 可以先su xxx,然后执行ssh xxx@127.0.0.1,会自动生成.ssh目录,然后拷贝authorized_keys。

/etc/ssh/sshd_configMyBlog
nano /etc/ssh/sshd_config
Port 1025-65536 #自己在范围内随便选一个数字即可
PermitRootLogin no
AllowUsers xxx
PermitEmptyPasswords no
PasswordAuthentication no
UsePAM no

重启ssh服务器

service ssh restart

这个问题吓了我一跳,如此有历史的低级攻击方式,现在还是规模很大,每次主机新建1个小时内就开始了,一大批的来自世界各地的攻击(我还是安静模式,系统只开了ssh端口和shadowsocks端口)。下面地方有tricks,我没有说明。

/etc/hosts.allowMyBlog
nano /etc/hosts.allow
sshd: your_ip/mask
/etc/hosts.denyMyBlog
nano /etc/hosts.deny
sshd:ALL

iptables配置

下面这个不行,socks5的链接是双向的,浏览器发起的http、https链接会在动态端口范围内接收数据(49152 - 65535),所以input需要非常大的范围的,白名单制限制过大。

错误的iptablesMyBlog
iptables -P INPUT DROP
iptables -A INPUT -i eth0 -p tcp -s your_ip/mask --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -s your_ip/mask --dport 8388 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

只采用黑名单制,下面的可行

/etc/iptables/rules.v4MyBlog
nano /etc/iptables/rules.v4
-A INPUT ! -s your_ip/mask -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j DROP
-A INPUT ! -s your_ip/mask -i eth0 -p tcp -m tcp --dport 8388 -m state --state NEW,ESTABLISHED -j DROP

重新载入iptables规则

service iptables-persistent restart

内核参数调整

/etc/sysctl.confMyBlog
nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
fs.file-max = 51200
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

重新载入配置文件,使配置生效。

sysctl -p

维护笔记

所有端口

netstat -anltp | grep "LISTEN"

所有链接

lsof -i

nginx开机启动

update-rc.d -f nginx disable
update-rc.d nginx defaults

Comments