免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4758 | 回复: 18
打印 上一主题 下一主题

redhat9.0 限制IP 登陆的困惑? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-22 20:17 |只看该作者 |倒序浏览
我是个LINUX 新手 如何限制IP登陆这个问题一直困扰这我。我把问题讲一下,大家帮忙一下。

我的系统是REDHAT9 远程登陆服务器的方式是 ssh,我查看乐客户端配置文件ssh_config 和服务器端的配置文件 sshd_config 都没有找到哪个 参数能限定只允许某个固定的IP能登陆服务器的(?? 这是我一个疑问)

我想到可能要装TCP wrapper ,利用hosts.allow 和 hosts.deny 来只允许,某个固定的IP  SSH登陆,其他的IP都不能登陆。我网上查了下只有老版本的inetd.conf 这个配置文件和tcp wrapper 结合 而 新的xinetd.d里文件的配置如何操作(这是我一个疑问??,xinetd.d 目录下没有ssh,是不是自己要重建?)

sshd 是独立于 xinetd deamon 的,如何自身限制IP登陆??

请大家指点迷津,先谢了!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-05-22 21:16 |只看该作者

redhat9.0 限制IP 登陆的困惑?

sshd 不經 xinetd , 但仍經過 tcpd 啊.

你就在 hosts.deny 設:
sshd: ALL EXCEPT 1.2.3.4 4.3.2.1

论坛徽章:
0
3 [报告]
发表于 2005-05-23 17:09 |只看该作者

redhat9.0 限制IP 登陆的困惑?

我参照你的,在hosts.deny 添加了,还是不起作用.

?请求支援!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-05-24 07:38 |只看该作者

redhat9.0 限制IP 登陆的困惑?

那你分開寫吧:
在 /etc/hosts.allow 寫:
sshd: 1.2.3.4
在 /etc/hosts.deny 寫:
sshd: ALL

如果還是不行, 那可能你的 sshd 沒支援 tcpwrapper,
你可找文件看看如何打開支援.
要不, 就用 iptables 也行:
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-05-24 08:17 |只看该作者

redhat9.0 限制IP 登陆的困惑?

剛好, 前幾天弄了個小玩意, 給有興趣的朋友參考一下.

* 需求:
某一多人管理的 server (假設為 www.server.name) 原本並沒有限制 ssh 的來源.
現想加入特定來源控制讓某些管理員能夠遠端登錄, 其餘一蓋不允許.

* 難點:
由於個別管理員使用撥接方式上網, ip 不固定. 因此清單難以掌握.

* 構思:
1) 開發一個 php 網頁, 密碼以 ssl 連線保護, 以即時加入 client 端 IP 進 allow list 裡.
2) 再執行 firewall script , 開啟 ssh 連線.
3) 然後定期清理清單.

* 實作:
1) 寫一個 getip.php 至於某一網頁目錄底下(如 getip), 用來收集 client 端 browser ip 記錄於 allow_ssh.txt (單一記錄, 每次蓋寫). 內容如下:
  1. <?
  2. //Set dir path for ip list
  3. $dir_path=".";

  4. //Set filename for ip list
  5. $ip_list="allow_ssh.txt";

  6. //Get client ip
  7. $user_ip = getenv ("REMOTE_ADDR");

  8. //Put client ip to a file
  9. if(@!($file = fopen("$dir_path/$ip_list","w+")))
  10. {
  11.         echo "Permission denied!!.......Pls Check your rights to dir $dir_path o
  12. r file $ip_list";
  13. }
  14. else
  15. {
  16.         fputs($file,"$user_ip");
  17.         fclose($file);
  18.         echo "client ip($user_ip) has put into $dir_path/$ip_list";
  19. }
  20. ?>;
复制代码


[注意]: ssl 及 htpasswd 網頁密碼部份這裡從略. 請另行參考 web server 文件.

2) 修改 /etc/services , 增加項目:
  1. myssh 222/tcp
复制代码


3) 用 xinetd 監聽 port 222 , 並啟動 /root/iptables/sshadd.sh.
可新編 /etc/xinetd.d/myssh , 內容如下:
  1. service myssh
  2. {
  3.         socket_type     = stream
  4.         protocol        = tcp
  5.         wait            = no
  6.         user            = root
  7.         server          = /root/iptables/sshadd.sh
  8.         disable         = no
  9. }
复制代码


4) sshadd.sh 會設定 iptables , 打開 allow_ssh.txt 清單的 ssh 連線.
編輯 /root/iptables/sshadd.sh, 內容如下:
  1. #!/bin/bash

  2. list_dir=/var/www/html/getip
  3. list_file=$list_dir/allow_ssh.txt
  4. chain_name=ssh_rules
  5. mail_to=root
  6. # clear chain if exits, or create chain.
  7. /sbin/iptables -L -n | /bin/grep -q "^Chain $chain_name" && {
  8.         /sbin/iptables -F $chain_name
  9.         true
  10. } || {
  11.         /sbin/iptables -N $chain_name
  12.         /sbin/iptables -I INPUT -j $chain_name
  13. }

  14. # clear chain on demand
  15. [ "$1" = clear ] && {
  16.         /sbin/iptables -F $chain_name
  17.         exit 0
  18. }

  19. # do nothing while list is empty
  20. [ -s $list_file ] || exit 1

  21. # add rule
  22. /sbin/iptables -A $chain_name -p TCP --dport 22 -s $(cat $list_file) -j ACCEPT && \
  23. echo "ssh opened to $(cat $list_file) on $(date)" | mail -s "sshadd" $mail_to
复制代码


5) 寫 crontab 每 3 分中清理 iptables 關於 ssh 連線的規則.
  1. */3 * * * *     root    /study-area/iptables/sshadd.sh clear
复制代码

這並不影響既有連線, 若逾時則再連.

* 操作步驟:
1) 用 browser 開啟 http://www.server.name/getip/getip.php
2) 用 terminal 執行 telnet www.server.name 222
3) 最後用管理員自己的帳戶連接登錄 ssh www.server.name

* 注意:
1) iptables 預設規則並沒開啟任何 ssh 連線, 若有固定 ip 可用, 可另行配置預設規則.
2) tcpwraper 不可設定 deny 規則, 否則上述無效.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-05-24 09:54 |只看该作者

redhat9.0 限制IP 登陆的困惑?

用iptables限制只允许某个IP连接,修改sshd_config使用非常规端口会更让你省心一些.


例:vi sshd_config 把port 22前的注释去掉改成port 你允许的端口.service sshd restart
然后/sbin/iptables -A INPUT -s w.x.y.z -p tcp --dport 2234 -j ACCEPT(把w.x.y.z换成你要允许连接的IP)

try it.good luck!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-05-24 15:35 |只看该作者

redhat9.0 限制IP 登陆的困惑?

改 port 沒用的,
隨便一掃都出來了...

早上我提的主要是解決 ip 來源不固定問題.

论坛徽章:
0
8 [报告]
发表于 2005-05-24 16:07 |只看该作者

redhat9.0 限制IP 登陆的困惑?

[quote]原帖由 "網中人"]改 port

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-05-24 16:22 |只看该作者

redhat9.0 限制IP 登陆的困惑?

[quote]原帖由 "網中人"]改 port

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-05-24 16:30 |只看该作者

redhat9.0 限制IP 登陆的困惑?

原帖由 "不想发言" 发表:


如果是我,我会改了ssh的版本号,并且改了他的端口.他扫了也不知所云


好一點的嗅探工具, 不是看版本號碼的...
這個想法有點單純啦.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP