Istnieje dużo różnych rozwiązań umożliwiających udostępnianie plików dla użytkowników w sieci. W tym przypadku przedstawiony zostanie FTP - File Transfer Protocol. Zaletą tego rozwiązania jest fakt, że użytkownicy muszą się zalogować zanim uzyskają dostęp do zasobów oraz jest prosty do konfiguracji.
INSTALACJA SERWERA FTP
Zastosowany zostanie pakiet o nazwie vsftpd jest to Very Secure FTP Deamon.
Krok 1 - Instalujemy odpowiedni pakiet
[root@RHEL01 yum.repos.d]# yum install -y vsftpd
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i686 0:2.2.2-6.el6_0.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================
Package Arch Version Repository Size
=================================================================
Installing:
vsftpd i686 2.2.2-6.el6_0.1 cdrom 155 k
Transaction Summary
=================================================================
Install 1 Package(s)
Total download size: 155 k
Installed size: 343 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : vsftpd-2.2.2-6.el6_0.1.i686 1/1
cdrom/productid | 1.7 kB 00:00 ...
Installed products updated.
Installed:
vsftpd.i686 0:2.2.2-6.el6_0.1
Complete!
Krok 2 - Sprawdzamy czy pakiet faktycznie jest już zainstalowany w systemie:
[root@RHEL01 yum.repos.d]# rpm -qa | grep vsftpd
vsftpd-2.2.2-6.el6_0.1.i686
Krok 3 - Sprawdzamy również czy jest uruchamiany w momencie startu systemu jeżeli nie zmieniamy by był uruchamiany:
[root@RHEL01 yum.repos.d]# chkconfig vsftpd on
[root@RHEL01 yum.repos.d]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
KONFIGURACJA VSFTPD
Konfiguracja serwera FTP rozpoczynamy w pliku /etc/vsftpd/vsftpd.conf zawierającym ustawienia serwera.
Krok 1 - Zobaczmy dostępne opcje konfiguracyjne dla vsftpd:
[root@RHEL01 vsftpd]# grep -v ^# vsftpd vsftpd.conf
grep: vsftpd: No such file or directory
vsftpd.conf:anonymous_enable=YES
vsftpd.conf:local_enable=YES
vsftpd.conf:write_enable=YES
vsftpd.conf:local_umask=022
vsftpd.conf:dirmessage_enable=YES
vsftpd.conf:xferlog_enable=YES
vsftpd.conf:connect_from_port_20=YES
vsftpd.conf:xferlog_std_format=YES
vsftpd.conf:listen=YES
vsftpd.conf:
vsftpd.conf:pam_service_name=vsftpd
vsftpd.conf:userlist_enable=YES
vsftpd.conf:tcp_wrappers=YES
KONFIGURACJA FIREWALL ORAZ SELINUX DLA FTP
Zanim zaczniemy korzystać z możliwości FTP należy ustawić odpowiednie opcje w usługach iptables oraz SELinux. Zacznijmy od ustawienia odpowiednich zasad firewall'a. FTP używa dwóch portów komunikacyjnych TCP 20 oraz 21, którym ruch należy otworzyć.
Krok 1 - Utworzenie zasad firewall
Użyjmy polecenia iptables do utworzenia nowych zasad:
# iptables -I INPUT 5 -p tcp -m tcp --dport 20 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 21 -j ACCEPT
Zmiany zobaczyć można po wydaniu polecenia : # iptables --list
Krok 2 - Zapis ustawień
# service iptables save
Zmienne logiczne dla SELinux :
ftp_home_dir - Umożliwia FTP odczyt i zapis plików w katalogach domowych użytkowników
allow_ftpd_full_access - Umożliwia serwerowi FTP logowanie lokalnych użytkowników oraz zapis i odczyt wszystkich plików w systemie
allow_ftpd_use_nfs - Umożliwia serwerowi FTP stosowanie NFS dla publicznych transferów
allow_ftpd_anon_write - Umożliwia serwerowi FTP otrzymywać pliki z publicznych serwisów. Katalog musi mieć nazwę public_content_rw_t
ftpd_connect_db - Umożliwia połączenie FTP z serwerem MySQL
allow_ftpd_use_cifs - Umożliwia stosowanie CIFS
httpd_enabled_ftp_server - Umożliwia dostęp do serwera FTP protokołem hhtpd.
Krok 1 - Zapytanie sprawdzające wartości jakie należy zmienić
[root@RHEL01 vsftpd]# getsebool -a | grep ftpd_full
allow_ftpd_full_access --> off
INSTALACJA SERWERA FTP
Zastosowany zostanie pakiet o nazwie vsftpd jest to Very Secure FTP Deamon.
Krok 1 - Instalujemy odpowiedni pakiet
[root@RHEL01 yum.repos.d]# yum install -y vsftpd
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i686 0:2.2.2-6.el6_0.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================
Package Arch Version Repository Size
=================================================================
Installing:
vsftpd i686 2.2.2-6.el6_0.1 cdrom 155 k
Transaction Summary
=================================================================
Install 1 Package(s)
Total download size: 155 k
Installed size: 343 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : vsftpd-2.2.2-6.el6_0.1.i686 1/1
cdrom/productid | 1.7 kB 00:00 ...
Installed products updated.
Installed:
vsftpd.i686 0:2.2.2-6.el6_0.1
Complete!
[root@RHEL01 yum.repos.d]# rpm -qa | grep vsftpd
vsftpd-2.2.2-6.el6_0.1.i686
Krok 3 - Sprawdzamy również czy jest uruchamiany w momencie startu systemu jeżeli nie zmieniamy by był uruchamiany:
[root@RHEL01 yum.repos.d]# chkconfig vsftpd on
[root@RHEL01 yum.repos.d]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
KONFIGURACJA VSFTPD
Konfiguracja serwera FTP rozpoczynamy w pliku /etc/vsftpd/vsftpd.conf zawierającym ustawienia serwera.
Krok 1 - Zobaczmy dostępne opcje konfiguracyjne dla vsftpd:
[root@RHEL01 vsftpd]# grep -v ^# vsftpd vsftpd.conf
grep: vsftpd: No such file or directory
vsftpd.conf:anonymous_enable=YES
vsftpd.conf:local_enable=YES
vsftpd.conf:write_enable=YES
vsftpd.conf:local_umask=022
vsftpd.conf:dirmessage_enable=YES
vsftpd.conf:xferlog_enable=YES
vsftpd.conf:connect_from_port_20=YES
vsftpd.conf:xferlog_std_format=YES
vsftpd.conf:listen=YES
vsftpd.conf:
vsftpd.conf:pam_service_name=vsftpd
vsftpd.conf:userlist_enable=YES
vsftpd.conf:tcp_wrappers=YES
Krok 2 - Zobaczmy jakie opcję będą nam potrzebne
anonymous_enable=YES - by zachować lepsze bezpieczeństwo sytemu warto zmienić tą opcję na NO
local_enable=YES - Zezwala lokalnym użytkownikom na zalogowanie się
write_enable=YES - Zawala użytkownikom zapis w katalogach
local_umask=022 - Ustawia umask dla wszystkich wgrywanych plików
dirmessage_enable=YES - Wyświetla informacje katalogów
xferlog_enables=YES - Logowanie wszystkich transferów w /var/log/xferlog
connect_from_port_20=YES - Wymusza połączenia na porcie 20
xferlog_std_format=YES - Logowanie wszystkiego w stadardowym formacie transferu
listen=YES - Zezwala serwerowi nasłuchiwania połaczeń
pam_service_name=vsftpd - Ustawienie nazwy serwisu
userlist_enables=YES - Uruchamia usługę konsultacji user_list
tcp_wrappers=YES - Zezwala przychodzącym pakietom skonfigurowanym z TCP
userlist_deny=YES - Włącza listę user_list dla logowania do FTP
W chwili obecnej usługa serwera FTP już działa ale w wyniku działającego firewall'a nie jest możliwe zalogowanie się do usługi.
W kwestii konfiguracji pliku konfiguracyjnego dla vsftpd przydać może się zawartość man :
# man vsftpd.conf
Wpisując parametry konfiguracyjne należy uważać by nie używać żadnych spacji.
KONFIGURACJA FIREWALL ORAZ SELINUX DLA FTP
Zanim zaczniemy korzystać z możliwości FTP należy ustawić odpowiednie opcje w usługach iptables oraz SELinux. Zacznijmy od ustawienia odpowiednich zasad firewall'a. FTP używa dwóch portów komunikacyjnych TCP 20 oraz 21, którym ruch należy otworzyć.
Krok 1 - Utworzenie zasad firewall
Użyjmy polecenia iptables do utworzenia nowych zasad:
# iptables -I INPUT 5 -p tcp -m tcp --dport 20 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 21 -j ACCEPT
Zmiany zobaczyć można po wydaniu polecenia : # iptables --list
Krok 2 - Zapis ustawień
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[OK]
Krok 3 - Restart usługi firewall
[root@RHEL01 vsftpd]# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
Powyższe można również wykonać przy użyciu narzędzia graficznego :
# system-config-firewall-tui
Gdzie przy pomocy menu można otworzyć lub zamknąć porty różnych usług.
Zmiany zapisane zostają w pliku : # /etc/sysconfig/iptables
Zawartość pliku po zmianach :
# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Thu May 10 11:24:33 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [44:6156]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu May 10 11:24:33 2012
Zawartość pliku po zmianach narzędziem graficznym :
# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Po ustawieniu zasad firewall trzeba zająć się ustawieniami SELinux.
ftp_home_dir - Umożliwia FTP odczyt i zapis plików w katalogach domowych użytkowników
allow_ftpd_full_access - Umożliwia serwerowi FTP logowanie lokalnych użytkowników oraz zapis i odczyt wszystkich plików w systemie
allow_ftpd_use_nfs - Umożliwia serwerowi FTP stosowanie NFS dla publicznych transferów
allow_ftpd_anon_write - Umożliwia serwerowi FTP otrzymywać pliki z publicznych serwisów. Katalog musi mieć nazwę public_content_rw_t
ftpd_connect_db - Umożliwia połączenie FTP z serwerem MySQL
allow_ftpd_use_cifs - Umożliwia stosowanie CIFS
httpd_enabled_ftp_server - Umożliwia dostęp do serwera FTP protokołem hhtpd.
Krok 1 - Zapytanie sprawdzające wartości jakie należy zmienić
[root@RHEL01 vsftpd]# getsebool -a | grep ftpd_full
allow_ftpd_full_access --> off
Krok 2 - Wyłączenie zabezpieczenia SELinux
setsebool -P allow_ftpd_full_access=1
Krok 3 - Sprawdzenie wprowadzonych zmian
[root@RHEL01 vsftpd]# getsebool -a | grep ftpd_full
allow_ftpd_full_access --> on
Podobnie choć nieco inaczej jest to wykonywane dla wersji RHEL05
Krok 1 - Zapytanie sprawdzające wartości do zmiany
[root@station1 ~]# getsebool -a | grep ftpd_dis
ftpd_disable_trans --> off
tftpd_disable_trans --> off
Krok 2 - Wyłączenie zabezpieczenia SELinux
# setsebool -P ftpd_disable_trans=1
Krok 3 - Sprawdzenie wprowadzonych zmian
[root@station1 ~]# getsebool -a | grep ftpd_dis
ftpd_disable_trans --> on
Jeżeli zachodzi taka potrzeba można również skonfigurować anonimowy dostęp do FTP w tym celu należy się upewnić że opcja allow_ftpd_anon_write została ustawiona.
[root@RHEL01 vsftpd]# grep -v ^# vsftpd vsftpd.conf
OdpowiedzUsuńgrep: vsftpd: No such file or directory
:)
cd /etc/vsftpd/
Usuń[root@rhel03 vsftpd]# grep -v ^# vsftpd vsftpd.conf
grep: vsftpd: No such file or directory
vsftpd.conf:anonymous_enable=YES
vsftpd.conf:local_enable=YES
vsftpd.conf:write_enable=YES
vsftpd.conf:local_umask=022
vsftpd.conf:dirmessage_enable=YES
vsftpd.conf:xferlog_enable=YES
vsftpd.conf:connect_from_port_20=YES
vsftpd.conf:xferlog_std_format=YES
vsftpd.conf:listen=YES
vsftpd.conf:
vsftpd.conf:pam_service_name=vsftpd
vsftpd.conf:userlist_enable=YES
vsftpd.conf:tcp_wrappers=YES