快捷搜索:   nginx

linux SSH 的一些安全小技巧


  一, 前言
  
  关于 ssh 的好处, 相信不用我多说了吧?
  
  简而言之, 之前的 rpc command 与 telnet 都全可用 ssh 代替.
  
  比方如下的这些常见功能:
  
  - 远程登录
  ssh user@remote.machine
  - 远程执行
  ssh user@remote.machine 'command ...'
  - 远程粗?
  scp user@remote.machine:/remote/path /local/path
  scp /local/path user@remote.machine:/remote/path
  - X forward
  ssh -X user@remote.machine
  xcommand ...
  - Tunnel / Portforward
  ssh -L 1234:remote.machine:4321 user@remote.machine
  ssh -R 1234:local.machine:4321 user@remote.machine
  ssh -L 1234:other.machine:4321 user@remote.machine
  
  至于详细的用法, 我这就不说了. 请读者自行研究吧.
  
  我这里要说的, 是针对 ssh 服务为大家介绍一些安全技巧, 希望大家用得更安心些.
  
  二, 实作
  
  (实作以 RedHat 9 为范例)
  
  1) 禁止 root 登录
  
  # vi /etc/ssh/sshd_config
  PermitRootLogin no
  
  2) 废除密码登录, 强迫使用 RSA 验证(假设 ssh 账户为 user1 )
  
  # vi /etc/ssh/sshd_config
  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile   .ssh/authorized_keys
  PasswordAuthentication no
  # service sshd restart
  # su - user1
  $ mkdir ~/.ssh 2>/dev/null
  $ chmod 700 ~/.ssh
  $ touch ~/.ssh/authorized_keys
  $ chmod 644 ~/.ssh/authorized_keys
  
  --------------------------------------------------
  转往 client 端:
  $ ssh-keygen -t rsa
  (按三下 enter 完成﹔不需设密码,除非您会用 ssh-agent 。)
  $ scp ~/.ssh/id_rsa.pub user1@server.machine:id_rsa.pub
  (若是 windows client, 可用 puttygen.exe 产生 public key,
  然后复制到 server 端后修改之, 使其内容成为单一一行.)
  ---------------------------------------------------
  
  回到 server 端:
  $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  $ rm ~/id_rsa.pub
  $ exit
  
  3) 限制 su / sudo 名单:
  
  # vi /etc/pam.d/su
  auth required /lib/security/$ISA/pam_wheel.so use_uid
  # visudo
  %wheel ALL=(ALL)  ALL
  # gpasswd -a user1 wheel
  
  4) 限制 ssh 使用者名单
  
  # vi /etc/pam.d/sshd
  auth    required   pam_listfile.so item=user sense=allow file=/etc/ssh_users onerr=fail
  # echo user1 >> /etc/ssh_users
  
  5) 封锁 ssh 联机并改用 web 控管清单
  
  # iptables -I INPUT -p tcp --dport 22 -j DROP
  # mkdir /var/www/html/ssh_open
  # cat > /var/www/html/ssh_open/.htaccess <<END
  AuthName "ssh_open"
  AuthUserFile /var/www/html/ssh_open/.htpasswd
  AuthType basic
  require valid-user
  END
  # htpasswd -c /var/www/html/ssh_open/.htpasswd user1
  
  (最好还将 SSL 设起来, 或只限 https 联机更佳, 我这里略过 SSL 设定, 请读者自补.)
  
  (如需控制联机来源, 那请再补 Allow/Deny 项目, 也请读者自补.)
  
  # cat > /var/www/html/ssh_open/ssh_open.php <<END
  <?
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论