linux服务器安全增强

其实在大学里就一直想做一个服务器运维人员,可惜机遇不巧现在做的是C++开发。终于某一天当我用lastb查看到那么多的对root密码猜解失败记录时意识到我们服务器的安全性确实很差,因为不确定是否有某人进来过所以干脆重装系统从头来。(用的阿里云ECS)
一键编译安装dropbear脚本地址(http://download.csdn.net/detail/cracker_zhou/9417041)
一键编译安装python脚本地址(http://download.csdn.net/detail/cracker_zhou/9417051)
1.禁止root用户的ssh登陆,更改ssh默认端口
之前一直使用root用户登陆,确实方便。但是确实也很容易出问题,于是首先第一件事就是新建一个账户。

useradd -m test #添加用户,并自动创建家目录
echo "test" | passwd --stdin test #设置密码

修改/etc/sudoers文件在root ALL=(ALL) ALL下面添加一行test ALL=(ALL) ALL(这里的test要换成你刚刚新建的用户名)

新建完账户后,下面就要开始配置ssh了。下面讲述一下 /etc/ssh/sshd_config中比较重要的几个选项:(其他选项还在学习中)
Port 22          # 监听端口,建议改别的
Protocol 2,1        # SSH 协议版本
PermitRootLogin no     # 是否允许 root 登入
PasswordAuthentication yes # 密码验证当然是需要的!
PermitEmptyPasswords no #不解释,不允许空密码登陆
RSAAuthentication yes #是否启用RSA验证
PubkeyAuthentication yes  #如果需要用ssh key登陆,则开,只有Protocol 2支持
AuthorizedKeysFile .ssh/authorized_keys # pub key的位置
KeepAlive yes #建议开,防止putty过一段时间就提示断开链接

2.升级openssh
可以通过 ssh -V 命令查看一下当前OpenSSH和OpenSSL的版本,截止笔者写这篇文章时OpenSSH的最新版本是6.7p1,OpenSSL的最新版本是OpenSSL 1.1.0 Alpha1,如果版本太低就升级吧。
因为笔者是通过ssh连接到ecs服务器,想想如果openssh被玩坏了岂不是只能恢复系统了?所以在升级openssh之前推荐先装一个替代产品dropbear(一个嵌入式轻量级的shh客户端工具),万一openssh玩坏了还能从dropbear进来。
dropbear的编译安装很简单啊(一键安装脚本):

yum install -y gcc zlib*
wget http://matt.ucc.asn.au/dropbear/dropbear-2015.71.tar.bz2
tar -jxvf dropbear-2015.71.tar.bz2
cd dropbear-2015.71
./configure
make && make install
if [ ! -d "/etc/dropbear" ]; then
mkdir /etc/dropbear
fi
/usr/local/bin/dropbearkey -t dss -f
/etc/dropbear/dropbear_dss_host_key
/usr/local/bin/dropbearkey -t rsa -s 4096 -f
/etc/dropbear/dropbear_rsa_host_key
/usr/local/sbin/dropbear -p 2222

最后可以通过netstat -antup命令检查一下dropbear是否正确的使用了2222端口。

装完dropbear下面开始编译安装openssl。

#卸载原有openssl
rpm -e `rpm -qa | grep openssl` --allmatches --nodeps
wget http://www.openssl.org/source/openssl-1.1.0-pre1.tar.gz
tar -zxvf openssl-1.1.0-pre1
./config --prefix=/usr --shared
make && make install

更新玩openssl之后可以通过openssl version -a命令查看当然openssl版本。(后来看了一下openssl文件夹中的config文件,还是蛮有意思的,因为正常的编译都是./configure,原来config比configure多了一个guess operation的功能)
下面开始编译安装openssh。

yum -y install gcc* make perl pam pam-devel openssl openssl-devel
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz
tar -zxvf openssh-6.7p1.tar.gz && cd openssh-6.7p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
make
rpm -e `rpm -qa | grep openssh`
make install
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd

通过ssh -V检查openssh版本是否成功升级。
最后通过service sshd reload重启sshd服务(之前记得看下/etc/ssh/sshd_config配置文件)。
如果最后openssh安装没有问题,就可以把dropbear卸载删除了。
首先ps -ef |grep dropbear查看进程,然后kill掉。最后删除文件。
rm -rf /etc/dropbear/ /usr/local/sbin/dropbear /usr/local/bin/dropbear*

3.配置防火墙
1)iptables有两个可执行文件,分别是/sbin/iptables和/etc/init.d/iptables。前者用于更改规则,后者用于查看保存规则。
linux服务器安全增强_第1张图片
2.iptables默认有三张表,分别是filter,nat,mangle,最常用的是filter表。在filter表中有三条规则链,分别是INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理从本地出去的包)。所以一个包只会走其中一个链。一个链上可以有多条规则,过滤时规则是由上而下依次判断(有顺序的),所以之后在用/sbin/iptables添加规则时会有一个-I(插到链表开始)和-A(接在链表尾巴)两种区别,而且某条规则匹配后便不再继续向后匹配。
常用语法:
/sbin/iptables -L # 显示所有规则
/sbin/iptables -F # 删除所有规则
/sbin/iptables -A INPUT -i lo -j ACCEPT #允许本地回环
/sbin/iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT #对于已连接请求是不会block的
/sbin/iptables -A INPUT -p icmp -m icmp –icmp-type 8 -j DROP #防ping
/sbin/iptables -A INPUT -p tcp -m multiport –dports 80,443 -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -m recent –rcheck –seconds 60 –hitcount 10 –name webpool –rsource -j LOG –log-prefix “DDOS:” –log-ip-options #一分钟内新请求个数不超过10个,否则记录
/sbin/iptables -A INPUT -p tcp -m multiport –dports 80,443 -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -m recent –rcheck –seconds 60 –hitcount 10 –name webpool –rsource -j DROP ##一分钟内新请求个数不超过10个,否则block
/sbin/iptables -A INPUT -p tcp -m multiport –dports 80,443 -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -m recent –set –name webpool –rsource -j ACCEPT #记录每次的新请求
需要注意的是以上改动是立即生效的,也就是当你设置22端口的规则为REJECT时你的putty会立即会被断开连接,但是这些规则没有写入文件,所以下次服务重启后便不会生效。这时候可以调用/etc/init.d/iptables save ,刚才配置的规则将被写入 /etc/sysconfig/iptables文件中。
感谢那些扫root弱口令的大大,让我学到了这么多的知识。当然,这还不够,good good study,day day up!

你可能感兴趣的:(linux,服务器安全)