在我们团队里面, 我将使用了一台破电脑搭建 Linux 服务器, 上面跑着 Ftp 服务存放着资源, ssh 服务可以远程登录, VPN 业务可以访问内网的网络, web 服务存放着我们业务的各种脚本方便同事们随意查看资料, 以及正在搞的多媒体服务. 我了个去, 那天上班, 发现各种服务没了, 然后登录上破电脑一看, 啥资料都没了.
做为一个小白, 以为自己懂了点 Linux 知识, 会搭建 Linux 各种服务就觉得自己牛的不要要的. 在我们团队里面, 我将使用了一台破电脑搭建 Linux 服务器, 上面跑着 Ftp 服务存放着资源, ssh 服务可以远程登录, VPN 业务可以访问内网的网络, Web 服务存放着我们业务的各种脚本方便同事们随意查看资料, 以及正在搞的多媒体服务. 我了个去, 那天上班, 发现各种服务没了, 然后登录上破电脑一看, 啥资料都没了.
当时一脸蒙蔽, 不知发生了什么事情谁让是小白呢. 找了朋友看, 你被黑了,....... 我脸真黑, 他说也别查其它的了, 重新安装系统和服务, 重新加固系统安全, 不要以为 Linux 安装好, 就能在互联网上面直接裸奔. 我无语!
1. 安装用到的服务
如果你在运行一台服务器, 选择自己所需要的服务, 尽量不要安装用不到的程序. 尽管你可以在自己的服务器上安装任意软件. 不过, 别犯想当然的毛病. Linux 服务器会有人在该服务器上运行的任何未打补丁或易受攻击的软件组件的空子而被劫持. 这样你就悲剧了.
所以, 尽量让你的服务器更加精简. 只安装你确实需要的那些程序. 如果没有或者不需要的程序包, 那就卸载掉. 程序包数量越少, 代码没打上补丁的可能性就越小, 遭受潜在的危险就越小.
2. 运行需要的服务程序
就是只运行需要的那些服务程序, 许多发行版或程序包可能会开启某些服务, 并在不同的端口上运行. 这就会带来安全风险, 打开终端, 运行下列命令: netstat -npl.
输出结果会显示服务在哪些端口上运行. 如果你发现有任何不应该运行的服务, 那么立即停止. 多密切关注已被启用, 系统启动时运行的服务, 只要是在运行 systemd 的系统上运行下列命令, 就可以来检查这方面: systemctl list-unit-files --type=service | grep enabled . 如果是你发现有不需要的服务, 可以使用 systemct1 命令来禁用它: systemctl disable service_name.
3. 禁止以根用户远程登录
关闭 root 用户的直接访问, 而使用 sudo 或 su 来执行管理员任务. 关闭通过 SSH 直接访问 root, 需要再次打开 sshd_config, 找到下面这行,#PermitRootLogin yes , 更改为 PermitRootLogin no, 重启服务即可生效. 我们总以为自己是菜鸟, 没事就用 root 来吧, 但你上面跑着服务, 黑客并不管你是谁.
4. 更改 SSH 默认端口
在搭建好服务器后要做的第一件事情就是更改 SSH 的默认端口, 这个小小的改动可以能够使你的服务器避免受到成千上万的暴力攻击. 如果不更改默认端口, 就如同黑客们知道你家的门牌号, 这样他们只需要一把一把的试钥匙就可能打开你家的门锁. 要更改默认的 SSH 端口, 先打开 sshd_config 文件: sudo vim /etc/ssh/sshd_config, 找到下面这行:#Port 22,"#" 号表示这行是注释, 首先删除 #号, 然后把端口号改成目的端口. 端口号不能超过 65535, 确保要指定的端口号没有被系统或其它服务占用. 比如我使用这个端口号: Port 16679, 然后保存并关闭文件, systemctl restart sshd 重启服务! ssh 服务也可以配置白名单限制 ip 登录, 呃, 暂时不知道怎么搞?! 在破电脑被黑了之后, 我说端口是 23, 我老大使劲恶心我. 哎, 我还郁闷了.
5.iptables
iptables 我是看着头晕, 但被黑之后, 我就老老实实的学习这玩意了. iptables 可以根据流量的源地址, 目的地址, 传输协议, 服务类型等信息进行匹配, 一旦匹配成功, iptables 就会根据策略规则所预设的动作来处理这些流量. iptables 策略规则的匹配顺序是从上至下的, 因此要把较为严格, 优先级较高的策略规则放到前面, 以免发生错误. 可以通过 iptables 入站规则将公开和非公开服务区分, 指向用户提供 web 接口. 比如将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口, 拒绝来自其他所有主机的流量: iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT, iptables -A INPUT -p tcp --dport 22 -j REJECT,iptables -L; 更比如向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口 (Web 服务) 的策略规则: iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT,iptables -L. 尽管现在还是一脸懵逼, 但启用了至少没比强, 再专研下争取可以将 iptables 使用的更合理化.
目前就做了这么多安全, 还仍然在学习 linux, 推荐一本书叫Linux 就该这么学适合小白, 不要总以为学完 Linux 基础课程就完了, 这才是开始, 路还长. 吃亏是福, 还有那些安全措施? 大神们!!!
来源: http://os.51cto.com/art/201807/579315.htm