海树枫天 心灵港湾--Seamaple's Blog
You're almost as happy as you think you are.
You're almost as happy as you think you are.
Feb 15th
1、Linux里查看所有用户
linux里,并没有像windows的net user,net localgroup这些方便的命令来管理用户. Xwindows界面的就不说了.
(1)在终端里.其实只需要查看 /etc/passwd文件就行了.
(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.
或者用cat /etc/passwd |cut -f 1 -d :
2、用户管理命令
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
3、管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。
Feb 11th
今天登陆GMIL的时候页面转入了Google Buzz体验的页面,Google Buzz是Google推出的一个类似微博客的系统,不过它不仅仅是微博客,而是在最大程度上整合了Google gmail 、照片分享、资讯分享等众多Google功能,最重要的是你无需安装任何客户端,只需进入GMAIL,在左侧INBOX下边就是Buzz的链接,同时只要你跟随了任何一个你的好友,他或者她的最新动态将在你的GMAIL上及时更新,无需刷新页面,Google的用户体验就是如此的让人惊讶,我第一时间抢先体验了Buzz,给我跟随的朋友们发了一条新春祝福的消息,更多体验请访问Buzz官方网站:http://www.google.com/buzz
刚刚看了一下Buzz还可以安装在手机上,于是在Iphone上安装了一下,感觉用户体验很棒,试用几天后,再与大家分享感受吧。
Feb 9th
配置PPTP VPN的时候刚开始参考的是张宴的教程,配置好以后VPN拨号后死活上不了网,于是参考瑞豪开源的教程重新配置了一遍,最后一步reboot,结果噩运来了,服务器卡在了启动的那里,无法起来了,当时懊悔不已,手怎么那么贱,幸好及时发工单,photonvps.com的技术工程师服务还是很好的,很快就帮我恢复了启动,而且只字未提服务费的问题,这点跟国内很多服务商什么都收费有很大的区别,强烈推荐他们的产品和服务,现在一切都很爽,翻墙的感觉就是好,以下是教程的原文:
美国VPS的一大用途就是做为加密的VPN服务器,在国内连上这些VPN服务器就可以无限制访问互联网。常用的VPN服务器一般分两种,一 种是SSL VPN,代表软件有openvpn,这个VPN软件有Windows下的客户端软件;另外一种是pptpd VPN,Windows自带这种VPN的客户端支持。本文记录了在CentOS 5 VPS下安装pptpd VPN服务器的过程。
pptpd VPN需要内核支持mppe,我们的VPS自带的内核已经把mppe编译进去了,没有把mppe另外当作内核的模块。 More >
Feb 8th
今天在折腾我那个美国VPS,由于测试权限的时候多登录了几次,看了网上的教程想更改一下SSH默认的端口22为其他一个端口,结果测试的时候竟然发现无法SSH了,幸好保留了原有的22端口,不过死活连22端口都无法登陆了,于是吓出了一身冷汗,幸亏想起来,我曾经在CENTOS自动运行里边保留了Iptables,这个东东是个防火墙,只要多次尝试登录密码错误以后就会把IP阻止掉,这样一想立马来了精神,赶紧去找了一下教程,采用了以下命令行轻松删除了被阻止的IP:
iptables -A INPUT -s 61.170.*.* -j ACCEPT
无法远程连接的话请检查:/etc/hosts.allow and /etc/hosts.deny. 尤其是hosts.deny
关闭防火墙:
# /etc/init.d/iptables save
# /etc/init.d/iptables stop
执行以上命令的目的是接纳信任的IP来的封包,结果一下子就可以重新连接了,以下是教程全文:
CentOS 内置了一个非常强劲的防火墙,统称为 iptables,但更正确的名称是 iptables/netfilter。iptables 是一个用户空间的模块。作为用户,你在命令行就是通过它将防火墙规则放进缺省的表里。netfilter 是一个核心模块,它内置於内核中,进行实际的过滤。iptables 有很多前缀图像界面可以让用户新增或定义规则,但它们很多时不及使用命令行般有灵活性,而且限制用户了解实际发生的事情。我们将会学习 iptables 的命令行界面。
在我们正式应付 iptables 前,我们必须对它的运作有一个基本的理解。iptables 利用到 IP 地址、协议(tcp、udp、icmp)及端口这些概念。我们不需要成为这些方面的专家(因为我们可以找到所需的信息),但对它们有一般的理解会有帮助。
iptables 将规则放进缺省的规则链(INPUT、OUTPUT 及 FORWARD),而所有流量(IP 封包)都会被相关的规则链检查,根据当中的规则判断如何处理每个封包,例如:接纳或丢弃它。这些动作称为目标,而最常见的两个缺省目标就是 DROP 来丢弃封包;或 ACCEPT 来接纳封包。
规则链
我们可以在过滤表的 3 条缺省规则链内加入规则,来处理通过这些规则链的封包。它们分别是:
我们将会花费最多 时间处理 INPUT 规则链,藉以过滤进入我们的机器的封包 —— 亦即是将坏蛋拒诸门外。
规则是以列表的方式被加进每条规则链。每个封包会被头一条规则开始检查,才至最后一条。假若封包与其中一条规则吻合,相 应的动作便会被执行,例如接纳(ACCEPT)或丢弃(DROP)封包。一旦有吻合的规则,这个封包便会按照规则来处理,而不再被规则链内的其它规则所检 查。假如封包通过所有检查而不符合任何规则链内的任何一条规则,那应这条规则链的缺省动作将会被执行。这就是所谓的缺省政策,可以设置为接纳 (ACCEPT)或丢弃(DROP)封包。
规则链拥有缺 省政策这个概念带来两个基本的可能性,而我们必须考虑它们才能决定如何组织我们的防火墙。
1. 我们可以缺省一个政策来丢弃(DROP)所有封包,然后刻意加入规则来接纳(ACCEPT)源自被信任的 IP 地址的封包,或者打开那些提供服务的端口,如:bittorrent、FTP 服务器、网页服务器、Samba 文件服务器等。
又或者,
2. 我们可以缺省一个政策来接纳(ACCEPT)所有封包,然后刻意加入规则来拦截(DROP)来自有问题的 IP 地址或系列的封包,也或者阻止封包进出只作私人用途或未提供服务的端口。
普遍来说,第一个方法多数用 在 INPUT 规则链,因为我们会希望控制哪些东西可以访问我们的机器;而第二个方法多数用在 OUTPUT 规则链,因为我们多数信赖那些离开(源自)我们机器的封包。
在命令行上使用 iptables 需要 root 的权限,因此你必须化身为 root 用户来做下面的事情。
![]() |
注意: 我们将会停用 iptables 及复位你的防火墙规则,因此假若你依赖你的 Linux 防火墙作为第一道防线,请特别留意这点。 | |
iptables 应该缺省被安装在所有 CentOS 3.x、4.x 及 5.x 上。你可以这样来检查 iptables 是否已安装在你的系统上:
$ rpm -q iptables iptables-1.3.5-1.2.1
要知道 iptables 是否正在运作中,我们可以检查 iptables 这个模块是否已被装入,并利用 -L 这个选项来查看活动的规则:
# lsmod | grep ip_tables ip_tables 29288 1 iptable_filter x_tables 29192 6 ip6t_REJECT,ip6_tables,ipt_REJECT,xt_state,xt_tcpudp,ip_tables
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere icmp any ACCEPT esp -- anywhere anywhere ACCEPT ah -- anywhere anywhere ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns ACCEPT udp -- anywhere anywhere udp dpt:ipp ACCEPT tcp -- anywhere anywhere tcp dpt:ipp ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
从上面我们可看见缺省的规则,与及访问 SSH 服务用的规则。
如果 iptables 并未被执行,你可以这样启用它:
# system-config-securitylevel
![]() |
注意: 此刻我们将会清除缺省的规则集。如果你是通过 SSH 远程连接到一台服务器来进行学习,你有可能会将自己拒诸这台机器之外。你必须将缺省的输入(input)政策 改为接纳(accept),然后才清除现有规则,接著你要预先加入一条容许你自己访问机器的规则,避免你将自己封锁在外。 | |
我们会采用一个以样例为本的方法来查看 iptables 的不同指令。在首个样例中,我们会创建一组简单的规则来设置一个「状态封包检验」(SPI)防火墙,容许对外的连接但拦截一切无用的对内连接:
# iptables -P INPUT ACCEPT # iptables -F # iptables -A INPUT -i lo -j ACCEPT # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -j ACCEPT # iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT # iptables -L -v
你应该得到这样的输出:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
现在让我们逐一看看以上的 8 个指令,并理解我们实际做了甚么:
我们需要做的最后一件事情,就是存储我们的规则,好让它们在下次开机时会自动被重新装入:
# /sbin/service iptables save
这样做会执行 iptables 的 init 脚本,它会执行 /sbin/iptables-ave 并将现有的 iptables 设置写进 /etc/sysconfig/iptables。开机时,iptables 的 init 脚本会通过 /sbin/iptables-restore 这个指令重新施用存储在 /etc/sysconfig/iptables 内的规则。
很明显的,在指令壳内输入这堆指令会颇乏味,因此运用 iptables 的最简易方法就是创建一个代你做以上一切的脚本。你可以将上面的指令输入到你喜欢的文字编辑器内并存储为 myfirewall,例如:
#!/bin/bash # # iptables 样例设置脚本 # # 清除 iptables 内一切现存的规则 # iptables -F # # 容让 SSH 连接到 tcp 端口 22 # 当通过 SSH 远程连接到服务器,你必须这样做才能群免被封锁於系统外 # iptables -A INPUT -p tcp --dport 22 -j ACCEPT # # 设置 INPUT、FORWARD、及 OUTPUT 链的缺省政策 # iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # # 设置 localhost 的访问权 # iptables -A INPUT -i lo -j ACCEPT # # 接纳属於现存及相关连接的封包 # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # # 存储设置 # /sbin/service iptables save # # 列出规则 # iptables -L -v
注: 我们可以在脚本内加入注释来提醒自己正在做甚么。
现在令脚本可以被执行:
# chmod +x myfirewall
我们现在可以编辑这个脚本,并在指 令壳内用以下指令来执行它:
# ./myfirewall
在上一个范本中,我们看见如何能接纳所有来自某个界面的封包,也就是 localhost 界面:
iptables -A INPUT -i lo -j ACCEPT
假设我们现在有两个独立的界面,分别是将我们连接到内联网的 eth0 及连接到外部互联网的 ppp0 拨号调制解调器(或者 eth1 适配器)。我们或许会想接纳所有来自内联网的对内封包,但依然过滤那些来自互联网的封包。我们可以这样做:
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT
让特别留意 —— 假如你接纳来自互联网界面(例如 ppp0 拨号调制解调器)的所有封包:
iptables -A INPUT -i ppp0 -j ACCEPT
你便等同於停用了 我们的防火墙!
将整个界面开放给对内的封包也许不够严谨,而你想拥有更多控制权来决 定接纳甚么及拒绝甚么。现在假设我们拥有一群采用 192.168.0.x 私人网络的计算机。我们可以打开防火墙给来自某个被信任 IP 地址(例如 192.168.0.4)的对内封包:
# 接纳来自被信任 IP 地址的封包 iptables -A INPUT -s 192.168.0.4 -j ACCEPT # change the IP address as appropriate
将这个指令分解,我们首先附加(-A)一条规则到 INPUT 链,指明来源(-s)IP 地址是 192.168.0.4 的封包都应该被接纳(ACCEPT)(请亦留意我们如何利用 # 符号来解释我们的脚本,因为 # 之后的所有文字都会被视为注释)。
当然,如果我们想接纳来自一 系列 IP 地址的封包,我们可以为每个被位任的 IP 地址加入一条规则,而这样做的确是可行的。但是假如它们的数量很多,一次过加入一系列 IP 地址会比较简单。要这样做,我们可以利用一个子网掩码或标准的斜线记法来指定 IP 地址的范围。举个例说,如果我们想将防火墙开放给来自整个 192.168.0.x(当中 x=1 到 254)范围的封包,我们可以用下面其中一个方法来达致目的:
# 接纳来自被信任 IP 地址的封包 iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # using standard slash notation iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT # using a subnet mask
最后,除了过滤单一的 IP 地址外,我们亦可以配对该设备的 MAC 地址。要这应做,我们需要装入一个容许过滤 MAC 地址的模块(mac 模块)。较早前当我们用 state 模块来配对 ESTABLISHED 及 RELATED 封包时,我们看见模块扩展 iptables 功能的例子。在这里我们除了检查封包的 IP 地址外,更利用 mac 模块来检查来源地的 MAC 地址:
# 接纳来自被信任 IP 地址的封包 iptables -A INPUT -s 192.168.0.4 -m mac --mac-source 00:50:8D:FD:E6:32 -j ACCEPT
首先我们用 -m mac 来装入 mac 模块,然后我们用 --mac-source 来指定来源 IP 地址(192.168.0.4)的 MAC 地址。你要为每个需要过滤的乙太网设备找出 mac 地址。以 root 的身份执行 ifconfig(无 线设备用 iwconfig)可以将 mac 地址告欣你。
这样可防止来源地的 IP 地址被伪装,因为只有真正源於 192.168.0.4(MAC 地址是 00:50:8D:5D:E6:32)的封包才会被接纳,而所有假扮源於该地址的封包都会被拦截。请注意,过滤 MAC 地址在互联网上不能使用,却绝对能正确地在内联网里运作。
由上面我们看见如何将新增规则在防火墙内,用来过滤符合某个界面或来 源 IP 地址的封包。 这样做让我们能经过防火墙访问某些被信任的来源(主机)。现在我们看看如何过滤协议及端口,好叫我们能进一步区别要接纳及拦截那些对内的封包。
在我们开始之先,我们须要知道个别服务所使用的协议及端口编号。让我们以 bittorrent 作为一个简单的样例。bittorrent 在 6881 端口上采用 tcp 协议,因此我们需要容许所有以 6881 为目标端口(它们抵步时所用的端口)的 tcp 封包。
# 接纳目标端口是 6881 号(bittorrent)的 tcp 封包 iptables -A INPUT -p tcp --dport 6881 -j ACCEPT
在这里我们附加(-A)一条规则到 INPUT 链,配对 tcp 协议(-p tcp)及从 6881 目标端口进入我们的机器(--dport 6881)。
注: 要配对目标或来源端口(--dport 或 --sport), 你必须先指定协议(tcp、udp、icmp、all)。
我们亦可以扩展以上的样例来包含一系列的端口,例如,接纳 6881 至 6890 端口上的所有 tcp 封包:
# 接纳目标端口是 6881-6890 号的 tcp 封包 iptables -A INPUT -p tcp --dport 6881:6890 -j ACCEPT
既然我们已经有基本认识,现在便可以合并这些规则。
UNIX/Linux 上一个受欢迎的服务就是容许远程登录的 SSH 服务。SSH 缺省使用 22 号端口及采用 tcp 协议。因此假若我们想允许远程登录,我们需要容许 tcp 连接到 22 号端口:
# 接纳目标端口是 22 号(SSH)的 tcp 封包 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这样做会开放 22 号端口(SSH)给所有对内的 tcp 连接,却会构成潜在的安全性威胁,因为骇客可以强行破入使用易猜测口令的户口。然而,假若我们知道那些通过 SSH 作远程登录的可信任机器的 IP 地址,我们便可以将访问权限制到那些来源 IP 地址。举个例说,如果我们只想将 SSH 的访问权开放给我们的私人内联网(192.168.0.x),我们可以将来源 IP 地址限制在这个范围:
# 接纳来自私人内联网,目标端口是 22 号(SSH)的 tcp 封包 iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT
利用来源 IP 进行过滤容让我们能安全地开放 22 号端口上的 SSH 给可信任的 IP 地址来访问。举个例说,我们可以用这个方法允许工作与家用机器之间的登录。对於其它 IP 地址来说,这个端口(与及服务)就好像了关闭了一样,而服务亦依被停用,因此扫描端口的骇客多数会略过我们。
这里只是很初步地介绍 iptables 可以做的事情,但我希望这份教学文档提供了一个良好的基础,帮助各位创建更复杂的规则集。
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-fw.html
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-iptables.html
Translation of revision 34
Feb 8th
1 增加组 groupadd ftpgroup
2 修改/etc/vsftpd/vsftpd.conf
将底下三行
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改为
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
3 增加用户 useradd -g ftpgroup -d /dir/to -M ftpuser
4 设置用户口令 passwd ftpuser
5 编辑文件: /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
peter
john
6 重 新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
第一次设置2~5,以后每增加一个用户,只需执行3~5即可.
Feb 8th
概述:我们的vps主机默认的环境是 英文语言,可能有些有我们中文环境不相符合,那么新购买的美国 linux VPS主机后,需要先进行初始化配置,以便于更适合我们国内的环境
环境:linux vps 主机 centos5系统
步骤:
1、新建立一个用户平常系统维护的帐号,这里假设为sysadmin
useradd sysadm passwd sysadm
2、只允许管理者登录ssh
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak vi /etc/ssh/sshd_config echo "AllowUsers sysadm" >> /etc/ssh/sshd_config
3、重启ssh服务,更多可以查看 在 vps主机配置安全ssh服务
/etc/init.d/sshd restart
4、安装vim增强功能
yum -y install vim-enhanced mv /bin/vi /bin/vi.bak ln -s /usr/bin/vim /bin/vi echo "set nu" >> /etc/vimrc
退出ssh,使用刚才的新建的sysadmin帐号登录
5、语言环境
yum -y install Deployment_Guide-zh-TW Deployment_Guide-zh-CN lv stardict < --安装中文支持包,大概30M echo "LANG=zh_CN.UTF-8" >> .bash_profile
Feb 8th
概述: 现在的互联网非常不安全,很多人没事就拿一些扫描机扫描ssh端口,然后试图连接ssh端口进 行暴力破解(穷举扫描),所以建议vps主机的空间,尽量设置复杂的ssh登录 密码,关于如何配置安全的ssh服务,请查看:在 vps主机配置安全ssh服务这篇文章,那么有什么办法设法阻止这些,就可以使用denyhosts这款软件了,DenyHosts是 Python语言写的一个程序,它会分析SSHD的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽 IP的功能。
DenyHosts官方网站为:http://denyhosts.sourceforge.net
目的: 阻止非授权的大量访问我们的ssh端口,造成负载过高
Feb 8th
症状表现:
Windows 7 及 Vista 的用户可能是启动但无反应
Windows XP 的 用户可能是应用程序发生异常UNknown Software exception (0xc000000d)
解决messenger不能启动问 题方法
1.
运行 repair.exe工 具,下载地址:
http://help.msn.cn/attachment/kb110038/repair.exe
2. 用户可以手工删除下述路径中的 bt.dat文件
XP:C:Documents and Settings用户名Local SettingsApplication Datawlmkv bl.Dat
Win7 & Vista: C:Users用户 名AppDataLocalwlmkvbl.Dat
Feb 6th
一、时区设置:
租用的经常是国外的服务器,需要调整时区并调整时间.当然方法有很多种,我说说我经常用,而且是最简单的方法吧.
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate us.pool.ntp.org
很简单吧,解析一下,第一句是把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/share/zoneinfo目录;然后第二句 是利用ntpdate同步标准时间.
二、关闭不需要的服务:
# ntsysv
以下仅列出需要启动的服务,未列出的服务一律推荐关闭:
atd
crond
irqbalance
microcode_ctl
network
sendmail
sshd
syslog
More >