社区编辑申请
注册/登录
SSH的一些安全小技巧
运维 系统运维
关于 ssh 的好处, 相信不用我多说了吧? 简而言之, 之前的 rpc command 与 telnet 都全可用 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

 

#p#

 

    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 < 

  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 < 

   

  //Set dir path for ip list

  $dir_path=".";

  //Set filename for ip list

  $ip_list="ssh_open.txt";

  //Get client ip

  $user_ip=$_SERVER['REMOTE_ADDR'];

  //allow specifying ip if needed

  if (@$_GET['myip']) {

  $user_ip=$_GET['myip'];

  }

  //checking IP format

  if ($user_ip==long2ip(ip2long($user_ip))) {

  //Put client ip to a file

  if(@!($file = fopen("$dir_path/$ip_list","w+")))

  {

  echo "Permission denied!!";

  echo "Pls Check your rights to dir $dir_path or file $ip_list";

  }

  else

  {

  fputs($file,"$user_ip");

  fclose($file);

  echo "client ip($user_ip) has put into $dir_path/$ip_list";

  }

  } else {

  echo "Invalid IP format!!ssh_open.txt was not changed.";

  }

  ?>

  END

  # touch /var/www/html/ssh_open/ssh_open.txt

  # chmod 640 /var/www/html/ssh_open/*

  # chgrp apache /var/www/html/ssh_open/*

  # chmod g+w /var/www/html/ssh_open/ssh_open.txt

  # chmod o+t /var/www/html/ssh_open

  # service httpd restart

  # mkdir /etc/iptables

  # cat > /etc/iptables/sshopen.sh < 

  #!/bin/bash

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  list_dir=/var/www/html/ssh_open

  list_file=$list_dir/ssh_open.txt

  chain_name=ssh_rules

  mail_to=root

  # clear chain if exits, or create chain.

  iptables -L -n | /bin/grep -q "^Chain $chain_name" && {

  iptables -F $chain_name

  true

  } || {

  iptables -N $chain_name

  iptables -I INPUT -p tcp --dport 22 -j $chain_name

  }

  # clear chain when needed

  [ "$1" = clear ] && {

  iptables -F $chain_name

  exit 0

  }

责任编辑:春晓 来源: 比特网
相关推荐

2022-02-21 14:14:03

SSH加密密钥

2022-01-13 08:37:54

2019-12-22 23:10:19

LinuxSSH加密

2020-01-18 08:49:17

目录安全.ssh木马

2011-05-24 09:15:52

SSH

2017-11-16 09:00:00

2010-07-01 14:42:16

2019-08-28 09:28:07

SSHOpenSSH运维

2017-12-06 13:55:09

编辑推荐

六个人如何运维一万台服务器?Linux下如何使用minicom USB串口Linux中7个判断文件系统类型的方法从美团程序员的灾难,看美团外卖自动化运维体系建设如何限制SSH用户访问Linux中指定的目录
我收藏的内容
点赞
收藏

AISummit人工智能大会