最近主機的Cpanel 服務一直被嘗試入侵,所以想要把預設的2082 Port 給改掉
vi /var/cpanel/cpanel.config
找到port=2082 把它給改掉,例如改為port=54321
接著 service cpanel restart
記得如果有架防火牆的話要把 port 542321 給開通
如果是csf 的話,要在/etc/csf/csf.conf 中,TCP_IN 加入54321 並重啟 csf
2015年11月27日 星期五
2015年9月29日 星期二
[備忘錄] Linux SSH 設定
順手記一下東西
1. 常見的crontab 中會用到 ,如
0 6 * * * /usr/local/cpanel/scripts/exim_tidydb > /dev/null 2>&1
時間格式:分時日月周
/dev/null :視為黑洞裝置
>:將結果覆蓋前一次紀錄:
>>:將結果累加到前一次紀錄
> /dev/null 2>&1:可避免錯誤訊息產生時塞爆root信箱
2. 限定SSH 多久時間登出,編輯/etc/ssh/sshd_conf 中,
ClientAliveInterval及ClientAliveCountMax,
ClientAliveInterval的單位是秒。
設定好後,連線逾時時間就是ClientAliveInterval * ClientAliveCountMax
如果 ClientAliveCountMax 要設成0,逾時時間就是ClientAliveInterval設定的秒數。
TCPKeepAlive 設定成 no
實際測試結果:
要把ClientAliveCountMax 要設成0才會有用,似乎是putty等等的連線軟體會自動幫你回應..
所以我調整如下
ClientAliveInterval 300 #5分鐘
ClientAliveCountMax 0
3.
限制一下最大密码错误次数3次,自己登录基本不会连续错3次,密码错误超过3次拒绝登录
MaxAuthTries 3
4.
通过修改 SSH 配置文件简便地增强安全性
Port 22960
LoginGraceTime 30
MaxAuthTries 3
Protocol 2
PermitRootLogin no
LoginGraceTime 允许一次登录花费 30 秒;如果用户花费的时间超过 30 秒,就不允许他访问,必须重新登录。
MaxAuthTries 把错误尝试的次数限制为 3 次,3 次之后拒绝登录尝试。
上面的 Protocol 2 行禁止使用比较弱的协议。
最后一行不允许任何人作为root用户登录,这会让黑客攻击更困难。
1. 常見的crontab 中會用到 ,如
0 6 * * * /usr/local/cpanel/scripts/exim_tidydb > /dev/null 2>&1
時間格式:分時日月周
/dev/null :視為黑洞裝置
>:將結果覆蓋前一次紀錄:
>>:將結果累加到前一次紀錄
> /dev/null 2>&1:可避免錯誤訊息產生時塞爆root信箱
2. 限定SSH 多久時間登出,編輯/etc/ssh/sshd_conf 中,
ClientAliveInterval及ClientAliveCountMax,
ClientAliveInterval的單位是秒。
設定好後,連線逾時時間就是ClientAliveInterval * ClientAliveCountMax
如果 ClientAliveCountMax 要設成0,逾時時間就是ClientAliveInterval設定的秒數。
TCPKeepAlive 設定成 no
實際測試結果:
要把ClientAliveCountMax 要設成0才會有用,似乎是putty等等的連線軟體會自動幫你回應..
所以我調整如下
ClientAliveInterval 300 #5分鐘
ClientAliveCountMax 0
3.
限制一下最大密码错误次数3次,自己登录基本不会连续错3次,密码错误超过3次拒绝登录
MaxAuthTries 3
4.
通过修改 SSH 配置文件简便地增强安全性
Port 22960
LoginGraceTime 30
MaxAuthTries 3
Protocol 2
PermitRootLogin no
LoginGraceTime 允许一次登录花费 30 秒;如果用户花费的时间超过 30 秒,就不允许他访问,必须重新登录。
MaxAuthTries 把错误尝试的次数限制为 3 次,3 次之后拒绝登录尝试。
上面的 Protocol 2 行禁止使用比较弱的协议。
最后一行不允许任何人作为root用户登录,这会让黑客攻击更困难。
2015年8月27日 星期四
移除Linux Kernel
今天下載更新了新的Kernel,
但是安裝後重開機一載入這個Kernel就死當了,
只好先移除這個Kernel...
移除方式
1.確認kernel版本:
rpm -q kernel
假設我要移除的是kernel-2.6.32-573.3.1.el6.x86_64
yum remove kernel-2.6.32-573.3.1.el6.x86_64
但是安裝後重開機一載入這個Kernel就死當了,
只好先移除這個Kernel...
移除方式
1.確認kernel版本:
rpm -q kernel
假設我要移除的是kernel-2.6.32-573.3.1.el6.x86_64
yum remove kernel-2.6.32-573.3.1.el6.x86_64
2015年8月24日 星期一
php.ini 中 display_error=off 無作用 , Notice: Undefined index: 依舊出現
今天遇到一件怪事,明明已經在/etc/php.ini中設定display_errors = Off,
但是還是出現Notice: Undefined index:
找了一下相關資料,有可能是/etc/php.ini 中設定了 log_errors = On
但是未指定error_log檔案
可以由 /etc/php.ini找到 error_log = syslog 並將註記拿掉,重啟httpd試試看。
但是還是出現Notice: Undefined index:
找了一下相關資料,有可能是/etc/php.ini 中設定了 log_errors = On
但是未指定error_log檔案
可以由 /etc/php.ini找到 error_log = syslog 並將註記拿掉,重啟httpd試試看。
------------------------------
2016.09.20 紀錄
某伺服器依照上述設定後,仍舊在網頁上show出錯誤訊息
於是再加入
error_reportint=Off
就OK了
2016.09.20 紀錄
某伺服器依照上述設定後,仍舊在網頁上show出錯誤訊息
於是再加入
error_reportint=Off
就OK了
2015年8月12日 星期三
/etc/php.ini中,short_open_tag設置成On 無作用
今天在弄舊的系統,升級後發現一堆php的網頁異常,
最後找到問題點應該是php.ini裡面的short_open_tag 參數要打開
於是很直覺的修改/etc/php.ini,並重啟Apache
但是仍然不正常..
利用 php -i|grep short_open_tag 去看一下目前 short_open_tag的狀態,依舊是off
上網找了一下資料,才發現有舊系統的php設定檔不一定是放在/etc/php.ini中
哪如何去查系統是吃哪一個php.ini呢!?
用php -i|grep \.ini看一下配置文件 -->重點!!
果然找到應該是修改/usr/local/lib/php.ini
修改該文件參數後就正常了
最後找到問題點應該是php.ini裡面的short_open_tag 參數要打開
於是很直覺的修改/etc/php.ini,並重啟Apache
但是仍然不正常..
利用 php -i|grep short_open_tag 去看一下目前 short_open_tag的狀態,依舊是off
上網找了一下資料,才發現有舊系統的php設定檔不一定是放在/etc/php.ini中
哪如何去查系統是吃哪一個php.ini呢!?
用php -i|grep \.ini看一下配置文件 -->重點!!
果然找到應該是修改/usr/local/lib/php.ini
修改該文件參數後就正常了
Mysql 資料表 crashed 修復
今天接到通知說某系統有點問題..
連到SERVER看log,
發現在執行SQL語法時一直出錯,
INSERT INTO top10pkt (ip,dstport,pktsent) SELECT srcip,dstport,sum(pktsent) AS pkts FROM ntop.intflow WHERE stime>='2015-08-12 15:10:00' AND stime<'2015-08-12 15:11:00' GROUP BY srcip,dstport ORDER BY pkts DESC LIMIT 0,10 ;
ERROR 144 (HY000): Table './netflow/top10pkt' is marked as crashed and last (automatic?) repair failed
去網路上找了資料,處理如下
1.
先停掉資料庫
/etc/rc.d/init.d/mysqld stop
連到SERVER看log,
發現在執行SQL語法時一直出錯,
INSERT INTO top10pkt (ip,dstport,pktsent) SELECT srcip,dstport,sum(pktsent) AS pkts FROM ntop.intflow WHERE stime>='2015-08-12 15:10:00' AND stime<'2015-08-12 15:11:00' GROUP BY srcip,dstport ORDER BY pkts DESC LIMIT 0,10 ;
ERROR 144 (HY000): Table './netflow/top10pkt' is marked as crashed and last (automatic?) repair failed
去網路上找了資料,處理如下
1.
先停掉資料庫
/etc/rc.d/init.d/mysqld stop
2.
切到mysql中的毀損資料庫的資料夾 (我是用netflow)
cd /var/lib/mysql/netflow/
3.
修復所有資料表
myisamchk -r *.MYI
也可以修復單一資料表
myisamchk -r top10pkt .MYI (剛剛報錯誤的是top10pkt 這個table)
4. 重啟mysql
/etc/rc.d/init.d/mysqld restart
2015年6月18日 星期四
利用cacti量測網路流量 CentOS6.6
最近又要玩網路流量的東西,之前是使用MRTG的套件,跟今天玩得cacti來比,功能與便利性差太多了,如果需要量測網路流量,建議使用這個cacti套件
[系統需求]:基本的MySQL、apache ,假設都已經安裝完畢
[安裝rrdtool與smnp套件]: yum install rrdtool net-snmp php-snmp net-snmp-utils
[安裝cacti]:
可以先在網頁目錄下建立資料夾cacti,
[root@cacti ~]#mkdir /var/www/html/cacti/
[root@cacti ~]#cd /var/www/html/cacti/
[root@cacti cacti]#wget http://www.cacti.net/downloads/cacti-0.8.8d.tar.gz
順利下載後,解壓縮
[root@cacti cacti]#tar -zxvf cacti-0.8.8d.tar.gz
接著將解壓縮的資料移到 /var/www/html/cacti/
[root@cacti cacti]#mv cacti-0.8.8d/* .
可以看一下裡面資料的擁有者為1000,
先把這些資料owner指定給linux系統內一個成員內一個成員(假設是fyshung)
[root@cacti cacti]#chown -R fyshung /var/www/html/cacti/
[資料庫]:
資料庫剛剛安裝完畢,尚未設定資料庫root 密碼等等,可以利用 mysql_secure_installation 這個指令來簡單設定。
假設已經設定好資料庫,我們先建立cacti這個資料庫
[root@cacti cacti]#mysql -u root -p
mysql>CREATE DATABASE cacti;
指定可存取資料庫cacti的使用者cacti並設定密碼是PassWorD,
mysql>GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'PassWorD';
匯入成功後,修改cacti設定檔
[root@cacti cacti]# vi include/config.php
紅字部分改為剛剛設定資料庫的使用者與密碼。
新增要繪製的圖表
Console -> Graph Trees-->Add
填寫要顯示圖表的名稱,假設這個圖表示綜合大樓的流量表,填寫完畢後按[Create]送出
接下來新增要量測的設備
Console -> Devices ->Add
其中填寫幾項
Description:此設備的名稱(如綜合大樓L3交換器)
Hostname:設備IP
Host Template:可選擇cacti預設的樣板來量測設備,
一般都是選擇Cisco Router
或是Generic SMNP-enabled Host(一般具SNMP功能的主機),
看需求而定
接下來要填的是要用SNMP 第幾版的功能,部分設備SNMP V1量測會有問題,建議V1以上
SNMP Community 如果設備沒改就用預設的public(我們基於安全都改掉了),
設定都沒問題的話就按下[create]
如果成功的話,接下來會看到該設備的相關訊息,
沒問題的話,就按下 [Create Graphs for this Host]
接下來是選擇要針對那些Port來量測數據,勾選之後,選擇[In/Out Bytes With Total Bandwidth],記得按下[Create],如果設備有很多Port,可按next到下一頁
(記得先Create再到下一頁)
完成後,把設備的加入剛剛的圖表Graph Trees裡的項目中
點選[Devices],選擇剛剛設定的Device,將他加入要顯示的圖表中
完成後再到Graphs -> Tree Mode去看看是否有產生資料
你可以直接跑一遍 poller.php產生資料,或是等crontab設定的時間執行後再去看看
[系統需求]:基本的MySQL、apache ,假設都已經安裝完畢
[安裝rrdtool與smnp套件]: yum install rrdtool net-snmp php-snmp net-snmp-utils
[安裝cacti]:
可以先在網頁目錄下建立資料夾cacti,
[root@cacti ~]#mkdir /var/www/html/cacti/
[root@cacti ~]#cd /var/www/html/cacti/
[root@cacti cacti]#wget http://www.cacti.net/downloads/cacti-0.8.8d.tar.gz
順利下載後,解壓縮
[root@cacti cacti]#tar -zxvf cacti-0.8.8d.tar.gz
接著將解壓縮的資料移到 /var/www/html/cacti/
[root@cacti cacti]#mv cacti-0.8.8d/* .
可以看一下裡面資料的擁有者為1000,
先把這些資料owner指定給linux系統內一個成員內一個成員(假設是fyshung)
[root@cacti cacti]#chown -R fyshung /var/www/html/cacti/
[資料庫]:
資料庫剛剛安裝完畢,尚未設定資料庫root 密碼等等,可以利用 mysql_secure_installation 這個指令來簡單設定。
假設已經設定好資料庫,我們先建立cacti這個資料庫
[root@cacti cacti]#mysql -u root -p
mysql>CREATE DATABASE cacti;
指定可存取資料庫cacti的使用者cacti並設定密碼是PassWorD,
mysql>GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'PassWorD';
設定完畢後,將資料格式匯入資料庫中,在剛剛下載的cacti檔案裡有cacti.sql這個檔案,
將這個檔案匯入即可
[root@cacti ~]# cd /var/www/html/cacti
[root@cacti cacti]# mysql -u root -p cacti < cacti.sql匯入成功後,修改cacti設定檔
[root@cacti cacti]# vi include/config.php
找到
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "PassWorD";
$database_port = "3306";
$database_ssl = false;
[開始設定]
開啟瀏覽器,輸入網址後,會跳出設定畫面,
因為我們是新安裝,所以選擇New Install ,
如果沒問題的話,最後會到輸入帳號密碼的畫面
預設帳號密碼 admin / admin ,
成功登入後會要求變更密碼
說明一下,輪詢機制是透過poller.php這隻程式去執行的,
接者,要修改一下poller.php的權限,
假設未來執行的帳號為cacti這個user
[root@cacti cacti]# adduser cacti
[root@cacti cacti]# passwd cacti
[root@cacti cacti]# chown cacti poller.php
接著rra這資料夾也需要修改擁有者
[root@cacti cacti]# chown cacti rra
log 下的 cacti.log也需要變更擁有者
[root@cacti cacti]# chown cacti log/cacti.log
[設定排程]
以 cacti這個user的角色來設定crontab,我設定每5分鐘撈一次資料。
[root@cacti cacti]# crontab -u cacti -e
/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
你也可以直接下指令撈資料
[root@cacti cacti]# php poller.php
[新增網路設備]
安裝完畢後,新增要繪製的圖表
Console -> Graph Trees-->Add
填寫要顯示圖表的名稱,假設這個圖表示綜合大樓的流量表,填寫完畢後按[Create]送出
接下來新增要量測的設備
Console -> Devices ->Add
其中填寫幾項
Description:此設備的名稱(如綜合大樓L3交換器)
Hostname:設備IP
Host Template:可選擇cacti預設的樣板來量測設備,
一般都是選擇Cisco Router
或是Generic SMNP-enabled Host(一般具SNMP功能的主機),
看需求而定
接下來要填的是要用SNMP 第幾版的功能,部分設備SNMP V1量測會有問題,建議V1以上
SNMP Community 如果設備沒改就用預設的public(我們基於安全都改掉了),
設定都沒問題的話就按下[create]
如果成功的話,接下來會看到該設備的相關訊息,
沒問題的話,就按下 [Create Graphs for this Host]
接下來是選擇要針對那些Port來量測數據,勾選之後,選擇[In/Out Bytes With Total Bandwidth],記得按下[Create],如果設備有很多Port,可按next到下一頁
(記得先Create再到下一頁)
完成後,把設備的加入剛剛的圖表Graph Trees裡的項目中
點選[Devices],選擇剛剛設定的Device,將他加入要顯示的圖表中
完成後再到Graphs -> Tree Mode去看看是否有產生資料
你可以直接跑一遍 poller.php產生資料,或是等crontab設定的時間執行後再去看看
2015年4月14日 星期二
查詢 Linux 系統各個服務占用記憶體比例
Check the memory usage for all processes
#ps -eo pmem,pid,cmd | sort -k 1 -nr
It will display %MEM in first column, PID in second and Command in third for all running processes as below.
3.9 3094 /usr/sbin/mysqld
2.1 1779 iscsiuio
2.0 5371 /home/btest/TopCMM/
1.4 15386 /usr/bin/php
1.0 14465 /usr/local/apache/bin/httpd -DSSL
0.8 14515 /usr/local/apache/bin/httpd -DSSL
0.7 14514 /usr/local/apache/bin/httpd -DSSL
0.7 14511 /usr/local/apache/bin/httpd -DSSL
0.3 31925 lfd - sleeping
0.3 15377 /usr/sbin/exim -bd -q60m
0.2 9527 tailwatchd
0.2 5577 /usr/bin/python -tt /usr/sbin/yum-updatesd
0.2 2934 /usr/sbin/named -u named
Top 5 processes by memory usage.
To diplay top 5 processes by memory usage enter below command:
#ps -eo pmem,pid,cmd | sort -k 1 -nr | head -5
Output:
3.5 3094 /usr/sbin/mysqld
2.1 1779 iscsiuio
2.0 5371 /home/btest/TopCMM/
1.4 15386 /usr/bin/php
1.0 14465 /usr/local/apache/bin/httpd -DSSL
2015年4月10日 星期五
透過 scp Command 上傳資料
如要上傳 /root/md2014.tar.gz 的資料到 140.129.1.33,存放路徑為 /tmp
而ssh 的Port為5589
command:
scp -P 5598 /root/md2014.tar.gz root@140.129.1.33:/tmp/
而ssh 的Port為5589
command:
scp -P 5598 /root/md2014.tar.gz root@140.129.1.33:/tmp/
2015年1月21日 星期三
防火牆 iptables與csf 設定檔位置
CentOS 常用的防火牆是 iptables,
讀取的設定檔主要放在 /etc/sysconfig/iptables ,
如果修改前沒有把握的話,可以先將 /etc/sysconfig/iptables 備份起來 ,
如果設定有問題再把它蓋回去,
重啟防火牆即可 (/etc/rc.d/init.d/iptables restrat)
csf 防火牆路徑 /etc/csf/csf.conf
阻擋的IP名單:/etc/csf/csf.deny
讀取的設定檔主要放在 /etc/sysconfig/iptables ,
如果修改前沒有把握的話,可以先將 /etc/sysconfig/iptables 備份起來 ,
如果設定有問題再把它蓋回去,
重啟防火牆即可 (/etc/rc.d/init.d/iptables restrat)
csf 防火牆路徑 /etc/csf/csf.conf
阻擋的IP名單:/etc/csf/csf.deny
2015年1月15日 星期四
git 安裝與使用
git Server建置:
首先先在CentOS 6.6的環境上安裝git,
步驟可以參考
http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/
安裝完畢後,之後要處理的步驟大概只有以下
1.不同使用者讀寫的問題
2.本機端的程式碼的處理
首先調整每個使用者的umask,為了避免到時候每個使用著在push時與Linux 檔案權限衝突而無法讀寫造成PUSH失敗,先修改每個使用者的umask
利用su 切換到每個使用者帳號,再編輯 .bash_profile
(假設是git,群組名稱可以自訂,方便辨識即可...)。
1. 新增git 群組 : groupadd git
2. 把fyshung與jlhung這兩個程式設計師的帳號加入 git 的group中。
直接編輯/etc/group
假設我的版本控制的路徑是/var/git/xxx.git
(建議資料夾名稱以XXX.git來命名,這樣比較好分辨是git版本控制用的,如tchinfo.git)
mkdir /var/git/tchinfo.git
cd /var/git/tchinfo.git
git init --bare --share
完成後,接下來就是要把該資料夾的讀寫權限開出來給git群組,
如此一來,在git群組下的fyshung與jlhung這兩個帳號就可對該資料夾做存取的動作,
直接針對/var/git/去做處理
chgrp -R git /var/git/
chmod g+rwx -R /var/git
首先下載 msysgit 與 TortoiseGit,
接著先安裝msysgit ,再安裝TortoiseGit
我都是直接下一步下一步去安裝,
直接下commamd
git init
git remote add origin ssh://userid@serverip:port/路徑
(說明:
假設我的git server IP 為:123.45.67.89,ssh 的 port 由21改為9999,登入帳號 fyshung
資料夾路徑/var/git/tchinfo.git
所以我的command為
git remote add origin ssh://fyshung@123.45.67.89:9999/var/git/tchinfo.git)
接下來把程式碼丟上去
git add . (注意這個.)
git commit -m 'tchinfo 第一版' (註解..)
git push origin master
進到原來的資料夾你會發現不太一樣了
到這裡就完成了第一版的上傳
如果其他人要拉資料下來,直接點滑鼠右鍵,選擇git Clone
首先先在CentOS 6.6的環境上安裝git,
步驟可以參考
http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/
安裝完畢後,之後要處理的步驟大概只有以下
1.不同使用者讀寫的問題
2.本機端的程式碼的處理
首先調整每個使用者的umask,為了避免到時候每個使用著在push時與Linux 檔案權限衝突而無法讀寫造成PUSH失敗,先修改每個使用者的umask
利用su 切換到每個使用者帳號,再編輯 .bash_profile
不同使用者讀寫的問題:圈在同一個群組裡面
假設開發的小組成員有:fyshung與jlhung這兩個程式設計師的帳號,要先處理同一個資料夾要允許這兩個人可以讀寫。所以將這兩個帳號加入同一個群組中(假設是git,群組名稱可以自訂,方便辨識即可...)。
1. 新增git 群組 : groupadd git
2. 把fyshung與jlhung這兩個程式設計師的帳號加入 git 的group中。
直接編輯/etc/group
假設我的版本控制的路徑是/var/git/xxx.git
(建議資料夾名稱以XXX.git來命名,這樣比較好分辨是git版本控制用的,如tchinfo.git)
mkdir /var/git/tchinfo.git
cd /var/git/tchinfo.git
git init --bare --share
完成後,接下來就是要把該資料夾的讀寫權限開出來給git群組,
如此一來,在git群組下的fyshung與jlhung這兩個帳號就可對該資料夾做存取的動作,
直接針對/var/git/去做處理
chgrp -R git /var/git/
chmod g+rwx -R /var/git
本機端的程式碼處理
到這邊server端已經弄差不多了,接下來處理用戶端的電腦..首先下載 msysgit 與 TortoiseGit,
接著先安裝msysgit ,再安裝TortoiseGit
我都是直接下一步下一步去安裝,
安裝完畢後,進入到版本控制的資料夾
假設我的程式碼在E:\git\tchinfo
點選滑鼠右鍵,選擇Git Bash
直接下commamd
git init
git remote add origin ssh://userid@serverip:port/路徑
(說明:
假設我的git server IP 為:123.45.67.89,ssh 的 port 由21改為9999,登入帳號 fyshung
資料夾路徑/var/git/tchinfo.git
所以我的command為
git remote add origin ssh://fyshung@123.45.67.89:9999/var/git/tchinfo.git)
接下來把程式碼丟上去
git add . (注意這個.)
git commit -m 'tchinfo 第一版' (註解..)
git push origin master
進到原來的資料夾你會發現不太一樣了
到這裡就完成了第一版的上傳
如果其他人要拉資料下來,直接點滑鼠右鍵,選擇git Clone
程式碼的修改
假設我們針對資料夾下面的某一支程式去修改,如login_image20130725_delete.php這支程式
這時你會發現這支程式前面多了驚嘆號
表示它的內容異動了..
若是只有一筆資料,可直接用以下方式單筆同步到git
若是有多筆資料的情況下,可依據以下方式將他傳到git...
訂閱:
文章 (Atom)