CentOS系統安裝完常規初始化操作
環境準備:
1)設定本地國際化語言為en_US.UTF-8
[root@c58 ~]# sed -i 's/^\(LANG=\).*$/\1"en_US.UTF-8"/' /etc/sysconfig/i18n
[root@c58 ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[root@c58 ~]# LANG=en_US.UTF-8
2)更新系統軟體包
備份預設yum源:
[root@c58 ~]# find /etc/yum.repos.d -name '*.repo' -exec mv {} {}.bak \;
新增163yum源:
RedHat 5或CentOS 5:
[root@c58 ~]# wget -P /etc/yum.repos.d
RedHat 6或CentOS 6
[root@c58 ~]# wget -P /etc/yum.repos.d
新增epel yum源:
RedHat 5.x 32bit:
[root@c58 ~]# rpm -ivh
RedHat 5.x 64bit:
[root@c58 ~]# rpm -ivh
RedHat 6.x 32bit:
[root@c58 ~]# rpm -ivh
RedHat 6.x 64bit:
[root@c58 ~]# rpm -ivh
更新證書:
[root@c58 ~]# yum -y upgrade ca-certificates --disablerepo=epel
更新系統所有軟體包:
[root@c58 ~]# yum clean all
[root@c58 ~]# yum makecache
[root@c58 ~]# yum -y upgrade
下文以RedHat 5/CentOS 5為例
一、服務最小化原則
關閉所有開機自啟動服務,僅開啟sshd、crond、network、iptables、syslog(RedHat 5)/rsyslog(RedHat 6),然後在此基礎上按需新增需要開機啟動的服務。
1)關閉所有開機自啟動服務
[root@c58 ~]# for i in `chkconfig --list | awk '{if ($1~/^$/) {exit 0;} else {print $1}}'`; do chkconfig $i off; done
2)開啟基礎服務
[root@c58 ~]# for i in sshd network syslog crond iptables; do chkconfig $i on; done
3)檢視開啟的服務
[root@c58 ~]# chkconfig --list | grep '3:on'
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
二、使用者登入限制
1)禁止使用root使用者使用遠端ssh
[root@c58 ~]# cd /etc/ssh
[root@c58 ssh]# cp sshd_config sshd_config~
[root@c58 ssh]# sed -i 's/#\(PermitRootLogin \)yes/\1no/' sshd_config
[root@c58 ssh]# grep 'PermitRoot' /etc/ssh/sshd_config
PermitRootLogin no
2)禁用登入提示資訊
[root@c58 ssh]# >/etc/motd
3)修改ssh的預設監聽埠(tcp:22)
#這裡修改為tcp的11983埠
[root@c58 ssh]# sed -i 's/#\(Port \)22/\11983/' sshd_config
[root@c58 ssh]# grep 'Port ' sshd_config
Port 11983
4)只允許指定的ip可以ssh(可選)
方法1(使用tcpwrapper):
#只允許192.168.124.0網段的ip使用ssh
[root@c58 ~]# echo "sshd:192.168.124.0/255.255.255.0" >> /etc/hosts.allow
[root@c58 ~]# echo "sshd:ALL" >> /etc/hosts.deny
方法2(使用iptables):
注意:遠端操作時需留心,以免把自己也拒絕而導致無法遠端連線。如只允許192.168.1.0網段的所有ip進行ssh,其他所有ip都拒絕。
#先允許自己的ip,以防被後面的操作誤傷
[root@c58 ~]# iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
#允許192.168.1.0網段
[root@c58 ~]# iptables -I 2 INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
#拒絕所有
[root@c58 ~]# iptables -I 3 INPUT -p tcp --dport 22 -j DROP
#儲存iptables的設定:
[root@cloud ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables~
[root@c58 ~]# iptables-save > /etc/sysconfig/iptables
最後,重啟sshd服務使上面配置生效(不用擔心重啟時已開啟的遠端終端連線會斷開,重啟只會對新開的終端生效)
[root@c58 ssh]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
三、使用者及命令許可權最小化
建立一個普通使用者tom,將其加入sudo組,該使用者作為系統管理員
[root@cloud ~]# groupadd sudo #建立sudo組
[root@cloud ~]# useradd -G sudo tom #建立tom使用者,加入sudo組
[root@cloud ~]# passwd tom #設定tom使用者的登陸密碼
修改sudo配置檔案,授權sudo組的使用者可以以root身份執行所有命令(可以針對不同使用者授予不同的命令執行許可權,這裡允許執行所有命令,生產環境中系統管理員應該按需為使用者分配儘可能少的可執行命令,以實現許可權最少化),使用者執行的所有sudo操作都將記錄在/var/log/sudo.log中,以便日後的安全事件排查。執行命令如下:
[root@cloud ~]# cat >> /etc/sudoers <<eof
> %sudo ALL=(root) ALL
> Defaults logfile=/var/log/sudo.log
> EOF
[root@cloud ~]# visudo -c
[root@cloud ~]# echo "local2.debug /var/log/sudo.log" >> /etc/syslog.conf
[root@cloud ~]# /etc/init.d/syslog restart
注:"visudo -c"命令用於檢查/etc/sudoers檔案的語法正確性
四、核心安全引數設定
[root@cloud ~]# vim /etc/sysctl.conf #新增如下內容:
#關閉對ping包的響應(可選,一般不建議,因為不方便網路故障時的排查)
net.ipv4.icmp_echo_ignore_all = 1
#關閉對廣播ping的響應
net.ipv4.icmp_echo_ignore_broadcasts = 1
#開啟syncookie用於防範syn flood攻擊,當出現syn等待佇列溢位時(syn數量超過tcp_max_syn_backlog的設定值),啟用cookie來處理,server在回覆syn_ack前會先請求client回覆一個序列號,該序列號中要求包含原先syn包中的資訊,如果序列號不正確,則server端會忽略此syn連線。
net.ipv4.tcp_syncookies = 1
#設定sync_ack的最大重傳次數,預設值為5,範圍0-255,重傳5次的時間大約為180s
net.ipv4.tcp_synack_retries = 3
# 設定當keepalive開啟的情況下,keepalive訊息的傳送間隔,預設為2小時(由於目前網路攻擊等因素,造成了利用這個進行的攻擊很頻繁,如果兩邊建立了連線,然後不傳送任何資料或者rst/fin訊息,那麼持續的時間就是2小時,成就了空連線攻擊,tcp_keepalive_time就是預防此情形的.)
net.ipv4.tcp_keepalive_time = 1200
儲存退出後,執行"sysctl -p"命令將以上設定載入到核心使其立刻生效
五、 核心效能相關引數設定(可選)
[root@cloud ~]# vim /etc/sysctl.conf #新增如下內容:
#設定syn等待佇列的長度,對於記憶體大於128M的機器,預設值是1024,在併發請求較大時,可以調大該值
net.ipv4.tcp_max_syn_backlog
#開啟timewait重用。允許將time_wait socket重新用於新的tcp連線
net.ipv4.tcp_tw_reuse = 1
#開啟tcp連線中time_wait socket的快速回收
net.ipv4.tcp_tw_recycle = 1
#TCP傳送keepalive探測以確定該連線已經斷開的次數,預設值為9
net.ipv4.tcp_keepalive_probes = 5
#指定探測訊息傳送的頻率,該值乘以tcp_keepalive_probes就可以得到從開始探測到連線被刪除所需的時間。預設值為75,也就是沒有活動的連線將在大約11分鐘以後將被丟棄。(對於普通應用來說,這個值有一些偏大,可以根據需要改小.特別是web類伺服器需要改小該值,15是個比較合適的值)
net.ipv4.tcp_keepalive_intvl = 15
#表示系統同時保持TIME_WAIT socket的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並輸出警告資訊。預設為180000,改為5000.對於squid伺服器來說,此引數可以控制TIME_WAIT套接字的最大數量,避免squid伺服器被大量的TIME_WAIT socket拖死。
net.ipv4.tcp_max_tw_buckets = 5000
#表示向外連線的埠範圍。預設值很小:32768~61000,改為1024~65000
net.ipv4.ip_local_port_range=1024 65000
儲存退出後,執行"sysctl -p"命令將以上設定載入到核心使其立刻生效
</eof
1)設定本地國際化語言為en_US.UTF-8
[root@c58 ~]# sed -i 's/^\(LANG=\).*$/\1"en_US.UTF-8"/' /etc/sysconfig/i18n
[root@c58 ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[root@c58 ~]# LANG=en_US.UTF-8
2)更新系統軟體包
備份預設yum源:
[root@c58 ~]# find /etc/yum.repos.d -name '*.repo' -exec mv {} {}.bak \;
新增163yum源:
RedHat 5或CentOS 5:
[root@c58 ~]# wget -P /etc/yum.repos.d
RedHat 6或CentOS 6
[root@c58 ~]# wget -P /etc/yum.repos.d
新增epel yum源:
RedHat 5.x 32bit:
[root@c58 ~]# rpm -ivh
RedHat 5.x 64bit:
[root@c58 ~]# rpm -ivh
RedHat 6.x 32bit:
[root@c58 ~]# rpm -ivh
RedHat 6.x 64bit:
[root@c58 ~]# rpm -ivh
更新證書:
[root@c58 ~]# yum -y upgrade ca-certificates --disablerepo=epel
更新系統所有軟體包:
[root@c58 ~]# yum clean all
[root@c58 ~]# yum makecache
[root@c58 ~]# yum -y upgrade
下文以RedHat 5/CentOS 5為例
一、服務最小化原則
關閉所有開機自啟動服務,僅開啟sshd、crond、network、iptables、syslog(RedHat 5)/rsyslog(RedHat 6),然後在此基礎上按需新增需要開機啟動的服務。
1)關閉所有開機自啟動服務
[root@c58 ~]# for i in `chkconfig --list | awk '{if ($1~/^$/) {exit 0;} else {print $1}}'`; do chkconfig $i off; done
2)開啟基礎服務
[root@c58 ~]# for i in sshd network syslog crond iptables; do chkconfig $i on; done
3)檢視開啟的服務
[root@c58 ~]# chkconfig --list | grep '3:on'
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
二、使用者登入限制
1)禁止使用root使用者使用遠端ssh
[root@c58 ~]# cd /etc/ssh
[root@c58 ssh]# cp sshd_config sshd_config~
[root@c58 ssh]# sed -i 's/#\(PermitRootLogin \)yes/\1no/' sshd_config
[root@c58 ssh]# grep 'PermitRoot' /etc/ssh/sshd_config
PermitRootLogin no
2)禁用登入提示資訊
[root@c58 ssh]# >/etc/motd
3)修改ssh的預設監聽埠(tcp:22)
#這裡修改為tcp的11983埠
[root@c58 ssh]# sed -i 's/#\(Port \)22/\11983/' sshd_config
[root@c58 ssh]# grep 'Port ' sshd_config
Port 11983
4)只允許指定的ip可以ssh(可選)
方法1(使用tcpwrapper):
#只允許192.168.124.0網段的ip使用ssh
[root@c58 ~]# echo "sshd:192.168.124.0/255.255.255.0" >> /etc/hosts.allow
[root@c58 ~]# echo "sshd:ALL" >> /etc/hosts.deny
方法2(使用iptables):
注意:遠端操作時需留心,以免把自己也拒絕而導致無法遠端連線。如只允許192.168.1.0網段的所有ip進行ssh,其他所有ip都拒絕。
#先允許自己的ip,以防被後面的操作誤傷
[root@c58 ~]# iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
#允許192.168.1.0網段
[root@c58 ~]# iptables -I 2 INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
#拒絕所有
[root@c58 ~]# iptables -I 3 INPUT -p tcp --dport 22 -j DROP
#儲存iptables的設定:
[root@cloud ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables~
[root@c58 ~]# iptables-save > /etc/sysconfig/iptables
最後,重啟sshd服務使上面配置生效(不用擔心重啟時已開啟的遠端終端連線會斷開,重啟只會對新開的終端生效)
[root@c58 ssh]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
三、使用者及命令許可權最小化
建立一個普通使用者tom,將其加入sudo組,該使用者作為系統管理員
[root@cloud ~]# groupadd sudo #建立sudo組
[root@cloud ~]# useradd -G sudo tom #建立tom使用者,加入sudo組
[root@cloud ~]# passwd tom #設定tom使用者的登陸密碼
修改sudo配置檔案,授權sudo組的使用者可以以root身份執行所有命令(可以針對不同使用者授予不同的命令執行許可權,這裡允許執行所有命令,生產環境中系統管理員應該按需為使用者分配儘可能少的可執行命令,以實現許可權最少化),使用者執行的所有sudo操作都將記錄在/var/log/sudo.log中,以便日後的安全事件排查。執行命令如下:
[root@cloud ~]# cat >> /etc/sudoers <<eof
> %sudo ALL=(root) ALL
> Defaults logfile=/var/log/sudo.log
> EOF
[root@cloud ~]# visudo -c
[root@cloud ~]# echo "local2.debug /var/log/sudo.log" >> /etc/syslog.conf
[root@cloud ~]# /etc/init.d/syslog restart
注:"visudo -c"命令用於檢查/etc/sudoers檔案的語法正確性
四、核心安全引數設定
[root@cloud ~]# vim /etc/sysctl.conf #新增如下內容:
#關閉對ping包的響應(可選,一般不建議,因為不方便網路故障時的排查)
net.ipv4.icmp_echo_ignore_all = 1
#關閉對廣播ping的響應
net.ipv4.icmp_echo_ignore_broadcasts = 1
#開啟syncookie用於防範syn flood攻擊,當出現syn等待佇列溢位時(syn數量超過tcp_max_syn_backlog的設定值),啟用cookie來處理,server在回覆syn_ack前會先請求client回覆一個序列號,該序列號中要求包含原先syn包中的資訊,如果序列號不正確,則server端會忽略此syn連線。
net.ipv4.tcp_syncookies = 1
#設定sync_ack的最大重傳次數,預設值為5,範圍0-255,重傳5次的時間大約為180s
net.ipv4.tcp_synack_retries = 3
# 設定當keepalive開啟的情況下,keepalive訊息的傳送間隔,預設為2小時(由於目前網路攻擊等因素,造成了利用這個進行的攻擊很頻繁,如果兩邊建立了連線,然後不傳送任何資料或者rst/fin訊息,那麼持續的時間就是2小時,成就了空連線攻擊,tcp_keepalive_time就是預防此情形的.)
net.ipv4.tcp_keepalive_time = 1200
儲存退出後,執行"sysctl -p"命令將以上設定載入到核心使其立刻生效
五、 核心效能相關引數設定(可選)
[root@cloud ~]# vim /etc/sysctl.conf #新增如下內容:
#設定syn等待佇列的長度,對於記憶體大於128M的機器,預設值是1024,在併發請求較大時,可以調大該值
net.ipv4.tcp_max_syn_backlog
#開啟timewait重用。允許將time_wait socket重新用於新的tcp連線
net.ipv4.tcp_tw_reuse = 1
#開啟tcp連線中time_wait socket的快速回收
net.ipv4.tcp_tw_recycle = 1
#TCP傳送keepalive探測以確定該連線已經斷開的次數,預設值為9
net.ipv4.tcp_keepalive_probes = 5
#指定探測訊息傳送的頻率,該值乘以tcp_keepalive_probes就可以得到從開始探測到連線被刪除所需的時間。預設值為75,也就是沒有活動的連線將在大約11分鐘以後將被丟棄。(對於普通應用來說,這個值有一些偏大,可以根據需要改小.特別是web類伺服器需要改小該值,15是個比較合適的值)
net.ipv4.tcp_keepalive_intvl = 15
#表示系統同時保持TIME_WAIT socket的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並輸出警告資訊。預設為180000,改為5000.對於squid伺服器來說,此引數可以控制TIME_WAIT套接字的最大數量,避免squid伺服器被大量的TIME_WAIT socket拖死。
net.ipv4.tcp_max_tw_buckets = 5000
#表示向外連線的埠範圍。預設值很小:32768~61000,改為1024~65000
net.ipv4.ip_local_port_range=1024 65000
儲存退出後,執行"sysctl -p"命令將以上設定載入到核心使其立刻生效
</eof
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9034054/viewspace-2073006/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CentOS 7最小化安裝對系統初始化CentOS
- CentOS系統安裝NginxCentOSNginx
- CentOS系統安裝dockerCentOSDocker
- Linux系統安裝——Centos 7.6安裝LinuxCentOS
- kickstart半自動安裝centos系統與pxe自動安裝centos系統CentOS
- Linux系統安裝01-centos7系統安裝LinuxCentOS
- Centos系統安裝JenkinsCentOSJenkins
- CentOS 6.5系統安裝配置CentOS
- linux安裝完後的操作!Linux
- CentOS6.X系統安裝CentOS
- CentOS7.X系統安裝CentOS
- CentOS系統R安裝RODBC包CentOS
- centos 6x系統下原始碼安裝mysql操作記錄CentOS原始碼MySql
- CentOS7安裝完之後的配置CentOS
- CentOS 6 安裝MAVEN及系統配置CentOSMaven
- CentOS 7.8安裝PostgreSQL(生產系統)CentOSSQL
- centos7系統安裝xrdp教程。CentOS
- Centos7系統安裝wgetCentOSwget
- 安裝Centos6.7的系統配置CentOS
- Linux系統安裝(CentOS6)LinuxCentOS
- CentOS 7.3怎麼安裝?CentOS 7.3.1611系統安裝配置圖文教程CentOS
- 虛擬機器VMware 安裝centos、常規配置、共享檔案等虛擬機CentOS
- Centos 常見操作CentOS
- Centos 7.4_64位系統安裝指南CentOS
- 爛泥:KVM安裝centos6.5系統CentOS
- 安裝虛擬機器和CentOS系統虛擬機CentOS
- Docker常規安裝簡介Docker
- XP系統安裝完後須做的20件大事
- nginx手動安裝基於類centos系統環境安裝NginxCentOS
- CentOS7系統GitLab安裝部署教程。CentOSGitlab
- 騰訊雲Centos7系統安裝phpmyAdminCentOSPHP
- centos7 安裝elk日誌分析系統CentOS
- centos7系統msyqldump 客戶端安裝CentOS客戶端
- git常規操作Git
- 安裝CentOS系統 --基於windowx的Hyper-vCentOS
- centos7系統安裝mysql(MariaDB)的教程CentOSMySql
- CentOS 7.8作業系統安裝(用於生產)CentOS作業系統
- 【docker專欄2】CentOS作業系統安裝DockerCEDockerCentOS作業系統