服务器的安全问题并不是很复杂,采取下面的原则阻止最常见的攻击行为。
经验丰富的管理员都知道,随着服务器数量和用户的增加,用户管理成本会原来越大
以下命名以ubuntu为例,其它版本linux会有所不同。
passwd
首先将root密码改的很复杂,因为你不需要记住它,只需要在安全的地方保存它即可。
apt-get update
apt-get upgrade
更新软件源列表,更新软件包。
安装Fail2ban
apt-get install fail2ban
fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙iptables屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很强大的软件!
配置登录用户,假如用户名为deploy
useradd deploy
mkdir /home/deploy
mkdir /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
使用public key认证,更安全,更方便
PublicKey是用来公开的,可以将其放到SSH服务器自己的帐号中,而PrivateKey只能由自己保管,用来证明自己身份,在服务器上添加id_rsa.pub内容,并配置权限。
vim /home/deploy/.ssh/authorized_keys
chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R
测试新用户&允许Sudo
为登录的用户设置sudo密码
passwd deploy
给deploy用户配置授权
visudo
#添加如下
root ALL=(ALL) ALL
deploy ALL=(ALL) ALL
启动或禁止SSH用户及IP的登录
阻止密码和root登陆,同时允许指定ip
vim /etc/ssh/sshd_config
#添加如下行
PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@(your-ip) deploy@(another-ip-if-any)
#修改完成后重启
service ssh restart
设置防火墙
ubuntu提供了ufw命令,让防火墙配置更简单。
ufw allow from {your-ip} to any port 22
ufw allow 80
ufw allow 443
ufw enable
以上根据自己实际需求配置。
自动进行安全更新
安装unattended-upgrades可以进行自动更新,或者有选择性的安全更新。
apt-get install unattended-upgrades
vim /etc/apt/apt.conf.d/10periodic
#更新如下内容
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
更新配置文件50unattended-upgrades,只进行安全更新。
Unattended-Upgrade::Allowed-Origins {
"Ubuntu lucid-security";
// "Ubuntu lucid-updates";
};
安装Logwatch
Logwatch能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员,可定制需求,这样你可立马跟踪和检测到攻击行为。
apt-get install logwatch
vim /etc/cron.daily/00logwatch
#添加如下
/usr/sbin/logwatch --output mail --mailto test@gmail.com --detail high
ok,以上配置,你只需花5分钟,就能让你的服务器防御大部分攻击并且易于维护