站点图标 久久日记本

服务器简单的安全部署

很久没有迁移过服务器了,对这些实在谈不上用心,所以这次还是简单的折腾了一些时间。
这里以ubuntu为例,参考了一些文章做一下流程化的记录。

putty连接服务器:

1.创建新用户
adduser example_user  //添加新用户
adduser example_user sudo //新用户继承sudo权限
2.生成证书

使用 puttygen或者git bash生成key,

puttygen生成就不多说了,点点就行了,git bash输入命令

ssh-keygen //再输入密码就大可以生成了

不过用git bash生成的私钥还需要用puttygen转换一下才可以供后面的putty登录使用

3.上传证书

exit退出服务器,用example_user角色登录服务器。
切到自己的example_user根目录下,

mkdir .ssh

使用 Winscp 将刚才生成的证书公钥上传到.ssh文件夹,
然后:

sudo chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys

设一下权限。

/etc/ssh/sshd_config修改一下配置,允许证书登录:

这里使用vi打开文本编辑:

sudo vi /etc/ssh/sshd_config

修改配置文件

# Authentication:
...
PermitRootLogin no //不允许root账号登录
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no //禁用密码登录,不过建议在证书登录未设置好之前先不要关了,不然没救了。

重启ssh服务

sudo systemctl restart sshd //(CentOS 7, Debian 8, Fedora, Ubuntu 15.10+)
sudo service ssh restart //(CentOS 6, Debian 7, Ubuntu 14.04)

重新登录就可以用证书了。

4.证书登录其它措施

使用putty配合证书登录,我们发现默认端口是22,这样我们可以修改一下端口,免得服务器上那扰人的尝试日志。

sudo vi /etc/ssh/sshd_config //依然是刚才的配置文件
Port 2345 //可以把22改成其它端口,例如2345等等不限

这里要注意,对机器防火墙做个简单的设置,万一防火墙没开2345端口呢,那岂不是完蛋了。
更新一下防火墙规则:Iptables ,FirewallD ,UFW 或者其它防火墙,看看自己喜欢用什么就装什么。
例如 Iptables 可以编辑一下规则,自己查询一下命名 -h:

file:/tmp/v4

*filter

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

# Allow ping.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT

# Allow SSH connections.
-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

# Allow inbound traffic from established connections.
# This includes ICMP error returns.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Log what was incoming but denied (optional but useful).
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7

# Reject all other inbound.
-A INPUT -j REJECT

# Log any traffic that was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7

# Reject all traffic forwarding.
-A FORWARD -j REJECT

COMMIT

FirewallD 从没用过,就不做叙述了。

UFW命令没多少:

sudo ufw delete allow 2345 //删除2345端口 
sudo ufw allow 2345 //允许2345端口
sudo ufw limit 2345 //限制2345端口,不知道有什么用,好像多次错了会被拉黑
sudo ufw status //查看当前规则
sudo ufw enable //重启规则
sudo ufw disable //禁用规则

设置好之后,别忘了重启ssh服务。

这样上述如果设置顺利,就可以下次直接用证书从2345端口登录了。

当然,你可以自己探索一下更复杂的设置,例如,3次登录错误ip封禁这种变态措施...

5.重定向ip

如果你在主机下挂了一些网站,你就会发现用ip+端口也能访问这些站点,我们可以给网站定个规则做一个跳转。
/var/www/html/文件夹下,可以在里面建个.htaccess文件定一下规则:

添加如下代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^xx\.xx\.xx\.xx$
RewriteRule ^(.*)$ http://xx.domain.com/$1 [L,R=301]
</IfModule>

这样,从ip访问站点就会301重定向到domain,免得影响爬虫的SEO,不过对于现在的爬虫,这些似乎是小事。

6.参考文摘

工具下载:

winscp and putty .etc

这里有一些非常棒的文章可以参考:

Securing Your Server

Control Network Traffic with iptables

How to Configure a Firewall with UFW

退出移动版