×

BandwagonHost VPS配置记录

96
Herbertzz
2016.06.07 23:29* 字数 647

为了安装SS,特意买了BandwagonHost的VPS玩玩。顺便学习使用shell

1.安装系统

KiwiVM - Install new OS - centos-6-x86_64-minimal

2.配置ssh

目的:避免被别人暴力破解ssh,增强安全性。设置完成之后,无需密码即可登录,方便。

2016.06.07从早上开始弄这个,到现在23:09:10,终于搞定了。刚开始什么都不懂,就按照完善别人的教程弄。但是说的都很模糊,最初的那篇教程,没说要创建普通账户,我就以为我那里参数没设置好,按照教程又调了好几次,一早上就浪费了。实在没没办法查google,发现另一篇文章说ssh对权限的要求很严格,必须要普通账户,权限要设置好,但这篇文章权限赋值说的又很模糊,我又查啊查。参数和权限都搞定了,ssh反复提示我这两个错误connection closed by xxxxPermission denied (publickey,gssapi-keyex,gssapi-with-mic)晚上就耗在了这了。google和百度,查不到有用的资料,一次偶尔间,我重新用ssh-keygen生成公钥和私钥居然成功了。我前面用ssh-keygen -t rsa -f band -C "VPS"就不行,这是为什么?明天在研究下

#本地主机操作

#创建ssh配置文件,方便登陆
mkdir .ssh
cd .ssh
vim config
  #语法如下
  Host testhost
    HostName 8.8.8.8
    Port 2222
    User foo
#创建ssh公钥和私钥
ssh-kenygen
#远程服务器操作

#登入root帐号
ssh testhost_root
#创建普通帐号
useradd -m test
passwd test
#备份sshd_config
cd /etc/ssh/
cp sshd_config sshd_config_backup
#修改sshd_config
vi sshd_config
  #去掉这几项的#
  HostKey /etc/ssh/ssh_host_rsa_key
  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys
wq保存
#重启sshd
service sshd restart
#切换到test账户
su test
cd ~
mkdir .ssh
#退出远程服务器
exit
#本地主机操作

#上传公钥
cd .ssh
scp id_rsa.pub testhost:~/.ssh/
#远程服务器操作

#登陆test帐号
ssh testhost_test
mv .ssh/id_rsa.pub authorized_keys
#权限
chown -R test:test /home/test
chmod 700 /home/test
chmod 700 /home/test/.ssh
chmod 644 /home/test/.ssh/authorized_keys //公钥文件的所有权限

ssh连接上去以后,一直提示以下警告:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

google得到的答案是由于没有找到对应的语言环境导致的.参考日语设置方法

#解决方法

vi /etc/sysconfig/i18n
#添加LC_CTYPE
LC_CTYPE="en_US.UTF-8"
:wq #保存
#更改立即生效
source /etc/sysconfig/i18n
#查看是否更改了
echo #LC_CTYPEE

3.SSH安全配置

ssh testhost_test
su
vi /etc/ssh/sshd_config
  #禁止ROOT用户登陆
  PermitRootLogin no 
  #禁止空密码登陆
  PermitEmptyPasswords no
  #禁用用户的 .rhosts 文件
  IgnoreRhosts yes
  #禁用基于主机的身份验证
  HostbasedAuthentication no
  #设置自动掉线
  ClientAliveInterval 600 # (Set to 600 seconds = 10 minutes) 10分钟无操作自  动掉线
  ClientAliveCountMax 0
  #禁止使用密码登陆
  PasswordAuthentication no
  #检查登录日志
  LogLevel DEBUG
#系统更新
su root
yum update -y
#安装git
yum install git
#安装vim
  vim编辑器需要安装三个包:
     vim-enhanced
     vim-minimal
     vim-common
  #查询vim缺少什么包
  rpm -qa|grep vim
  #我安装了这个,其他包也自动补齐了
  yum -y install vim-enhanced
#安装fail2ban
su test
#git下载fail2ban
git clone https://github.com/fail2ban/fail2ban.git
#安装fail2ban
cd fail2ban
su root
python serup.py install
cp files/redhat-initd /etc/init.d/fail2ban
chmod 755 /etc/init.d/fail2ban
chkconfig --add fail2ban
chkconfig --level 35 fail2ban on
#配置fail2ban
vim /etc/fail2ban/jail.conf
  [ssh-iptables]
  enabled = true
  filter = sshd
  action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com, sendername="Fail2Ban"]
  logpath = /var/log/secure
  maxretry = 2
  [ssh-ddos]
  enabled = true
  filter = sshd-ddos
  action = iptables[name=ssh-ddos, port=ssh,sftp protocol=tcp,udp]
  logpath = /var/log/messages
  maxretry = 2
# mkdir
mkdir -p /var/run/fail2ban
# 重启服务
service fail2ban restart
# 查看服务状态
service fail2ban status

防火墙配置

iptables -A #向规则链中添加一条规则,默认被添加到末尾
iptables -L #列出iptables规则
iptables -F #清除iptables内置规则
iptables -X #清除iptables自定义规则
iptables -Z #将所有的chain的计数和流量统计归零
# 可以加入-n查看
netstat -tunlp #检测又哪些端口开放着

#防火墙iptables规则
  #清空iptables中的所有规则
  iptables -F
#1.屏蔽最常见的攻击
  #NONE 包(所有标识bit都没有设置)主要是扫描类的数据包
  iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

  #防止sync-flood 攻击
  iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

  #ALL包(所有的标注bit都被设置了)也是网络扫描的数据包
  iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
 
#2.为相应的服务开发对应的端口
  #接受本机localhost的任何请求,否则,数据库连接等将无法工作
  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -p tcp --dport xxx -j ACCEPT  # SSH xxx为端口号
  iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # HTTP
  iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS

#3.通用规则
  #允许所有从服务器端发起的连接,由此返回的响应数据应该是允许的
  iptables -I INPUT -m state  --state ESTABLISHED,RELATED -j ACCEPT

  设置缺省的策略:屏蔽任何进入的数据请求,允许所有从Server发出的请求
  iptables -P OUTPUT ACCEPT
  iptables -P INPUT DROP

#保存
service iptables save
#重新启动iptables防火墙
service iptables restart

对于Web服务来说,需要开放80端口,如果是HTTPS/SSL协议的话,还需用开放443端口

对于Mail服务来说,由于涉及SMTP, POP3, IMAP协议,需要开放的端口如下:
SMTP : 25 Secure SMTP:465 POP3: 110 Secure POP3: 995 IMAP: 143 IMAP over SSL: 993

对于FTP服务来说,需要开放 20, 21两个端口

3. 一键安装SS

BandwagonHost有自带的一键安装脚本
Shadowsocks Server

Web
Web note ad 1