二:安裝Denyhosts
先下載該軟件,然后解壓安裝
進行解壓再進入到源目錄
# tar -xzvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
執行Python腳本進行安裝,
# python setup.py install
程序腳本自動安裝到/usr/share /denyhosts
庫文件自動安裝到/usr/lib/python2.4/site-packages /DenyHosts
denyhosts.py安裝到/usr/bin
三: 設置啟動腳本
# cd /usr/share/denyhosts/
拷貝模板文件
# cp daemon-control-dist daemon-control
設置好啟動腳本的所屬用戶和權限
# chown root daemon-control
# chmod 700 daemon-control
生成Denyhost的主配置文件,(將模板文件中開頭是#的過濾后再導入到Denyhost.cfg)
# grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
編輯Denyhost.cfg文件,根據自己需要進行相應的修改
----------------denyhosts.cfg--------------------------------------
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根據這個文件來判斷的,如還有其他的只要更改名字即可,例如將secure改為secure.1等
HOSTS_DENY = /etc/hosts.deny
#控制用戶登陸的文件,將多次連接失敗的IP添加到此文件,達到屏蔽的作用
PURGE_DENY =
#過多久后清除已經禁止的,我這里為空表示永遠不解禁
BLOCK_SERVICE = sshd
#禁止的服務名,如還要添加其他服務,只需添加逗號跟上相應的服務即可
DENY_THRESHOLD_INVALID = 1
#允許無效用戶失敗的次數
DENY_THRESHOLD_VALID = 2
#允許有效用戶登錄失敗的次數
DENY_THRESHOLD_ROOT = 3
#允許root登錄失敗的次數
HOSTNAME_LOOKUP=NO
# 是否做域名反解,這里表示不做
ADMIN_EMAIL = 。。。。
#管理員郵件地址,它會給管理員發郵件
DAEMON_LOG = /var/log/denyhosts
#自己的日志文件
其他:
AGE_RESET_VALID=5d #(h表示小時,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
#用戶的登陸失敗計數會在多長時間后重置為0
RESET_ON_SUCCESS = yes
#如果一個ip登陸成功后,失敗的登陸計數是否重置為0
DAEMON_SLEEP = 30s
#當以后臺方式運行時,每讀一次日志文件的時間間隔。
DAEMON_PURGE = 1h
#當以后臺方式運行時,清除機制在 HOSTS_DENY 中終止舊條目的時間間隔,這個會影響PURGE_DENY的間隔。
將 Denyhost啟動腳本添加到自動啟動中
# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.d/rc.local
啟動Denyhost的進程
# /usr/share/denyhosts/daemon-control start
可以查看到Denyhost在運行中
# ps -ef |grep deny
在另外一臺機器上使用ssh進行連接,當在連續幾次輸入錯誤的密碼后,會被自動阻止掉,在一定時內不可以再連接ssh連接記錄的日志文件。
查看我的/etc/hosts.deny文件發現里面已經有135條記錄。
# cat /etc/hosts.deny | wc -l
135
最近一直關注Linux服務器的的/var/log/secure文件,發現里面有大量的ssh失敗嘗試記錄,如下
查看了該IP的嘗試次數和時間,一直從凌晨4點到下午1點
多達9288次的掃描,從圖中可以看出正在嘗試各種用戶名來連接,真他媽的沒事干,也不知道用什么破軟件在那里無聊,幸好我的密碼也夠復雜,要不然嘿嘿..........
我服務器上的secure有多個,按時間進行截取的,我對其中的secure.1文件進行統計。
獲取其中的ip地址和數量:
# grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure.1 | sort | uniq -c
如此之多,讓我不禁冒出冷汗,真嚇人,也不知道我的服務器上面有什么好東西,那么喜歡,真二?。。?!當然如果是自己通過ssh成功連接,記錄也會在這里面。
為了防止此類無聊之人再次光臨,就得想辦法不讓他們進行掃描,本人在網上查找資料,得知Denyhosts軟件可以達到該效果,DenyHosts是Python語言寫的一個程序,它會分析sshd的日志文件(/var/log/secure),當發現重復的攻擊時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏IP的功能。如果是手動添加的話不把人累死才怪。
DenyHosts官方網站為:http://denyhosts.sourceforge.net
本文已附上附件,是從該網站下載的,版本為較新的2.6版。
一:檢查安裝要求
首選檢查Sshd是否支持 Tcpwrap,只有支持Tcpwrap才可以安裝Denyhost
# ldd /usr/sbin/sshd |grep wrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00864000) //出現此信息時表示支持
再檢查 Python的版本,Python2.3以上版本可以直接安裝
# python -V
Python 2.4.3
均達到要求
范例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個范例來說,
# 我先將工作目錄變換到 /usr/local/src 底下,并且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同喔!
范例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透過 tar -ztvf 來查閱 tarfile 內的文件名稱,如果單只要一個文件,
# 就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
范例五:將 /etc/ 內的所有文件備份下來,并且保存其權限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!
范例六:在 /home 當中,比 2005/06/01 新的文件才備份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
范例七:我要備份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例八:將 /etc/ 打包后直接解開在 /tmp 底下,而不產生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分別代表 standard output, standard input 與管線命令啦!
# 這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋啰!
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重啟apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每周一到周三的11點重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啟apache
名稱 : crontab
使用權限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出用戶目前的crontab.
crontab-e[user]-編輯用戶目前的crontab.
crontab-d[user]-刪除用戶目前的crontab.
crontab-c dir- 指定crontab的目錄。
crontab文件的格式:M H D m d cmd.
1. sudo apt-get install xinetd telnetd
2. 安裝成功后,系統也會有相應提示(好象7.10才有,6.10就沒看到)
sudo vi /etc/inetd.conf并加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
3. sudo vi /etc/xinetd.conf并加入以下內容:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
4. sudo vi /etc/xinetd.d/telnet并加入以下內容:
# default: on
# description: The telnet server serves telnet sessions; it uses "
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
5. 重啟機器或重啟網絡服務sudo /etc/init.d/xinetd restart
6. 使用TELNET客戶端遠程登錄;ifconfig -a顯示本機地址。
code: sudo /etc/init.d/networking restart
What Network Services are Running?
$ netstat -tanup
or if you just want tcp services
$ netstat -tanp
or
$ netstat -ap|grep LISTEN|less
This can be helpful to determine the services running.
Need stats on dropped UDP packets?
$ netstat -s -u
or TCP
$ netstat -s -t
or summary of everything
$ netstat -s
or looking for error rates on the interface?
$ netstat -i
Listening interfaces?
$ netstat -l
(Tip above provided by Amos Shapira)
Popularity: unranked [?]
|
|
|
用戶賬號的管理工作主要涉及到用戶賬號的添加、修改和刪除。
添加用戶賬號就是在系統中創建一個新賬號,然后為新賬號分配用戶號、用戶組、主目錄和登錄Shell等資源。剛添加的賬號是被鎖定的,無法使用。
align="left" border="0" cellpadding="0" cellspacing="4" width="350"
|
useradd 選項 用戶名
其中各選項含義如下:
-c comment 指定一段注釋性描述。
-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
-g 用戶組 指定用戶所屬的用戶組。
-G 用戶組,用戶組 指定用戶所屬的附加組。
-s Shell文件 指定用戶的登錄Shell。
-u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。
用戶名 指定新賬號的登錄名。
例如:
# useradd –d /usr/sam -m sam
此命令創建了一個用戶sam,其中-d和-m選項用來為登錄名sam產生一個主目錄/usr/sam(/usr為默認的用戶主目錄所在的父目錄)。
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一個用戶gem,該用戶的登錄Shell是/bin/sh,它屬于group用戶組,同時又屬于adm和root用戶組,其中group用戶組是其主組。
增加用戶賬號就是在/etc/passwd文件中為新用戶增加一條記錄,同時更新其他系統文件如/etc/shadow, /etc/group等。這幾個文件的內容在后面會做詳細介紹。
Linux提供了集成的系統管理工具userconf,它可以用來對用戶賬號進行統一管理。
如果一個用戶的賬號不再使用,可以從系統中刪除。刪除用戶賬號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。刪除一個已有的用戶賬號使用userdel命令,其格式如下:
userdel 選項 用戶名
常用的選項是-r,它的作用是把用戶的主目錄一起刪除。
例如:
# userdel sam
此命令刪除用戶sam在系統文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時刪除用戶的主目錄。
修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。
修改已有用戶的信息使用usermod命令,其格式如下:
usermod 選項 用戶名
常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值。另外,有些系統可以使用如下選項:
-l 新用戶名
這個選項指定一個新的賬號,即將原來的用戶名改為新的用戶名。
例如:
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令將用戶sam的登錄Shell修改為ksh,主目錄改為/home/z,用戶組改為developer。
用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令后才可以使用,即使是指定空口令。
指定和修改用戶口令的Shell命令是passwd。超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。命令的格式為:
passwd 選項 用戶名
可使用的選項:
-l 鎖定口令,即禁用賬號。
-u 口令解鎖。
-d 使賬號無口令。
-f 強迫用戶下次登錄時修改口令。
如果默認用戶名,則修改當前用戶的口令。
例如,假設當前用戶是sam,則下面的命令修改該用戶自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超級用戶,可以用下列形式指定任何用戶的口令:
# passwd sam
New password:*******
Re-enter new password:*******
普通用戶修改自己的口令時,passwd命令會先詢問原口令,驗證后再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給用戶;而超級用戶為用戶指定口令時,就不需要知道原口令。
為了系統安全起見,用戶應該選擇比較復雜的口令,例如最好使用8位長的口令,口令中包含有大寫、小寫字母和數字,并且應該與姓名、生日等不相同。
為用戶指定空口令時,執行下列形式的命令:
# passwd -d sam
此命令將用戶sam的口令刪除,這樣用戶sam下一次登錄時,系統就不再詢問口令。
passwd命令還可以用-l(lock)選項鎖定某一用戶,使其不能登錄,例如:
# passwd -l sam
1.sudo gedit /etc/apt/sources.list
編輯你的源列表,將原來的內容全部刪除,添加下面列表中最適合你的源(注意不要全部添加),選擇一個最合適你的即可,復制到你的列表中,然后保存列表。
2.sudo apt-get update 更新源列表信息
可以在運行“sudo apt-get update ”時查看一下錯誤信息,把不能連接的源刪除再重新運行“sudo apt-get update ”。
3.sudo apt-get upgrade 升級
或者用ubuntu自帶的更新管理器升級也可
Ubuntu 9.10源列表:
1.我們得到一個新軟件,在安裝之前,一般都要先查看一下這個軟件包里有什么內容,假設這個文件是:Linux-1.4-6.i368.rpm,我們可以用這條命令查看:
rpm -qpi Linux-1.4-6.i368.rpm
系統將會列出這個軟件包的詳細資料,包括含有多少個文件、各文件名稱、文件大小、創建時間、編譯日期等信息。
2.上面列出的所有文件在安裝時不一定全部安裝,就像Windows下程序的安裝方式分為典型、完全、自定義一樣,Linux也會讓你選擇安裝方式,此時我們可以用下面這條命令查看軟件包將會在系統里安裝哪些部分,以方便我們的選擇:
rpm -qpl Linux-1.4-6.i368.rpm
3.選擇安裝方式后,開始安裝。我們可以用rpm-ivh Linux-1.4-6.i368.rpm命令安裝此軟件。在安裝過程中,若系統提示此軟件已安裝過或因其他原因無法繼續安裝,但若我們確實想執行安裝命令,可以在 -ivh后加一參數“-replacepkgs”:
rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm
4.有時我們卸載某個安裝過的軟件,只需執行rpm-e <文件名>命令即可。
5.對低版本軟件進行升級是提高其功能的好辦法,這樣可以省去我們卸載后再安裝新軟件的麻煩,要升級某個軟件,只須執行如下命令:rpm -uvh <文件名>,注意:此時的文件名必須是要升級軟件的升級補丁
6.另外一個安裝軟件的方法可謂是Linux的獨到之處,同時也是RMP強大功能的一個表現:通過FTP站點直接在線安裝軟件。當找到含有你所需軟件的站點并與此網站連接后,執行下面的命令即可實現在線安裝,譬如在線安裝Linux-1.4-6.i368.rpm,可以用命令:
rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm
7.在我們使用電腦過程中,難免會有誤操作,若我們誤刪了幾個文件而影響了系統的性能時,怎樣查找到底少了哪些文件呢?RPM軟件包提供了一個查找損壞文件的功能,執行此命令:rpm -Va即可,Linux將為你列出所有損壞的文件。你可以通過Linux的安裝光盤進行修復。
8.Linux系統中文件繁多,在使用過程中,難免會碰到我們不認識的文件,在Windows下我們可以用“開始/查找”菜單快速判斷某個文件屬于哪個文件夾,在Linux中,下面這條命令行可以幫助我們快速判定某個文件屬于哪個軟件包:
rpm -qf <文件名>
9.當每個軟件包安裝在Linux系統后,安裝文件都會到RPM數據庫中“報到”,所以,我們要查詢某個已安裝軟件的屬性時,只需到此數據庫中查找即可。注意:此時的查詢命令不同于1和8介紹的查詢,這種方法只適用于已安裝過的軟件包!命令格式:
rpm -參數 <文件名>
UNIX/Linux下SSH2安裝步驟
1.下載軟件包,下載地址www.ssh.com,下載最新軟件包SSH2,最好下載源程序軟件包自己進行自行編譯。
2.解壓及安裝:
# tar -zxvf ssh2-2.4.0.tar.gz
# cd ssh2-2.4.0
# ./configure
# make
#make install
安裝完成。這一過程實際上將服務器軟件包及客戶端軟件一起安裝了,不必再次安裝客戶端軟件包。
已編譯好的二進制軟件包以rpm格式存放在ftp: //ftp.ssh.com/pub/ssh/rpm目錄下。它是一個給非商業用戶使用的軟件包,軟件包名稱為:ssh-2.4.0- 1.i386.rpm,其中包含了對X Window的支持,另一個不支持X Window的軟件包為ssh- 2.4.0-1nox.i386.rpm,下載后可以直接安裝。安裝程序將SSH2軟件包安裝在/usr/local/bin及 /usr/local/sbin下windows NT上安裝SSH在NT及Windows 2000 Server環境下,可選擇的服務器軟件有:Vshell、ssh2-2.4.0.win-server。
Vshell是由Van Dyke提供的一個可以在Windows NT/2000環境下提供SSH2服務器的軟件包://www.vandyke.com/download/index.html。另一個運行在 Windows環境下的SSH服務器是 SSHWinServer.exe,可以直接從ftp://ftp.ssh.com/pub/ssh目錄下下載。Windows環境下的安裝十分簡單,本文不再多介紹。與UNIX不同,在Windows環境下,需要分別安裝服務器及客戶端軟件包。運行在Windows環境下的客戶端軟件,也可以從以上兩個站點下載得到,文件名分別為SecureCRT及SSHWin-2.4.0-pl2。