基于ubuntu 12.04的Linux服务器安全配置
时间:2015-09-21 00:27 来源:linux.it.net.cn 作者:IT
linux的系统已经接触很久了,Linux服务器安全配置基本上也是东搞搞西搞搞,并没有形成一个体系。
这篇翻译linux安全技术的文章为 ubuntu 12.04.2 LTS 而写,你也可以在任何其他 Linux 分发版上做相同的事情。
如果服务器已经有了一个公有IP,你会希望立即锁定 root 访问。事实上,你得锁定整个ssh访问,并确保只有你可以访问。增加一个新用户,把它加入admin组(在/etc/sudoers预配置以拥有sudo访问权限)。
01
$
sudo
addgroup admin
02
Adding group
'admin'
(GID 1001)
03
Done.
04
05
$
sudo
adduser spenserj
06
Adding user `spenserj' ...
07
Adding new group `spenserj' (1002) ...
08
Adding new user `spenserj
' (1001) with group `spenserj'
...
09
Creating home directory `/home/spenserj' ...
10
Copying files from `/etc/skel' ...
11
Enter new UNIX password:
12
Retype new UNIX password:
13
passwd
: password updated successfully
14
Changing the user information
for
spenserj
15
Enter the new value, or press ENTER
for
the default
16
Full Name []: Spenser Jones
17
Room Number []:
18
Work Phone []:
19
Home Phone []:
20
Other []:
21
Is the information correct? [Y/n] y
22
23
$
sudo
usermod
-a -G admin spenserj
你也将希望在你电脑上创建一个私有key,并且在服务器上禁用讨厌的密码验证。
1
$
mkdir
~/.
ssh
2
$
echo
"ssh-rsa [your public key]"
> ~/.
ssh
/authorized_keys
/etc/ssh/sshd_config
1
PermitRootLogin no
2
PermitEmptyPasswords no
3
PasswordAuthentication no
4
AllowUsers spenserj
重新加载SSH,使用修改生效,之后尝试在一个新会话中登陆来确保所有事情正常工作。如果你不能登陆,你将仍然拥有你的原始会话来做修改。
1
$
sudo
service
ssh
restart
2
ssh
stop/waiting
3
ssh
start/running, process 1599
更新服务器
既然你是访问服务器的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。当有一些针对你服务器的更新时,正是修补的机会,所以动手吧,就现在。
1
sudo
apt-get update
2
sudo
apt-get upgrade
安装防火墙
安装现在正最流行的防火墙软件?好,行动吧。那就配置一个防火墙。之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。Iptables在Ubuntu里预装了,所以去设置一些规则吧。
$
sudo
mkdir
/etc/iptables
/etc/iptables/rules
01
*filter
02
:INPUT DROP [0:0]
03
:FORWARD DROP [0:0]
04
:OUTPUT DROP [0:0]
05
06
# Accept any related or established connections
07
-I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
08
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
09
10
# Allow all traffic on the loopback interface
11
-A INPUT -i lo -j ACCEPT
12
-A OUTPUT -o lo -j ACCEPT
13
14
# Allow outbound DHCP request - Some hosts (Linode) automatically assign the primary IP
15
#-A OUTPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
16
17
# Outbound DNS lookups
18
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
19
20
# Outbound PING requests
21
-A OUTPUT -p icmp -j ACCEPT
22
23
# Outbound Network Time Protocol (NTP) request
24
-A OUTPUT -p udp --dport 123 --sport 123 -j ACCEPT
25
26
# SSH
27
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
28
29
# Outbound HTTP
30
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
31
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
32
33
COMMIT
通过 iptables-apply 命令为规则集生效。如果你丢失连接,修补你的规则,在继续之前再试一下
$
sudo
iptables-apply
/etc/iptables/rules
创建文件 /etc/network/if-pre-up.d/iptables,然后写入下面内容。当你启动服务器的时候,将自动载入你的iptables规则。
/etc/network/if-pre-up.d/iptables
1
#!/bin/sh
2
iptables-restore < /etc/iptables/rules
现在给它执行权限,执行文件,以确保它正常载入
1
$
sudo
chmod
+x /etc/network/
if
-pre-up.d/iptables
2
$
sudo
/etc/network/
if
-pre-up.d/iptables
用 Fail2ban 处理潜在黑客
当谈到安全的时,Fail2ban 是我最喜欢的工具之一,它将监控你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web服务器的用户。
Install Fail2ban
1
sudo
apt-get
install
fail2ban
虽然 Fail2ban 安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在 /etc/fail2ban/jail.local 写配置,所以把它拷贝到那儿。
1
sudo
cp
/etc/fail2ban/jail.{conf,
local
}
配置
把 ignoreip 行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。你也将希望设置一个destemail,这里我通常输入我自已的email地址:
/etc/fail2ban/jail.local
01
[DEFAULT]
02
03
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
04
ignoreip = 127.0.0.1/8
05
bantime = 600
06
maxretry = 3
07
08
# "backend" specifies the backend used to get files modification. Available
09
# options are "gamin", "polling" and "auto".
10
# yoh: For some reason Debian shipped python-gamin didn't work as expected
11
# This issue left ToDo, so polling is default backend for now
12
backend = auto
13
14
#
15
# Destination email address used solely for the interpolations in
16
# jail.{conf,local} configuration files.
17
destemail = root@localhost
这有一些其他的你想检查的配置,尽管缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。
Actions
Actions 允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了 iptables。值得感谢的是,有一个预配置文件 action_wml,它恰恰是做这个的。
/etc/fail2ban/jail.local
Jails 监控
为了让Fail2ban工作,需要了解要监控哪些东西。这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。既然到目前为止,你 仅仅在服务器上启用了SSH访问,那我们就只启用SSH和SSH-DDos 监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。
/etc/fail2ban/jail.local
01
[
ssh
]
02
enabled =
true
03
port =
ssh
04
filter = sshd
05
logpath = /var/log/auth.log
06
maxretry = 6
07
[
ssh
-ddos]
08
enabled =
true
09
port =
ssh
10
filter = sshd-ddos
11
logpath = /var/log/auth.log
12
maxretry = 6
让变化生效
既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。
01
$
sudo
service fail2ban restart
02
* Restarting authentication failure monitor fail2ban
03
...
done
.
04
05
$
sudo
iptables -L
06
Chain INPUT (policy DROP)
07
target prot opt
source
destination
08
fail2ban-
ssh
-ddos tcp -- anywhere anywhere multiport dports
ssh
09
fail2ban-
ssh
tcp -- anywhere anywhere multiport dports
ssh
10
...
11
Chain fail2ban-
ssh
(1 references)
12
target prot opt
source
destination
13
RETURN all -- anywhere anywhere
14
15
Chain fail2ban-
ssh
-ddos (1 references)
16
target prot opt
source
destination
17
RETURN all -- anywhere anywhere
在任何时间,你都可以使用sudo iptables -L 来列出你的规则,随后列出所有当前禁止的 IP。此时,Fail2ban正在处理两个恶意的用户。
Banned IPs
DROP all -- 204.50.33.22 anywhere
DROP all -- 195.128.126.114 anywhere
保持最新更新
你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。
(责任编辑:IT)
linux的系统已经接触很久了,Linux服务器安全配置基本上也是东搞搞西搞搞,并没有形成一个体系。 这篇翻译linux安全技术的文章为 ubuntu 12.04.2 LTS 而写,你也可以在任何其他 Linux 分发版上做相同的事情。 如果服务器已经有了一个公有IP,你会希望立即锁定 root 访问。事实上,你得锁定整个ssh访问,并确保只有你可以访问。增加一个新用户,把它加入admin组(在/etc/sudoers预配置以拥有sudo访问权限)。
更新服务器既然你是访问服务器的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。当有一些针对你服务器的更新时,正是修补的机会,所以动手吧,就现在。
安装防火墙安装现在正最流行的防火墙软件?好,行动吧。那就配置一个防火墙。之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。Iptables在Ubuntu里预装了,所以去设置一些规则吧。 $ sudo mkdir /etc/iptables
$ sudo iptables-apply /etc/iptables/rules 创建文件 /etc/network/if-pre-up.d/iptables,然后写入下面内容。当你启动服务器的时候,将自动载入你的iptables规则。 /etc/network/if-pre-up.d/iptables
用 Fail2ban 处理潜在黑客当谈到安全的时,Fail2ban 是我最喜欢的工具之一,它将监控你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web服务器的用户。 Install Fail2ban
配置把 ignoreip 行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。你也将希望设置一个destemail,这里我通常输入我自已的email地址:
/etc/fail2ban/jail.local
这有一些其他的你想检查的配置,尽管缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。
ActionsActions 允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了 iptables。值得感谢的是,有一个预配置文件 action_wml,它恰恰是做这个的。 /etc/fail2ban/jail.local Jails 监控为了让Fail2ban工作,需要了解要监控哪些东西。这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。既然到目前为止,你 仅仅在服务器上启用了SSH访问,那我们就只启用SSH和SSH-DDos 监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。 /etc/fail2ban/jail.local
让变化生效既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。
在任何时间,你都可以使用sudo iptables -L 来列出你的规则,随后列出所有当前禁止的 IP。此时,Fail2ban正在处理两个恶意的用户。 Banned IPs DROP all -- 204.50.33.22 anywhere DROP all -- 195.128.126.114 anywhere 保持最新更新你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。 (责任编辑:IT) |