CentOS是linux中搭建服務器比較推崇的系統,其是來自於Red Hat Enterprise Linux依照開源規定生成的,去除了那些非開源的軟件,可以說是對穩定性和成本考慮的較好的選擇。
雖然安全性對於服務器來說是至關重要的,但是在下面我們的學習階段,我們僅以好用為主要指標,穿插的會說明哪些地方我們在真正運行時要考慮的安全問題。
安裝完系統,首先關閉SELinux,其是增強安全性的一項功能,會對初學者在學習過程中帶來不必要的麻煩,等後面入門了再慢慢研究也不遲。
設定文件為:/etc/syscofig/selinux ,將SELINUX=enforcing改為SELINUX=disabled。
一、網絡配置
網卡配置文件位置:/etc/sysconfig/network-scripts
普通網卡:ifcfg-eth0
無線網卡:ifcfg-wlan0
配置方法,分靜態IP和動態IP
自動獲取(DHCP):
DEVICE=eth0 TYPE=Ethernet HWaddr 08:00:27:70:2A:32 //MAC地址 UUID=273e13cd-70cf-4a90-b3b0-f515c79ec09b ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcp靜態IP:
DEVICE=eth0 HWADDR=08:00:27:70:2A:32 ONBOOT=yes IPADDR=192.168.1.106 //靜態IP地址 BOOTPROTO=static //與dhcp相對,獲取協議,另設為none也行。 NETMASK=255.255.255.0 TYPE=Ethernet GATEWAY=192.168.1.1 DNS1=x.x.x.x //根據實際改 IPV6INIT=no //靜態IPV6DNS的配置文件為:/etc/resolv.conf
網絡服務管理命令:service network {start|stop|status|restart|reload|force-reload}
當然如果覺得文件配置不容易操作的話,也可以安裝GUI的軟件:
sudo yum -y install setuptool ntsysv system-config-firewall-tui system-config-network-tui
運行setup開始圖形話配置。
PS:
1、 禁用ping命令,即ICMP協議:echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all 啟用改為0.
2、單一網卡添加另一IP:ifconfig eth0:0 192.168.1.106 up //第三個IP為eth0:1
刪除:ip addr delete 192.168.1.106 dev eth0 //此法是動態添加,重啟網卡,配置失效
查看ip:ip addr show或ifconfig
靜態方法就是新建/etc/sysconfig/network-scripts/ifcfg-eth0:0
配置文件內容和ifcfg-eth0相僅,僅IPADDR處綁定的IP不同
3、雙網卡,到這裡應該知道,第二塊網卡叫eth1,配置文件為ifcfg-eth1,內容同eth0
如果想用雙網卡組建負載均衡的配置,則通過ifcfg-bond0來設置
//ifcfg-eth0 DEVICE=eth0 //eth1配置文件設為eth1 ONBOOT=yes BOOTPROTO=none //static 也行 USERCTL=no MASTER=bond0 //配置交給bond0統一設置 SLAVE=yes
//bond0 DEVICE=bond0 ONBOOT=yes IPADDR=192.168.1.105 BOOTPROTO=none NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=x.x.x.x
// /etc/modprobe.conf alias bond0 bonding options bond0 miimon=100 mode=1 //miimon表示每100ms時間檢查網絡一次 //mode 有0:balance-rr 負載均衡 1:active-backup 僅網卡工作,斷線自動切換 2:balance-xor 容錯 3:broadcast 所有網卡接收數據包4、禁用IP6 (求大規模使用,禁用可提高網絡效率):
修改 /etc/modprobe.d/dist.conf
添加:alias net-pf-10 off
alias ipv6 off
reboot
二、FTP
接下來是文件共享與傳輸的內容,首先就是vftpd的安裝和配置
vsftpd(Very Secure FTP Daemon)
rpm -qa | grep vsftpd 查看安裝與否
安裝方法 :yum install vsftpd -y
PS:這裡補充一句,Cetos的防火牆是通過iptables來配置的,可以管理開啟哪些端口,
開啟的查看命令是netstat -ntlp | grep xxx(可以是端口號也可以是程序名)
想偷懶service iptables stop關閉
加一條配置也簡單:/etc/sysconfig/iptables
加上兩條:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
service iptables restart
監聽是開始了,下面就開始設置vsftpd 了
給出我的配置文件:
anonymous_enable=YES//允許匿名登錄,即不需要密碼,其共享的文件是/var/ftp/pub local_enable=YES // 允許用戶賬號登錄,即共享的就是/home/用戶文件夾 chroot_local_user=YES//禁止用戶切換目錄,否則一個賬號可訪問其它用戶目錄 listen=YES pam_service_name=vsftpd userlist_enable=YES //黑名單設置,文件為/etc/vsftpd/user_list裡 tcp_wrappers=YES //YES表示限制IP,設置分別在兩個文件中,/etc/hosts.deny和/etc/host.allow中 local_max_rate=300000 限制上傳下載速度為300k user_config_dir=/etc/vsftpd/limit //這個可以配置專門用戶的上傳下載速度,只要,在limit新建以用戶名的文件,加上一句local_max_rate=500000。對該用戶特殊對待。 idle_session_timeout=30 //30秒沒任何操作,自動斷線。說明一句,這裡的注釋應為#號,這裡是為了讓內容緊湊些,所以不要復制粘貼,理解意思最好。
還有幾條配置補充一下,
pasv_enable=no //設置主要模式還是被動模式,如果是被動模式,看ftp客戶端是什麼形式。不過好像在浏覽器裡用ftp訪問,還是要主動模式,但大部分客戶端還是被動模式。
listen_port=xx//修改監聽端口,注意防火牆處也要改
max_per_ip=3 //限制最多3個ip連接,其它等待
chroot_list_enables=YES //限制特定用戶不可以切換目錄,配置文件在/etc/vsftpd/chroot_list,與chroot_local_user所以用戶不可以切換目錄只能一個有效
SSL/TLS加密傳輸,個人覺得一般不必要。
需安裝openssl,方法不多說,rpm -qa查一下,沒裝的yum install
這裡要簡單介紹一下ssl,什麼是ssl(security socket layer)安全傳輸層,是位於HTTP和TCP協議中間的一層協議,至於為什麼要加這層協議,是因為HTTP是明文傳輸的,意味著如果數據包被截,信息直接洩漏,所以加了這麼一層加密層。
證書(Certification Authority):CA是證書的簽發機構。其為每個使用公開密鑰的用戶發放一個數字證書,數字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA機構的數字簽名使得攻擊者不能偽造和篡改證書。它負責產生、分配並管理所有參與網上交易的個體所需的數字證書,因此是安全電子交易的核心環節。(from wiki)
公鑰/私鑰:說白了一個是加密密鑰,一個是解密密鑰,即公鑰公開,用於加密,而想解析這個信息只能通過私鑰,這也稱為非對稱加密。
一般公鑰是附帶於數字證書(ca),而根據數字簽名驗證該證書是否是當前server所執有。
其主要的原理就是通過證書和密鑰來完成,其過程如下
首先,Client向Server發送連接請求(https),Server接受信息並返回自己的證書並附帶公鑰。
Client驗證證書是否是ca所頒發,然後利用公鑰加密自己的會話密鑰信息,返回給Server
Server接收後用自己的私鑰來解密,得到並生成會話密鑰。然後雙方利用協商出的密鑰加密通信。
創建CA證書(未驗證):
cd /etc/pki/tls/certs
sudo openssl req -x509 -nodes -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
根據提示,填寫國家,公司,主機名,郵件等信息,會在當前 文件夾下生成 vsftpd.pem
sudo chmod 600 vsftpd.pem
在vsftpd.conf中添加下列幾行
rsa_cert_file=/etc/ki/tls/certs/vsftpd.pem
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
結束後service vsftpd restart
service vsftpd {start|stop|restart|reload}
浏覽器中想訪問:ftp:user:password@ip
三、samba文件服務器
samba是一個用於windows和linux之間共享文件的,像建網上鄰居,傳傳文檔,電影還是不錯的,還能共享打印機。
安裝samba (rpm -qa|grep samba yum -y install samba samba-client)
新建共享目錄:
mkdir share
chown nobody:nobody share 共享權限
samba配置文件:/etc/samba/smb.conf
security = share //share表示匿名登錄,即不需要賬號密碼登錄,默認是user表示需要賬號密碼登錄。 passdb backend = tdbsam //如果上面是user,則需要,如果是share則注釋,加# workgroup = WORKGROUP //表示用戶組,像windows中的用戶組,一般改為這個 server string = Samba Server Version %v //當你連接時顯示的信息 netbios name = MyServer表示在windows上顯示的名稱,否則顯示ip。 [share] comment=share folder//說明 path= /home/share //共享文件夾路徑 read only=no //可讀可寫 guest ok=yes //支持訪客 browseable=yes //可以浏覽 public=yes //如果是share,則加上這條,如果是user模式,則把這條注釋。 #valid user=@aa //如果是user,且僅允許某些用戶訪問,則加上這條。至於[printers] 共享打印,默認就行。
service smb start //起動守護進程,核心服務
service nmb start //像域名解析
打開防火牆(137,1398,139,445端口)
測試:testparm
在windows上輸入//IP就行,或在資源管理器-網絡中會出現連接。
至於在linux上訪問可以通過smbclient
smbclient -L //IP 顯示存在在線主機
smbclient //IP 如果是share,會出現輸入密碼,按回車即可
smbclient //IP -U username%passwd //如果是user模式,輸入用戶密碼登錄
其它的看smbclient --help查看
對於user模式,samba v3版本後,采用數據庫代替
對於user模式,samba v3版本後,采用tdbsam數據庫代替文件管理用戶,密碼。
命令:pdbedit -L(Lw/Lv) 列出用戶列表
pdbedit -a xx 添加xx用戶 //先在系統裡通過ueradd 添加用戶,且在home內有用戶的主目錄。
pdbedit -x xx 刪除xx用戶
pdbedit -c "[D]" -u xx 暫時停用xx用戶
pdbedit -c "[]" -u xx 恢復xx用戶
對於Linux中的用戶,如果想將網絡共享文件夾掛載至某一目錄下,命令是
sudo mount -t cifs //IP/share /mnt/
想圖形化管理的話可以試一試,SWAT-Samba WEB管理工具。
PS:部分內容引自《CentOS 6.x系統管理實戰寶典》