2015年11月27日 星期五

變更 Cpanel Port

最近主機的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年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用户登录,这会让黑客攻击更困难。

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























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試試看。
------------------------------
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

修改該文件參數後就正常了






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
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檔案裡有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/


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



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
























不同使用者讀寫的問題:圈在同一個群組裡面

假設開發的小組成員有: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...