V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dennyzhang
V2EX  ›  DevOps

服务器装好后,你一般做哪些安全上的优化?

  •  3
     
  •   dennyzhang · 2016-09-15 23:35:46 +08:00 · 8969 次点击
    这是一个创建于 3020 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先抛个砖。我一般做如下几件事:
    - iptables 防火墙
    - sshd 禁止通过密码登录
    - 给 command history 加上 timestamp
    51 条回复    2016-09-18 15:03:59 +08:00
    zyc233
        1
    zyc233  
       2016-09-16 00:51:50 +08:00   ❤️ 1
    楼主我是小白可否说的具体点,谢谢
    isCyan
        2
    isCyan  
       2016-09-16 01:25:45 +08:00 via Android   ❤️ 2
    shiji
        3
    shiji  
       2016-09-16 01:35:07 +08:00 via Android
    我一般会给 iptables 做一些猥琐的配置
    lianxiaoyi
        4
    lianxiaoyi  
       2016-09-16 07:54:59 +08:00 via Android
    一般改个端口就完事了!密码设置复杂些!
    dennyzhang
        5
    dennyzhang  
    OP
       2016-09-16 08:45:24 +08:00
    @shiji 怎么个猥琐法。来 show show 撒
    jeffw
        6
    jeffw  
       2016-09-16 08:46:08 +08:00 via iPhone
    不做,没怎么被黑过
    jimzhong
        7
    jimzhong  
       2016-09-16 09:02:33 +08:00
    猥琐配置之一:用 iptables 限制同一个 ip 在一分钟内 ssh 尝试连接的次数。
    initialdp
        8
    initialdp  
       2016-09-16 09:30:54 +08:00
    ( 1 ) 改端口
    ( 2 ) fail2ban
    ( 3 ) 禁止 root 远程登陆
    googlebot
        9
    googlebot  
       2016-09-16 11:08:05 +08:00 via Android
    只改端口,密钥登录
    ericls
        10
    ericls  
       2016-09-16 11:17:46 +08:00
    一般先断网 只能从同一个局域网的另外一个机器访问
    Troevil
        11
    Troevil  
       2016-09-16 11:20:09 +08:00
    @jimzhong failban ~
    Troevil
        12
    Troevil  
       2016-09-16 11:20:42 +08:00
    @jimzhong fail2ban
    qyz0123321
        13
    qyz0123321  
       2016-09-16 11:23:07 +08:00
    开启 selinux
    40huo
        14
    40huo  
       2016-09-16 11:30:34 +08:00
    我一般就做一个禁止密码登录。
    thinks
        15
    thinks  
       2016-09-16 12:03:33 +08:00 via Android
    @zyc233 哈哈哈哈,顺便可以说说 IP 地址或者域名什么的。
    xuboying
        16
    xuboying  
       2016-09-16 12:18:22 +08:00 via iPhone
    二次验证大家是否考虑?
    shshilmh
        17
    shshilmh  
       2016-09-16 12:55:10 +08:00 via Android
    端口敲门
    kn007
        18
    kn007  
       2016-09-16 13:02:04 +08:00
    更改默认端口, iptables 规则, fail2ban 。
    伪造 22 端口等等。
    qile1
        19
    qile1  
       2016-09-16 13:28:31 +08:00 via Android
    win 服务器该怎么办,经常被攻陷
    caoyujia2000
        20
    caoyujia2000  
       2016-09-16 13:32:39 +08:00
    @qile1 放在各种云服务器上 借助云上的防护服务 win 服务安全性比 linux 服务器还是差蛮多的 个人感觉
    VmuTargh
        21
    VmuTargh  
       2016-09-16 13:39:37 +08:00
    Grsecurity Grsecurity Grsecurity
    重要的事情说三遍
    china1234
        22
    china1234  
       2016-09-16 14:21:41 +08:00 via iPhone   ❤️ 1
    给服务器安装 360 安全卫士、 360 杀毒软件、金山卫士、金山毒霸、瑞星、百度卫士、百度杀毒卫士。
    dennyzhang
        24
    dennyzhang  
    OP
       2016-09-16 15:29:56 +08:00
    OS Hardening To Better Secure Linux Server
    http://www.dennyzhang.com/linux_security/

    Note: 楼主自己整理和总结的一篇分享。
    dennyzhang
        25
    dennyzhang  
    OP
       2016-09-16 15:30:59 +08:00
    @qyz0123321 我一般是关 selinux 。求教:在你们使用过程中, selinux 在哪些地方真实帮到你们了?
    dennyzhang
        26
    dennyzhang  
    OP
       2016-09-16 15:32:09 +08:00
    @VmuTargh 赞,久闻 Grsecurity 大名。期待它早日入 mainstream.
    dennyzhang
        27
    dennyzhang  
    OP
       2016-09-16 15:34:00 +08:00
    @jimzhong 赞。果然很贱
    xihefeng
        28
    xihefeng  
       2016-09-16 16:38:12 +08:00 via Android
    @xuboying 这个是怎么实现?
    fool
        29
    fool  
       2016-09-16 16:42:26 +08:00
    @xihefeng google authen ...
    jyf007
        30
    jyf007  
       2016-09-16 16:44:17 +08:00 via Android
    @VmuTargh 高到哪里去都不知道了
    lslqtz
        31
    lslqtz  
       2016-09-16 16:46:45 +08:00
    不做任何优化, 给程序打打补丁。
    VmuTargh
        32
    VmuTargh  
       2016-09-16 17:26:24 +08:00 via Android   ❤️ 1
    @dennyzhang 最近 kernel 那边打鸡血一样, Linux-next 像 duang 一样多了好多安全特性……没办法,全都是被倒逼的……
    另外 SELinux 可以用用但是不要迷信,毕竟 userspace 加固这玩意又不如 openbsd (逃
    raysonx
        33
    raysonx  
       2016-09-16 17:43:19 +08:00 via Android
    第一件事是禁止 root 用户使用密码远程登录
    ouqihang
        34
    ouqihang  
       2016-09-16 19:27:30 +08:00
    默认 22 端口真的不能用,睡一觉几百个 login fail ,改端口就好了
    qyz0123321
        35
    qyz0123321  
       2016-09-16 19:38:29 +08:00
    @dennyzhang 有用。。
    prondtoo
        36
    prondtoo  
       2016-09-16 20:09:23 +08:00 via Android
    装好系统后跟着网上教程的,关掉 iptables ,关掉 selinux
    DesignerSkyline
        37
    DesignerSkyline  
       2016-09-16 20:38:13 +08:00 via iPad
    @shshilmh port knocking 很实用,比单纯 IP 白名单更加适合于多种复杂环境。
    zpvip
        38
    zpvip  
       2016-09-16 20:59:09 +08:00
    @jimzhong
    是这样吗?

    一分钟尝试两次:

    ```
    iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --rcheck --seconds 60 --hitcount 2 -j DROP
    iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCEPT
    ```

    好像不如这样写好,三次错误禁一小时:

    ```
    iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --update --seconds 3600 --hitcount 3 -j DROP
    iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCPET
    ```
    kideny
        39
    kideny  
       2016-09-16 22:41:42 +08:00
    @prondtoo 这贴里很多人推荐 iptables ,你还要关掉。。。关掉用啥?
    dreamtrail
        40
    dreamtrail  
       2016-09-16 22:47:56 +08:00
    @zpvip
    端口被攻击的时候自己会不会也登不上?
    choury
        41
    choury  
       2016-09-16 22:50:12 +08:00 via Android
    反正我的 22 端口是个密罐,用来记录所有尝试登陆的密码
    guokeke
        42
    guokeke  
       2016-09-16 23:41:14 +08:00
    -=- root 禁了就不管了。
    jimzhong
        43
    jimzhong  
       2016-09-17 08:05:25 +08:00
    @zpvip 我这么写
    iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set --name ssh --rsource
    iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
    Hardrain
        44
    Hardrain  
       2016-09-17 09:12:28 +08:00
    1) iptables 限制自己不用的端口
    2) Web 程序的后台 Fail2Ban
    3) SSH 禁用键盘交互(密码),只能用公钥登录
    kn007
        45
    kn007  
       2016-09-17 09:29:35 +08:00
    补充,顺带的做 SSH 登录邮件提醒,感觉很有必要,在没两步验证的情况下

    https://kn007.net/topics/email-alert-when-ssh-login/
    ywgx
        46
    ywgx  
       2016-09-17 13:12:15 +08:00
    看了大家的方案,这是个人自己玩玩可以;企业级的管理, xabcloud.com 的看看吧
    Nitroethane
        47
    Nitroethane  
       2016-09-17 23:38:34 +08:00
    改 ssh 端口,并且使用 RSA 私钥进行登录,禁用密码登录;使用防火墙关闭,所有端口,只开放自己需要的,比如我的服务器只开了 3 个端口, 80 , 443 和 ssh 端口;定期打补丁。这是已经做了的,最近考虑写个脚本用来处理 nginx 的访问日志,比如说当有陌生 ip 在短时间内产生大量访问,并且有无意义的请求时,做黑名单处理;再写个脚本,定期监测 last 命令的输出,如果发现不是我的 ip 登录,给我发邮件啥的
    bianchensz
        48
    bianchensz  
       2016-09-18 10:10:25 +08:00
    改端口,改密钥,禁密禁 root 远程。
    sutra
        49
    sutra  
       2016-09-18 11:39:00 +08:00
    block in quick proto tcp from any os "Linux" to any port ssh
    soulteary
        50
    soulteary  
       2016-09-18 12:06:51 +08:00
    这个是炸鱼帖子...

    1. 改 root 密码为 16 ~ 20 位随机密码。
    2. 创建新用户,赋权,配置 rsakey 和授信 hosts , key 根据情况加密码&定期更换。
    3. 配置 sshd ,改端口,禁密码登录,禁 root 登录,禁用 pam ( openssl 后遗症)
    4. ufw 简化管理 iptables ,开闭端口。
    5. fail2ban 随便开几个需要的规则。
    6. supervisor 守护 fail2ban 。
    7. 如果有 1 ~ 2 台靠谱的机器,(任何网络下都能登录的, sla 高)当壁垒机器,其他机器仅允许从壁垒机上登录,定期维护这 1 ~ 2 个入口。
    8. 二步个人不推荐,如果专有一台手机做 token 另外(最近几年频繁换手机, token 各种重置各种痛苦)
    dennyzhang
        51
    dennyzhang  
    OP
       2016-09-18 15:03:59 +08:00
    @soulteary ^-^ 嗯嗯嗯,好大一条鱼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1265 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:34 · PVG 01:34 · LAX 09:34 · JFK 12:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.