linuxftp內網
這些規則很羅嗦,最重要的是概念不清,加了基本等於沒加,該防護的都沒防護到,反而加重系統負擔。
OUTPUT鏈默認就是允許的,如果這個主機是你管理並可控的,你為何不讓本機可以訪問外部所有的地址?非得加那麼多啰嗦的腳本?
一、本機做NAT,讓內部主機訪問外部FTP伺服器的做法
1、清除所有舊有的規則
service iptables stop //RHEL才有的命令
2、載入讓NAT內部主機訪問外部FTP的模塊:
modeprobe ip_nat_ftp
//從RHEL4開始,該模塊會自動在系統載入ip_nat/ip_conntrack/ip_tables/ip_conntrack_ftp/ip_conntrack_irc等多個模塊
3、打開linux的轉發開關
echo "1" /proc/sys/net/ipv4/ip_forward
4、開啟NAT
iptables -t nat -A POSTROUTING -s $INT_NET -j SNAT --to $FW_IP
這樣,內部主機就可以訪問外部的FTP服務了,你不需要知道對方是主動還是被動模式
二、如果本機做FTP被訪問
service iptables stop
modprobe ip_conntrack_irc //如果埠不是21,後面還需要加上埠號。如果是21,這步也可以用modprobe ip_nat_ftp,把其他模塊也載入上。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
當INPUT的默認策略是DROP時,RELATED模塊用途就是為本機的FTP服務打開衍生埠,ESTABLISHED是允許回包。
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT //開放21埠
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT //開放管理埠
iptables -P INPUT DROP //默認策略拒絕
② suse linux進行埠映射實現內網ftp服務
# ftp
modprobe ip_nat_ftp ###載入ip_nat_ftp模塊(若沒有編譯進內核),以使ftp能被正確NAT
modprobe ip_conntrack_ftp ###載入ip_conntrack_ftp模塊
# 用DNAT作埠映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.0.5
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5-p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT
# 用SNAT作源地址轉換(關鍵),以使回應包能正確返回
iptables -t nat -A POSTROUTING -d 192.168.0.5 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.0.1
最後配置自動啟動文件,這樣開機就自動啟動服務了
③ 基於linux防火牆僅允許FTP內網訪問如何做
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --dport 21 -j ACCEPT 你所說的內網,就看你在哪個網段了,修改192.168.0.0即可
④ 如何設置linux防火牆使外網訪問內網的ftp
ftp服務設置為PORT模式,然後放開外網到內網的21,20埠,流量
iptables -A FORWARD -p tcp --dport 21 -d 內網伺服器ip -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -s 內網伺服器ip -j ACCEPT
iptables -A FORWARD -p tcp --dport 20 -d 內網伺服器ip -j ACCEPT
iptables -A FORWARD -p tcp --sport 20 -s 內網伺服器ip -j ACCEPT
下面那個沒搞明白啥意思。是ping不同內網網卡但能訪問服務吧?
iptables -A FORWARD -p icmp -d 內網伺服器ip -j DROP
⑤ 如何在linux下開啟FTP服務
Linux下ftp服務可以通過搭建vsftpd服務來實現,以CentOS為例,首先查看系統中是否安裝了vsftpd,可以通過執行命令rpm -qa |grepvsftpd來查看是否安裝相應的包,如果沒有安裝那麼可以執行yum-yinstallvsftpd來安裝,安裝之後首先創建ftp用戶,比如ftp_test,命令如下:
useradd-s/sbin/nologin-d/home/ftp_testftp_test
目錄盡量不要選擇根目錄下,這里是/home/ftp_test,並且ftp_test這個目錄不要手動創建,否則許可權會有問題,執行命令的時候會自動創建,
現在可以看到上面的路徑是一個/,對於ftp用戶來說也就是根目錄了,只能在這個目錄下操作,而無法跳出這個目錄
以上就是vsftpd服務的基本搭建過程,實際使用時可以分配多個用戶
⑥ Linux下搭建ftp 伺服器,在區域網內分配的用戶不能訪問,只能匿名訪問,
匿名用戶一般是映射到系統的ftp用戶,用下面的命令查看ftp用戶的家目錄
cat/etc/passwd|grepftp
假設是在/var/ftp,需要賦予這個目錄的寫許可權匿名用戶才能寫,最好是把擁有者直接賦予給ftp
chownftp:ftp/var/ftp&&chmo+wx/var/ftp
另外就是vsftpd.conf的設置了,按照樓上fyzq2008說的設置就對了
⑦ linux虛擬機怎麼設置ftp伺服器
下面是在虛擬機中的linux的ftp的基本配置(redhat AS 4.0為例):
首先要安裝linux下的vsftp軟體包。
rpm -qa|gerp vsftpd //查找vsftpd有沒有安裝
如果沒有安裝就 vsftpd-2.0.1-5.i386.rpm (在第一張光碟)
在linux中有一個非常重要的一點就是要掛載光碟機 mount /media/cdrom
在這里我們就不用源代碼安裝了。用的是rpm安裝
#rpm -ivh vsftpd-2.0.1-5.i386.rpm
這里就安裝好了。
service vsftpd start 啟動vsftpd服務
如果在不設置任何的情況下,可以以匿名的方式訪問該ftp。
注.如果訪問不了的時候請大家要把linux的防火牆也要關閉:
iptables -F 清除防火牆
在安裝好ftp會產生幾個文件:
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd.ftpusers 指定哪些用戶不能訪問FTP伺服器
/etc/vsftpd.user_list 文件中指定的用戶是否可以訪問ftp伺服器由vsftpd.conf文件中的userlist_deny的取值來決定。
這幾個文件就是整個ftp控制和禁止用戶的許可權配置。。。
下面我們就來設置一個vsftpd的核心文件
# cd /etc/vsftpd/vsftpd.conf 這就是vsftpd的核心配置文件
anonymous_enable=YES/no 是否允許匿名用戶登錄
anonymous_enable=yes/no 是否允許匿名上傳文件
local_enable= YES/no 是否允許本地用戶登錄
write_enable= YES/no 是否允許本地用戶上傳
guest_enable=yes/no 是否允許虛擬用戶登錄;
local_mask=022 設置本地用戶的文件生成掩碼為022,默認值為077
dirmessage_enable= YES 設置切換到目錄時顯示.message隱含文件的內容
xferlog_enable= YES 激活上傳和下載日誌
connect_from_port_20=YES 啟用FTP數據埠連接
pam_service_name=vsftpd 設置PAM認證服務的配置文件名稱, 該文件存放在/etc/pam.d目錄下
userlist_enable= YES 允許vsftpd.user_list文件中的用戶訪問伺服器
userlist_deny= YES 拒絕vsftpd.user_list文件中的用戶訪問伺服器
listen= YES/no 是否使用獨占啟動方式(這一項比較重要)
tcp_wrappers= YES/no 是否使用tcp_wrappers作為主機訪問控制方式
最主要的就是這些設置了。(這是一般都是默認的不是太懂的不要動)
大家可以設置下面的設置:
ftpd_banner=welcome to ftp service 設置連接伺服器後的歡迎信息
idle_session_timeout=60 限制遠程的客戶機連接後,所建立的控制連接,在多長時間沒有做任何的操作就會中斷(秒)
data_connection_timeout=120 設置客戶機在進行數據傳輸時,設置空閑的數據中斷時間
accept_timeout=60 設置在多長時間後自動建立連接
connect_timeout=60 設置數據連接的最大激活時間,多長時間斷開,為別人所使用;
max_clients=200 指明伺服器總的客戶並發連接數為200
max_per_ip=3 指明每個客戶機的最大連接數為3
local_max_rate=50000(50kbytes/sec)
anon_max_rate=30000 設置本地用戶和匿名用戶的最大傳輸速率限制
pasv_min_port=埠
pasv-max-prot=埠號 定義最大與最小埠,為0表示任意埠;為客戶端連接指明埠;
listen_address=IP地址 設置ftp服務來監聽的地址,客戶端可以用哪個地址來連接;
listen_port=埠號 設置FTP工作的埠號,默認的為21
chroot_local_user=YES 設置所有的本地用戶可以chroot
chroot_local_user=NO 設置指定用戶能夠chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用戶才能執行)
local_root=path 無論哪個用戶都能登錄的用戶,定義登錄帳號的主目錄, 若沒有指定,則每一個用戶則進入到個人用戶主目錄;
chroot_local_user=yes/no 是否鎖定本地系統帳號用戶主目錄(所有);鎖定後,用戶只能訪問用戶的主目錄/home/user,不能利用cd命令向上轉;只能向下;
chroot_list_enable=yes/no 鎖定指定文件中用戶的主目錄(部分),文件:/chroot_list_file=path 中指定;
userlist_enable=YES/NO 是否載入用戶列表文件;
userlist_deny=YES 表示上面所載入的用戶是否允許拒絕登錄;
userlist_file=/etc/vsftpd.user_list 列表文件
這些就是高級設置了。大家可以適當的更改。
#vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY 設置該IP地址不可以訪問ftp服務(vsftpd在獨占啟動方式下支持tcp_wrappers主機訪問控制方式)
時間限制:
#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd
#vi /etc/xinetd.d/vsftpd/
修改 disable = no
access_time = hour:min-hour:min (添加配置訪問的時間限制(註:與vsftpd.conf中listen=NO相對應)
例: access_time = 8:30-11:30 17:30-21:30 表示只有這兩個時間段可以訪問ftp
配置文件是 /etc/vsftpd/vsftpd.conf 按如下編輯此文件,編輯文件當然用vi了
1)實現匿名用戶的上傳下載文件
程序代碼:
Anonymous_enable=yes 匿名登陸
Connect_form_port_20=yes 啟用FTP數據埠的數據連接
Pam_service_name=vsftpd 驗證方式
Listen=yes 獨立的VSFTPD伺服器
這樣你就可以實現匿名登陸ftp了,但還不能上傳文件
程序代碼:
Anon_upload_enable=yes 開放上傳許可權
Anon_mkdir_write_enable=yes 可創建目錄的同時可以在此目錄中上傳文件
Write_enable=yes 開放本地用戶寫的許可權
Anon_other_write_enable=yes 匿名帳號可以有刪除的許可權
加上上面的這段,你就可以實現匿名ftp的上傳下載文件了
然後你保存文件,用service vsftpd start來啟動vsftp的服務,然後就可以用ftp了
注意:確定你的防火牆 iptables上打開21埠,不然在登陸ftp的時候會提示socket錯誤,拒絕連接。還有就是當你再次編輯vsftp.conf後用 service vsftpd restart重起的時候總是提示你不能關閉vsftp服務,這時候你用service vsftpd status察看一下他的狀態,如果提示你vsftpd被locked 那可能是因為你的vsftpd.conf中配置的有錯誤,你要重新編輯他,直到能正常重起他為止,一次配置不對,多配置幾次就好了
2)實現本地用戶上傳下載
程序代碼:
新建一個用戶
adser 用戶名 增加一個用戶
passwd 用戶名 增加用戶的密碼
然後看/etc/passwd中最後一行就是你剛才添加的用戶信息
然後編輯/etc/vsftpd/vsftpd.conf文件,
Local_enable=yes 允許使用本地用戶來登陸ftp
在/etc/vsftpd.ftpuser中可以增加想要阻止登陸ftp的用戶
限制用戶只能在自己的目錄中
Chroot_list_enable=yes 文件中的名單可以調用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no,在文件中加入用戶名
vsftpd.conf的參數
程序代碼:
Anonymous_enable=yes 允許匿名登陸
Dirmessage_enable=yes 切換目錄時,顯示目錄下.message的內容
Local_umask=022 FTP上本地的文件許可權,默認是077
Connect_form_port_20=yes 啟用FTP數據埠的數據連接
Xferlog_enable=yes 激活上傳和下傳的日誌
Xferlog_std_format=yes 使用標準的日誌格式
Ftpd_banner=XXXXX 顯示歡迎信息
Pam_service_name=vsftpd 驗證方式
Listen=yes 獨立的VSFTPD伺服器
Anon_upload_enable=yes 匿名用戶上傳許可權
Anon_mkdir_write_enable=yes 創建目錄的同時可以在此目錄中上傳文件
Write_enable=yes 本地用戶寫的許可權
Anon_other_write_enable=yes 匿名帳號可以有刪除的許可權
Anon_world_readable_only=no 匿名用戶瀏覽許可權
Ascii_upload_enable=yes 啟用上傳的ASCII傳輸方式
Ascii_download_enable=yes 啟用下載的ASCII傳輸方式
Banner_file=/var/vsftpd_banner_file 用戶連接後歡迎信息使用的是此文件中的相關信息
Idle_session_timeout=600(秒) 用戶會話空閑後10分鍾
Data_connection_timeout=120(秒) 將數據連接空閑2分鍾斷
Accept_timeout=60(秒) 將客戶端空閑1分鍾後斷
Connect_timeout=60(秒) 中斷1分鍾後又重新連接
Local_max_rate=50000(bite) 本地用戶傳輸率50K
Anon_max_rate=30000(bite) 匿名用戶傳輸率30K
Pasv_min_port=5000 將客戶端的數據連接埠改在
Pasv_max_port=6000 5000—6000之間
Max_clients=200 FTP的最大連接數
Max_per_ip=4 每IP的最大連接數
Listen_port=5555 從5555埠進行數據連接
Local_enble=yes 本地帳戶能夠登陸
Write_enable=no 本地帳戶登陸後無權刪除和修改文件
Chroot_local_user=yes 本地所有帳戶都只能在自家目錄
Chroot_list_enable=yes 文件中的名單可以調用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no
Userlist_enable=yes 在指定的文件中的用戶不可以訪問
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail=/路徑/文件名 連接失敗時顯示文件中的內容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 將虛擬服務綁定到某埠
Guest_enable=yes 虛擬用戶可以登陸
Guest_username=所設的用戶名 將虛擬用戶映射為本地用戶
Chown_uploads=yes 改變上傳文件的所有者為root
Chown_username=root
Deny_email_enable=yes 是否允許禁止匿名用戶使用某些郵件地址
Banned_email_file=//任意指定的路徑/xx/
Pasv_enable=yes 伺服器端用被動模式
User_config_dir=/任意指定的路徑//任意文件目錄指定虛擬用戶存放配置文件的路徑
⑧ 求linux下寫shell腳本 FTP直接連接內網里的伺服器的思路
不用shell腳步,安裝一個埠映射工具,比如stunnel,把C的ftp埠映射到B即可,你在A上訪問B的ftp就會映射到C的ftp。
⑨ 怎麼用linux搭建ftp服務
一般來講,人們將電腦聯網的首要需求就是獲取資料,而文件傳輸是其中非常重要的方式之一,21世紀的互聯網是由幾千萬台個人電腦、工作站、小型機、大型機等等不同型號、架構的物理設備共同組成的,即便是個人電腦上也可能會裝有諸如Linux、Windows、UNIX、DOS等等不同的操作系統,所以為了能夠在如此復雜多樣的操作設備之間解決文件傳輸問題,於是便有了統一的FTP文件傳輸協議(File Transfer Protocol),這是一種能夠讓使用者在互聯網中上傳、下載文件的傳輸協議。很多同學在大學期間只知道FTP協議使用了21埠號,但實際上FTP文件傳輸協議默認佔用了20、21兩個埠號,20埠號用於進行數據傳輸,21埠號用於接受客戶端執行的相關FTP命令與參數,FTP服務端普遍更多的應用於內網中,具有易於搭建、方便管理的特點,並且可以藉助FTP客戶端工具還可以輕松實現文件的多點下載和斷點續傳技術
FTP伺服器就是支持FTP傳輸協議的主機,與大多數服務程序一樣,要想完成文件傳輸則需要FTP服務端和客戶端的配合才行,用戶可以通過客戶端向FTP服務端發送指令參數,FTP服務端從而會依據接受到的命令作出相應動作,比如顯示執行結果或把文件傳輸到客戶端主機上,FTP協議的傳輸有兩種不同的模式,主動模式是讓FTP服務端主動向客戶端發起鏈接請求,而被動模式則是讓FTP服務端等待客戶端的鏈接請求,默認情況下被動模式,因為咱們在第八章的防火牆課程中學習過,防火牆一般更多的是過濾從外網到內網的流量數據,因此有些時候必須改成主動模式才可以傳輸。
Vsftpd是一款運行在Linux操作系統上面的FTP服務端程序,Very SecureFTPDaemon顧名思義就是非常安全的FTP傳輸程序,vsftpd服務程序不僅完全開源且免費,而且具有很高的安全性、傳輸速率、支持虛擬用戶驗證功能等等其他FTP服務端程序所不具備的特點。配置妥當yum軟體倉庫後就可以來安裝vsftpd服務程序了:
java">#www.linuxprobe.com
[root@linuxprobe~]#yuminstallvsftpd-y
Loadedplugins:langpacks,proct-id,subscription-manager
………………省略部分輸出信息………………
================================================================================
================================================================================
Installing:
vsftpdx86_643.0.2-9.el7rhel166k
TransactionSummary
================================================================================
Install1Package
Totaldownloadsize:166k
Installedsize:343k
Isthisok[y/d/N]:y
Downloadingpackages:
Runningtransactioncheck
Runningtransactiontest
Transactiontestsucceeded
Runningtransaction
Installing:vsftpd-3.0.2-9.el7.x86_641/1
Verifying:vsftpd-3.0.2-9.el7.x86_641/1
Installed:
vsftpd.x86_640:3.0.2-9.el7
Complete!
iptables防火牆管理工具中默認禁止了ftp傳輸協議的埠號,因此咱們在正式配置vsftpd服務程序前還需要清空一下iptables防火牆的默認策略,並將當前已經被清理的防火牆策略狀態保存下來:
[root@linuxprobe~]#iptables-F
[root@linuxprobe~]#serviceiptablessave
iptables:Savingfirewallrulesto/etc/sysconfig/iptables:[OK]
vsftpd服務程序的主配置文件(/etc/vsftpd/vsftpd.conf)中參數總共有123行左右,但大多數都是以#(井號)開頭的注釋信息,咱們可以用grep命令的-v參數來過濾並反選出沒有包含#(井號)的參數行,也就是把所有的注釋信息都過濾掉,這樣再通過輸出重定向符寫會到原始的主配置文件名稱中即可:
[root@linuxprobe~]#mv/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf_bak
[root@linuxprobe~]#grep-v"#"/etc/vsftpd/vsftpd.conf_bak>/etc/vsftpd/vsftpd.conf
[root@linuxprobe~]#cat/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
劉遄老師給同學們整理出了vsftpd服務程序的主配置文件中常用的參數及作用介紹,您現在只要簡單的瀏覽一下,接下來的實驗中如果不明白再過來查閱就可以。
⑩ linux 內網ftp公網訪問
依次執行下面的命令
echo1>/proc/sys/net/ipv4/ip_forward
iptables-IFORWARD-ptcp--sport21-jACCEPT
iptables-IFORWARD-ptcp--dport21-jACCEPT
iptables-tnat-IPREROUTING-ptcp--dport21-jDNAT--to10.255.199.13
iptables-tnat-IPOSTROUTING-ptcp--dport21-jMASQUERADE