顯示具有 LINUX設定筆記 標籤的文章。 顯示所有文章
顯示具有 LINUX設定筆記 標籤的文章。 顯示所有文章

2026年8月10日 星期一

使用 fail2ban 防禦惡意程式攻擊 (FreeBSD)

 1.安裝程式

pkg install py312-fail2ban

2.設定開啟啟動

sysrc fail2ban_enable="YES" 設定開機自動啟動。

3.修改設定檔

ee /usr/local/etc/fail2ban/jail.local

4.設定檔建議內容

[DEFAULT]

# 1. 填入自己的常用 IP,避免自己被鎖在門外

ignoreip = 127.0.0.1/8 ::1 你的常用IP

# 2. 讓 Fail2ban 透過 FreeBSD 的 ipfw 來執行封鎖

banaction = bsd-ipfw
banaction_allports = bsd-ipfw
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]

# 3. 啟用 SSH 防護並對準你的自定義日誌路徑

enabled = true
logpath = /www/log/auth.log
port = 22

failregex = sshd(?:-session)?\[\d+\]:.*(?:Failed password|Invalid user).*from <HOST>


5.設定完畢後重啟

service fail2ban restart


【常用指令】

1.即時查看目前被封鎖了誰

fail2ban-client status sshd

fail2ban-client status apache-scan #這個是自定義來掃appache的

2.手動解除封鎖(Unban)

fail2ban-client set sshd unbanip 欲解封的IP地址

3.手動強制封鎖(Ban)

fail2ban-client set sshd banip 欲封鎖的IP地址

4.查詢現在有哪些IP被禁

ipfw table 1 list

5.查詢封鎖規則

ipfw show

【封鎖掃網頁機器人】

1.建立自定義的 Filter(過濾器)

ee /usr/local/etc/fail2ban/filter.d/apache-scan.local

2.把以下內容貼上並存檔:

[Definition]

# 專門抓取 client IP 後面帶有大量檔案找不到、或企圖用目錄穿越 (..%2e) 進行攻擊的紀錄

failregex = ^\[[^\]]+\] \[[^\]]+\] \[[^\]]+\] \[client <HOST>:\d+\] (?:script '.*' not found or unable to stat|AH10244: invalid URI path)

ignoreregex =

3.在 jail.local 中加入新的封鎖規則

ee /usr/local/etc/fail2ban/jail.local

4.加入以下設定

[apache-scan]
enabled = true
port    = http,https
filter  = apache-scan
logpath = /您的網站錯誤日誌路徑/httpd-error.log
maxretry = 5
findtime = 5m
bantime  = 24h
banaction = bsd-ipfw

5.修改核心檔案 (如果你不想只鎖特定port的話,再改)

ee /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf

找到 ipfw -q add "$num" <blocktype> <block> from table\(<table>\) to me <port>;

改成 ipfw -q add "$num" <blocktype> <block> from table\(<table>\) to me;

把port拿掉  這樣才能設定封鎖全部的port


2025年4月25日 星期五

FreeBSD 14.1架站 - 設定安全性憑證 SSL紀錄

預計使用 Let's Encrypt 免費憑證

1.先搜尋可安裝的軟體

# pkg search certbot

py311-certbot-3.1.0,1          Let's Encrypt client
py311-certbot-apache-3.1.0     Apache plugin for Certbot
py311-certbot-dns-cloudflare-3.1.0 Cloudflare DNS plugin for Certbot
py311-certbot-dns-cpanel-0.4.0_1 CPanel DNS Authenticator plugin for Certbot
py311-certbot-dns-digitalocean-3.1.0 DigitalOcean DNS Authenticator plugin for Certbot
py311-certbot-dns-dnsimple-3.1.0 DNSimple DNS Authenticator plugin for Certbot
py311-certbot-dns-dnsmadeeasy-3.1.0 DNS Made Easy DNS Authenticator plugin for Certbot
py311-certbot-dns-gandi-1.5.0_1 Gandi LiveDNS plugin for Certbot
py311-certbot-dns-gehirn-3.1.0 Gehirn Infrastructure Service DNS Authenticator plugin for Certbot
py311-certbot-dns-google-3.1.0 Google Cloud DNS Authenticator plugin for Certbot
py311-certbot-dns-linode-3.1.0 Linode DNS Authenticator plugin for Certbot
py311-certbot-dns-luadns-3.1.0 LuaDNS Authenticator plugin for Certbot
py311-certbot-dns-nsone-3.1.0  NS1 DNS Authenticator plugin for Certbot
py311-certbot-dns-ovh-3.1.0    OVH DNS Authenticator plugin for Certbot
py311-certbot-dns-powerdns-0.2.1_2 PowerDNS DNS Authenticator plugin for Certbot
py311-certbot-dns-rfc2136-3.1.0 RFC 2136 DNS Authenticator plugin for Certbot
py311-certbot-dns-route53-3.1.0 Route53 DNS Authenticator plugin for Certbot
py311-certbot-dns-sakuracloud-3.1.0 Sakura Cloud DNS Authenticator plugin for Certbot
py311-certbot-dns-standalone-1.1_1 Standalone DNS Authenticator plugin for Certbot
py311-certbot-nginx-3.1.0      NGINX plugin for Certbot

2.安裝必要軟體
pkg install py311-certbot py311-certbot-apache

3.搜尋虛擬主機設定
# grep -r "VirtualHost \*:80" /usr/local/etc/apache24/

/usr/local/etc/apache24/extra/httpd-vhosts.conf.sample:<VirtualHost *:80>
/usr/local/etc/apache24/extra/httpd-vhosts.conf.sample:<VirtualHost *:80>
/usr/local/etc/apache24/extra/httpd-vhosts.conf:<VirtualHost *:80>
/usr/local/etc/apache24/extra/httpd-vhosts.conf:<VirtualHost *:80>

4. 修改虛擬主機設定
# ee /usr/local/etc/apache24/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/www/web/"
    ServerName gen-slps.slps.tn.edu.tw
    ServerAlias gen-slps.slps.tn.edu.tw
    ErrorLog "/usr/local/www/apache24/logs/dummy-host.example.com-error_log"
    CustomLog "/usr/local/www/apache24/logs/dummy-host.example.com-access_log" common
</VirtualHost>

5. 修改 httpd.conf
# ee /usr/local/etc/apache24/httpd.conf
1. Include /usr/local/etc/apache24/extra/httpd-vhosts.conf
2. #LoadModule rewrite_module libexec/apache24/mod_rewrite.so
3. #LoadModule ssl_module libexec/apache24/mod_ssl.so

6. 安裝並設定憑證,安裝完重開 apache
certbot --apache -d gen-slps.slps.tn.edu.tw
service apache24 restart

7. 增加虛擬主機設定,強制輸入ip的使用者進入網域
<VirtualHost *:80>
    ServerName 163.26.79.1
    Redirect permanent / https://gen-slps.slps.tn.edu.tw/
</VirtualHost>

後記:

※ 憑證位置 /usr/local/etc/letsencrypt/live/gen-slps.slps.tn.edu.tw/cert.pem

※ 查詢憑證到期日 
openssl x509 -in /usr/local/etc/letsencrypt/live/gen-slps.slps.tn.edu.tw/cert.pem -noout -dates

2024年11月21日 星期四

FreeBSD 14.1架站紀錄

 使用檔案:FreeBSD-14.1-RELEASE-amd64-dvd1.iso

1.設定SSH

修改方式:

# vi /etc/ssh/sshd_config
PermitRootLogin yes
PermitEmptyPasswords no
PasswordAuthentication yes
Port 22(修改Port的Num)

開機啟動:

# vi /etc/rc.conf加入
sshd_enable="yes"

重新啟動服務:

# /etc/rc.d/sshd restart
AllowUsers UserName(允許特定IP或User)

2.putty字型大小調整

3.安裝Appache

(1) pkg info 第一次安裝pkg / 之後可看裝了那些套件
(2) pkg update 更新pkg
    [1] pkg search 
    [2] pkg install
    [3] pkg delete
    [4] pkg info -a   
(3) 安裝Appache
    [1] pkg search apache
    [2] pkg install apache24-2.4.62
    [3] ee /etc/rc.conf 寫入 apache24_enable="YES"
    [4] service apache24 restart
    [5] /usr/local/etc/apache24/httpd.conf    (編輯設定) 
    [6] Options Indexes FollowSymLinks >> Options FollowSymLinks    (取消觀看目錄)
    [7] DirectoryIndex index.html index.htm index.php    (預設首頁格式)
(4) 安裝Mysql
    [1] pkg search mysql
    [2] pkg install mysql84-server
    [3] ee /etc/rc.conf 寫入 mysql_enable="YES"
    [4] service mysql-server restart
    [5] service mysql-server status    //測試mysql有沒有啟動
    [6] mysql_secure_installation        //設定Mysql的root密碼和一些安全性設定
    [7] 登入Mysql : mysql -u root -p
    [8] 離開 mysql> \q
    [9] /usr/local/etc/my.cnf    (my.cnf位置)
    [10] find / -name mysql.sock           (搜尋)
    [11] SELECT User, Host FROM mysql.user;        (觀看目前帳號狀況)
    [13] mysql指令
            show databases;
            use mysql
            show tables;
            select host, user, plugin from mysql.user;    (查詢密碼的編碼)
            alter user 'root' identified with mysql_native_password by 'passwd';    (修改密碼編碼)
                (因為mysql84預設值會把mysql_native_password關閉,所以需要做以下修改)
                ee  /usr/local/etc/my.cnf                        編輯my.cnf
                mysql_native_password           = ON    加入這行
                bind-address                    = 0.0.0.0        把127.0.0.1改成0.0.0.0
            alter user 'root' IDENTIFIED BY 'passwd';    (修改密碼)
            update mysql.user set host = '%' where user = 'root';    (開放所有IP連線)
            如有失敗,先設定密碼安全程度
            {1} SHOW VARIABLES LIKE 'validate_password%';    (查詢密碼策略)
            {2} set global validate_password.policy=0;                    (修改策略)
            {3} set global validate_password.length=1;                    (修改長度)
            {4} flush privileges;    (刷新權限表)
            {5} 參考資料 https://www.cnblogs.com/baby123/p/12221405.html

(5) 設定防火牆
    新建一個檔案 /etc/ipfw.rules
ipfw -q -f flush

ipfw add 100 allow all from any to any via lo0
ipfw add 200 check-state
ipfw add 300 allow tcp from any to any established
ipfw add 400 allow tcp from any to me 21,22 keep-state
ipfw add 500 allow tcp from any to me 80,443 keep-state
ipfw add 600 allow all from me to any keep-state

# Deny everything else
ipfw add 65000 deny log all from any to any

在 /etc/rc.conf 加上
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"

查看目前的防火牆設定的指令: ipfw list
    service ipfw start
    service ipfw status    

4.安裝PHP
    [1] pkg install php84
    [2] pkg install mod_php84
    [3] pkg install php84-session-8.4.0.r1    (安裝session)
    [4] pkg install php84-mysqli-8.4.0.r1    (安裝Mysqli延伸套件)
    [5] pkg install php84-mbstring-8.4.0.r1    (mbstring套件)
    [6] php.ini    ( /usr/local/etc/php.ini )
        (1) ;extension=mysqli    (更改為啟用)
        (2) ;session.save_path = "/var/lib/php/session"
        (3) ;date.timezone = Asia/Taipei    (改為啟動並設定台北時間)
        (4) extension=pdo_mysql (啟用PDO功能)

    [8] pkg install phpMyAdmin5-php84-5.2.2
        (下載最新版的phpmyadmin)
        To make phpMyAdmin available through your web site, I suggest        
        that you add something like the following to httpd.conf:                        
        Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"                            
        <Directory "/usr/local/www/phpMyAdmin/">                                        
                Options None                                                                                    
                AllowOverride Limit                                                                        
                Require local                                                                                    
                Require host .example.com                                                                
        </Directory>                                                                                            
    [9] /var/lib/php/session    (session儲存的地方)    
    [10] pkg install php84-sodium-8.4.0.r1     (phpmyadmin會用到的套件)
    [11] ;extension=sodium    (啟用)
    [12] pkg install php82-curl (為了爬蟲而安裝的套件)

5.掛載新的磁碟機
    [1] gpart create -s GPT ada1
    [2] gpart add -t freebsd-ufs -a 1M ada1
    [3] newfs -U /dev/ada1p1
    [4] mkdir /newdisk            (可以修改成自己想要的資料夾名稱)
    [5] 將磁碟項目加入到 /etc/fstab,讓啟動時會自動掛載新的磁碟:
            /dev/ada1p1 /newdisk ufs rw 2 2
    [6] mount /newdisk            (手動掛載 )

6.啟用FTP
    [1] 使用 inetd
            編輯 /etc/inetd.conf,將 ftp 設定開頭的 # 移除
            ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
            ftp     stream  tcp6    nowait  root    /usr/libexec/ftpd       ftpd -l
    [2]  vi /etc/rc.conf               //修改 rc.conf 設定檔
             inetd_enable="YES"             //加入此行
    [3] /etc/rc.d/inetd start               //啟動 inetd 服務
    [4] telnet localhost 21                 //測試 ftp 服務是否啟動
            quit                                 //輸入 quit 離開
    [5] 修改 /etc/ftpchroot    
        ※加入使用者名稱,讓該使用者不能離開他的家目錄
    [6]  ln -s /www/web /home/chocho/web  (在家目錄建立連結)

7.安裝Samba
    [1] pkg install samba419
    [2] ee /etc/rc.conf
            nmbd_enable="YES"
            winbindd_enable="YES"
            samba_enable="YES"
            samba_server_enable="YES"
    [3] ee /usr/local/etc/smb4.conf    (創立設定檔,原本為空的)
    [root]
        comment = root's stuff
        path = /root
        public = no
        browseable = yes
        writable = yes
        printable = no
        create mask = 0755
    [4] smbpasswd -a root  (建立用戶)
    [5] cd /usr/local/etc
    [6] service samba_server start
    [7] service samba_server status

8.帳號設定
    [1] 帳號相關檔案: /etc/passwd    、    /etc/shadow
    [2] 群組(group)相關檔案: /etc/group

9.修改系統時間
    [1]  tzsetup /usr/share/zoneinfo/Asia/Taipei    (更改時區為台灣)
    [2]  ntpdate -u pool.ntp.org    (線上同步對時)

10.設定安全性憑證 SSL

10.指令集
systat -if 1        查詢流量
uptime              查詢開機多久  

11.架設Bind DNS Server

(1) pkg install bind918
主程式/usr/local/sbin/named
設定檔/usr/local/etc/namedb/named.conf
區域檔/usr/local/etc/namedb/master/
啟動腳本 /usr/local/etc/rc.d/named


(2) sysrc named_enable="YES"     //啟動

(3) ee /usr/local/etc/namedb/named.conf

options {
        // All file and path names are relative to the chroot directory,
        // if any, and should be fully qualified.
        directory       "/usr/local/etc/namedb/working";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

    listen-on { any; };
    listen-on-v6 { none; };

    recursion yes;

    allow-recursion {
        163.26.79.15;
        114.27.35.108;
        127.0.0.1;
    };

    allow-query {
        163.26.79.15;
        114.27.35.108;
        127.0.0.1;
    };

    // 上游 DNS
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    forward only;

    dnssec-validation auto;

    response-policy {
        zone "rpz.blacklist";
    };

}


zone "rpz.blacklist" {
    type master;
    file "master/rpz.blacklist.zone";
    allow-query { none; };
};


(4) 開啟防火牆

ipfw add 510 allow tcp from any to me 53 keep-state
ipfw add 520 allow udp from any to me 53 keep-state

(5) 黑名單位置

/usr/local/etc/namedb/working/master/rpz.blacklist.zone

(6) 重開指令

service named restart



2023年3月29日 星期三

CentOS7更新Apache由2.4.6至2.4.56後產生的問題解決

1.Syntax error on line 31 of /etc/httpd/conf.d/php.conf: Invalid command 'php_value'

解決辦法 

(1) Connect to the server via SSH

(2) Create a backup of the configuration file:
# cp /etc/httpd/conf.d/php.conf{,.orig}

(3) Edit /etc/httpd/conf.d/php.conf
file in any text editor and edit the syntax to include the <IfModule mod_php5.c> tags:

BEFORE:

php_value session.save_handler "files"

php_value session.save_path "/var/lib/php/session"

AFTER:

<IfModule mod_php5.c>

php_value session.save_handler "files"

php_value session.save_path    "/var/lib/php/session"

</IfModule>

2.CentOS 7 安裝和升級 PHP 7.x

(1) 前置作業,安裝所須軟體:

yum install -y wget yum-utils

(2) 由於較新版的 PHP7 並末收錄在 CentOS 7,因此須先更新軟體來源:

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

rpm -Uvh epel-release-latest-7.noarch.rpm

rpm -Uvh remi-release-7.rpm

(3)安裝 PHP 與相關軟體

會直接安裝上述指定的 PHP 版本:

yum install -y php php-mysqlnd php-pdo php-xml php-pear php-devel php-mbstring re2c gcc-c++ gcc

(4) 移除下載的檔案:

rm epel-release-latest-7.noarch.rpm remi-release-7.rpm

(5)檢查 PHP 版本

檢查目前安裝的版本為 PHP 7.2.5:

[root@localhost ~]# php -v

PHP 7.2.5 (cli) (built: Apr 24 2018 19:12:06) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies


3.升級PHP之後還會遇到函數修改的問題

PHP>=5.5 時所有以 mysql_開頭的函數都會作廢 deprecated,改用以 mysqli_開頭的函數取代

(1) 建立資料庫連線,設定編碼

$DBNAME = "db";
$DBUSER = "user";
$DBPASSWD = "password";
$DBHOST = "localhost";
 
$conn = mysqli_connect( $DBHOST, $DBUSER, $DBPASSWD, $DBNAME);

// 設定連線編碼
mysqli_query( $conn, "SET NAMES 'utf8'");

if (empty($conn)){
  print mysqli_error($conn);
  die ("無法連結資料庫");
  exit;
}

(2) 取得資料

$sql ="select * from `table` where id=123";
$result = mysqli_query($conn, $sql);

備註

$result = mysql_query($sql) 修改成

$result = mysqli_query($conn,$sql) or die($sql);

(3) 關聯群組

$rs=mysql_fetch_array($result); 修改成

$rs=mysqli_fetch_array($result);

(4) 關閉連線

mysqli_close($conn);


5.強制讓PHP報錯
<?php
ini_set('display_errors','1');
error_reporting(E_ALL);

ini_set('display_errors','1');
error_reporting(E_ALL ^ E_NOTICE);
?>

2022年10月12日 星期三

在CentOS7下設定apache虛擬目錄

1、vim /opt/TRS/httpd/conf/httpd.conf

2、在最後添加內容:

Alias /test "/yum"        //定義虛擬目錄"/test",物理路徑爲"/yum"!

<Directory "/yum">        //定義目錄訪問權限

Options Indexes MultiViews FollowSymLinks      //固定格式

AllowOverride None             //固定格式

Order allow,deny    //匹配順序爲先允許,後拒絕

Allow from all        //設置允許所有人訪問

Require all granted    //對這個目錄給予授權

</Directory>

3、

<?

$real_folder="../../../home/chocho_server/data"; //必須指向真實目錄

$tmp_name = $_FILES["file1"]["tmp_name"][$key];

$filename = $_FILES["file1"]["name"][$key];

$dir="$real_folder/$date_folder/$class_folder";

move_uploaded_file($tmp_name, "$dir/$filename");

?>

2019年5月22日 星期三

LVM磁區同名的解決辦法

發生時機:兩顆硬碟都安裝了相同的 CentOS系統,而且都用了預設的 LVM 規劃

解決辦法:

一、先使用 vgdisplay 查看 VG 的 UUID

[root@sunss ~]# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.41 GB
PE Size 32.00 MB
Total PE 2381
Alloc PE / Size 2381 / 74.41 GB
Free PE / Size 0 / 0
VG UUID SYhnZ2-h4ol-C8x0-KUlu-AbKW-np2q-t51OP1

--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 148.94 GB
PE Size 32.00 MB
Total PE 4766
Alloc PE / Size 4766 / 148.94 GB
Free PE / Size 0 / 0
VG UUID TVigWQ-kpVi-fXun-uTbF-TUNW-NP3M-r7dROQ

二、用UUID來更改VG的 name

#改名
[root@sunss ~]# vgrename SYhnZ2-h4ol-C8x0-KUlu-AbKW-np2q-t51OP1 VolGroup01
Volume group "VolGroup00" successfully renamed to "VolGroup01"

CentOS7 硬碟壞軌後的資料救援

CentOS7 系統,如果當時在安裝時,是使用預設的磁碟分割方式的話

分割區會被做成LVM類型,因此若用 windows 系統做救援,要讀取裡面的磁區是讀不到的

檔案系統會是 XFS 格式,所以用別的 Linux 系統做救援 (例如 CentOS6),磁區可能會 mount 不上去



最近一個CentOS7 系統毀損,導致無法開機,因為硬碟有部分壞軌,救援進度非常緩慢

又因為CentOS7磁區特殊的規劃方式,導致我找了很多軟體,都讀不到硬碟裡面的資料

最後我選擇的方式是,找另外一顆硬碟安裝 CentOS 7

再用新的 CentOS7 系統去救援舊的硬碟

步驟:

1.先 pvscan 掃一下是否有LVM磁區

PV /dev/hdb2 VG centos lvm2 [98.80 GB / 0 free]
Total: 1 [98.80 GB] / in use: 1 [98.80 GB] / in no VG: 0 [0 ]

2. 就可以看到一個VG名稱叫 centos ,再用 vgchange -ay centos

這裡可能會因為VG名稱相同,而有錯誤

解決方式可參考

https://sou-wei.blogspot.com/2019/05/lvm.html

正確執行 vgchange -ay centos 後

可得到
  — Logical volume —
  LV Name                /dev/centos/home
  VG Name                centos
  LV UUID                ezpuV3-k5C3-utDL-uiEW-esH8-XuKf-i8AKXG
.....................(以下省略)



3.取得你要掛載的磁區名稱,就可以掛載了 mount /dev/centos/home /mnt




2018年10月24日 星期三

CentOS 7 架Web站紀錄

設定IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0    (ifcfg-enp2s0f0)

# 啟動網路介面
ifup eth0

# 停用網路介面
ifdown eth0

安裝 SSH

安裝SSH服務必要軟體
# sudo yum install openssh openssh-server

編輯SSH設定檔
# sudo vi /etc/ssh/sshd_config

搜尋Port 22
Port可以改成任一個大於1023的號碼

搜尋AllowUsers
修改後面的帳號,可以設定僅允許這些使用者帳號用SSH登入

AllowUsers 帳號1 帳號2 帳號3

搜尋PermitRootLogin
設定不允許root使用SSH登入
(預設是yes)
# Authentication:
PermitRootLogin no


重新啟動SSH服務
# sudo systemctl restart sshd.service

設定開機啟動SSH服務
# sudo systemctl enable sshd.service

設定防火牆允許此port
若為非預設記得自行更改–add-port=你的port號/tcp

# sudo firewall-cmd --permanent --zone=public --add-port=22/tcp

重新載入防火牆設定
# sudo firewall-cmd --reload

怎麼測試?
格式:登入帳號@IP或主機名稱
指令:-p SSH服務Port號
# ssh -p 22 andy@192.168.1.100


安裝PHP (PHP 5.4.16 )
yum install php

看php版本的指令
php -v

安裝GD函式庫
yum install php-gd

php設定筆記可參考
http://sou-wei.blogspot.com/2017/09/php.html

安裝 appache
1. yum install httpd -y

2.設定 apache 設定檔
vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
      #Options Indexes FollowSymLinks
        Options FollowSymLinks <==拿掉 Indexes,當找不到index.html時,不顯示整個目錄下的檔案
        AllowOverride None
        Order allow,deny
        Allow from all
 </Directory>

3. 輸入 「systemctl start httpd.service」指令啟動 Apache 網頁伺服器

4. 輸入 「systemctl enable httpd.service」安裝服務 (設定為開機自動啟動)

5.輸入 「firewall-cmd --permanent --add-service=http」指令設定防火牆,開放 http port 讓別人可以連接到這台網頁伺服器

6.輸入 「firewall-cmd --reload」重新載入防火牆設定

7. 網站目錄 /var/www/html


更新 appache 至2.4.56

查看yum repo內的apache版本

# yum info httpd
顯示2.4.6

安裝CodeIT 套件庫並更新

# cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
# yum install httpd
# systemctl restart httpd
完成檢查目前是2.4.56

$ httpd -v
Server version: Apache/2.4.56 (codeit)
Server built:   Mar  8 2023 08:23:16

之後會產生一些問題,問題解決紀錄:

安裝 vsftpd
1. 安裝 vsftpd:
# yum -y install vsftpd
# touch /etc/vsftpd/chroot_list
# systemctl enable vsftpd.service (設定為開機自動啟動)
# systemctl restart vsftpd (重新啟動的指令)

# firewall-cmd --permanent --zone=public --add-service=ftp (加入防火牆規則)
# firewall-cmd --reload (重新載入防火牆設定)

3. 編輯 "/etc/vsftpd/vsftpd.conf"
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES → anonymous_enable=NO


修改預設目錄的方法

開啟vsftpd的設定檔/etc/vsftpd/vsftpd.conf
加入user_config_dir=/etc/vsftpd/vsftpd_user_conf這一行
指定使用者的設定檔目錄所在位置

接著,在/etc/vsftpd/下設立vsftpd_user_conf這個目錄
在該目錄內設立一個空白檔案,檔名為使用者名稱


在該檔案中加入一行local_root=(我想指定的目錄位置)


出現錯誤:500 OOPS: cannot change directory:/home/user
這是因為SELinux關閉了ftp的功能
所以可以直接關閉SELinux,在終端機輸入
vim /etc/selinux/config

找到
SELINUX=enforcing
改成
SELINUX=disabled
就關掉selinux了,接著要輸入
setenforce 0
關掉SELinux的設定才會生效

接著再重新啟動server就可以了
# systemctl restart vsftpd (重新啟動的指令)


限制用戶只能在家目錄 (/etc/vsftpd/chroot_list 的用戶可不受限制)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
如要 ftp 的檔案列表可以看到跟 Server 上同樣的時間,請在檔案加入:
# 使用本地時區

use_localtime=YES


安裝 MySQL
1.取得安裝包
# wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
# rpm -ivh mysql-community-release-el6-5.noarch.rpm

2.檢查是否有可安裝的程式
# yum repolist all | grep mysql

3.安裝Mysql
# yum install mysql-community-server

4.啟動Mysql
# service mysqld start

5.登入Mysql並設定root密碼
# mysql -u root
# use mysql;
# update user set password=PASSWORD("root的密碼") where User='root';


# (選擇性設定)(讓root 可以透過任意IP連入)
update mysql.user set host = '%' where user = 'root';


6.開機自動啟動MySql
systemctl enable mysqld.service

7.Mysql安全設置
# mysql_secure_installation

8.完成 mysql_secure_installation 的問題後, 重新啟動 MySQL:

systemctl restart mysqld.service

嘗試連線 MySQL:
# mysql -u root -p
如果可以連接 MySQL 便安裝完成了。

離開 mysql>
指令: \q


防火牆的查詢與設定

查詢  # firewall-cmd --query-port=3306/tcp
開啟 # firewall-cmd --zone=public --add-port=3306/tcp --permanent
關閉 # firewall-cmd --zone=public --remove-port=3306/tcp --permanent
重啟 # firewall-cmd --reload

安裝 phpMyAdmin


錯誤訊息
The mbstring extension is missing. Please check your PHP configuration
yum install php-mbstring .
再 service httpd restart

錯誤訊息
缺少 mysqli 擴充套件。請檢查 PHP 設定
yum install php-mysql .
再 service httpd restart


#1045 無法登入MySQL 伺服器
# mysql
mysql>use mysql
mysql>update user set password=password("1234") where user="root";
mysql>flush privileges;

mysql>exit


安裝 Samba

1.用yum安裝套件
# yum install samba samba-client samba-common -y

2.設定
# vim /etc/samba/smb.conf

範例
[chocho]
       comment    = chocho
       path       = /samba_ggps/data/chocho
       browseable = yes
       writable = yes
       write list = chocho
       create mode    = 0770
       directory mode = 0770
       valid users = chocho
(valid users 很重要,之前忘記設定,進不去)

3.啟動
# systemctl start smb.service
# systemctl start nmb.service

4.開機自動載入 Samba

# systemctl enable smb.service

5.防火牆設定
# firewall-cmd --permanent --zone=public --add-service=samba
# firewall-cmd --reload


設定虛擬磁碟(掛載資料夾)

※掛載資料夾 前面是實體目錄  後面是虛擬目錄 (點後方目錄會連結到前方目錄)
mount --bind /home/chocho_server/samba /chocho_server/samba

※開機自動掛載 (在 /etc/fstab 中加入以下這行)

/home/chocho_server/samba /chocho_server/samba none defaults,bind 0 0


記錄檔的存放位置(刪除過大的紀錄檔)

系統錯誤的log檔存放位置

/var/log/httpd //appache伺服器

修改開機選單
1.查看目前系統上有幾個開機選單

grep "^menuentry" /boot/grub2/grub.cfg |cut -d "'" -f2

2.修改開機選單

vi /boot/grub2/grub.cfg


修改系統時間
# 檢查目前系統時區狀態
[root@test01 ~]# timedatectl
      Local time: Thu 2019-06-27 10:41:44 CST
  Universal time: Thu 2019-06-27 02:41:44 UTC
        RTC time: Thu 2019-06-27 02:41:43
       Time zone: Asia/Taipei (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

# 若要變更時區,首先列出所有的時區
timedatectl list-timezones

# 指定系統時區
timedatectl set-timezone Asia/Taipei

# 安裝 ntpdate
yum -y install ntp

# 校正時間
ntpdate time.stdtime.gov.tw