iptables開放ftp
A. iptables簡單提問,我在linux下用做了一個nat,客戶機的ftp不能用,是不是nat 沒有把21埠打開,怎麼打開
要載入ftp模塊
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
載入這2個模塊後再試試
B. linux中iptables防火牆怎麼設置
首先講介紹幾個簡單命令:
/etc/init.d/iptables save ##保存防火牆規則,如果不進行保存的話 重啟iptables之後規則將消失
iptables -L -n ##查看當前防火牆規則
PS:在添加規則之前先用iptables -L -n查看一下當前規則,如果顯示沒有規則,可能是你的iptables沒有開啟。如果這個時候添加規則,保存之後將覆蓋之前的規則。如果要繼續使用之前的規則,先開啟iptables服務,這時候就能看到之前的規則,然後再在之前的基礎上添加。
我們先添加兩條規則
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##添加一個開放埠22的輸入流的規則
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT ##添加一個開放埠22的輸出流的規則
添加以上兩條規則之後,就不用擔心登陸不了SSH了,想了解命令詳情使用iptables --help
這里重點講一下iptables 裡面的 dport 和 sport的區別:
dport:目的埠
sport:來源埠
通過兩個INPUT的例子,大家區分下INPUT裡面的dport 和sport
例子1:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
這條INPUT規則可以這么描述:
1.這是一條從外部進入內部本地伺服器的數據。
2.數據包的目的(dport)地址是22,就是要訪問我本地的22埠。
3.允許以上的數據行為通過。
例子2:
1
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
這條INPUT規則可以這么描述:
1.這是一條從外部進入內部本地伺服器的數據。
2.數據包的來源埠是(sport)22,就是對方的數據包是22埠發送過來的。
3.允許以上數據行為。
通過兩個OUTPUT的例子,大家區分下OUTPUT裡面的dport 和sport
例子1:
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
這條OUTPUT規則可以這么描述:
1.這是一條從內部出去的數據。
2.出去的目的(dport)埠是22。
3.允許以上數據行為。
例子2:
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
這條OUTPUT規則可以這么描述:
1.這是一條從內部出去的數據。
2.數據包的來源埠是(sport)22,從本伺服器的22埠發出數據。
3.允許以上數據行為。
默認INPUT、OUTPUT、FORWARD都是ACCEPT的
不添加規則,則對所有埠的數據來者不拒~
iptables -P INPUT DROP #如果沒有添加埠22的accept規則,切勿運行此命令
如果運行上述命令的話,則是除了添加的規則之外的INPUT數據包都DROP掉。。。
同理還有這些命令:
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
一般把INPUT設置為DROP。那麼我們需要添加一些規則針對INPUT的ACCEPT的規則:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #開放ssh埠
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #開放web服務埠
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #開放ftp服務埠
iptables -A INPUT -p icmp -j ACCEPT #允許icmp包通過,也就是允許ping
iptables -A INPUT -i lo -p all -j ACCEPT #允許loopback
#####如果你還做了其他的伺服器,需要開啟哪個埠,照寫就行了.
一般把OUTPUT設置為ACCEPT。那麼我們需要添加一些規則針對OUTPUT的DROP規則:
關閉一些埠
iptables -A OUTPUT -p tcp --sport 27444 -j DROP
iptables -A OUTPUT -p tcp --sport 27665 -j DROP
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
C. Linux下防火牆規則開放ftp埠的問題
setup,進入設置,然後選擇firewall,開放21埠就可以了,有的時候selinux也組織防火牆。
D. linux問題,關閉iptables服務安全嗎,如果不關閉怎麼開放FTP等埠
不建議關閉iptables,可以設置規則讓FTP埠通過過濾。
ftp埠比較特殊,分為連接用的埠,當上傳下載文件的傳輸數據用的埠。並不像80,22這些埠。
netstat -tnl 命令可以看到,現在運行了ftp服務。
這里現在只允許 22 埠的訪問。
現在開始對ftp埠的設置,ftp連接埠有2個 21 和 20 埠,現在添加對應的規則。
[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
添加完瀏覽器訪問一下ftp,會出現超時。
例如目錄列表, 上傳 ,下載 文件都要用到這些埠。
而這些埠是任意埠。 這個任意真的比較特殊。如果不指定什麼一個埠范圍, iptables 很難對任意埠開放的,如果iptables允許任意埠訪問, 那和不設置防火牆沒什麼區別,所以不現實的。
那麼解決辦法就是指定這個數據傳輸埠的一個范圍。
下面修改一下ftp配置文件。
這里使用vsftpd來修改演示。
[root@localhost root]# vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=30001
pasv_max_port=31000
然後保存退出。
這兩句話的意思告訴vsftpd, 要傳輸數據的埠范圍就在30001到31000 這個范圍內傳送。
這樣使用 iptables 就好辦多了,只需打開 30001到31000 這些埠。
[root@localhost root]# iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[root@localhost root]# service iptables save
最後進行保存, 然後再用瀏覽器范圍下ftp。即可正常訪問。
E. linux iptables ftp設置
這些規則很羅嗦,最重要的是概念不清,加了基本等於沒加,該防護的都沒防護到,反而加重系統負擔。
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 //默認策略拒絕
F. 請教高手,用iptables如何實現FTP埠映射
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
最後配置自動啟動文件,這樣開機就自動啟動服務了
G. linux開放FTP服務iptable怎麼設置
做如下設置應該可以的
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
H. 如何修改 ftp 埠
怎樣修改SSH和FTP的登錄埠
LINUX 的默認SSH 埠是 22。為了防止別人暴力破解(這年頭無聊的菜鳥黑客太多),建議修改SSH 訪問埠:
第一步:
[[email protected] ~]#vim /etc/ssh/sshd_config
找到#Port 22一段,這里是標識默認使用22埠,修改為如下:
Port 22
Port 3456
注意:先不要刪除Port 22,以免發生意外無法登錄。
保存退出,然後執行/etc/init.d/sshd restart(或/etc/init.d/ssh restart,或service sshd restart),重啟SSH服務,這樣SSH埠將同時工作與22和3456上。測試成功後再關閉22埠。
如果沒有啟用防火牆或者防火牆沒有屏蔽埠,就可以直接測試新埠是否可用了。
如果打開了iptables,則執行第二步:
編輯防火牆配置:vi /etc/sysconfig/iptables 開放 3456埠
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3456 -j ACCEPT
然後執行/etc/init.d/iptables restart
第三步:
使用ssh工具連接3456埠,來測試是否成功。
如果連接成功了,則再次編輯sshd_config的設置,將里邊的Port 22 刪除即可。
最後,別忘了重啟SSH服務哦。
修改FTP埠相對要復雜一些,主要是因為FTP軟體太多,啟動方式也不一樣。
第一種情況:vsftpd
步驟:1.修改/etc/services文件
# vi /etc/services
將21/tcp修改為20129/tcp (20129是你自己想要的埠號,可以隨便修改,不過必須注意:埠號最大為65535。)
2.修改(新增)FTP配置文件vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
如果文件中有Listen_port=21,則將21修改為2021,
否則添加一行Listen_port=2021
3.啟動TFP服務
# service vsftpd restart
4.檢查TFP服務
# service vsftpd status
第二種情況:FTP集成在Kloxo之中。Kloxo是一整套的伺服器模塊,其中一個是FTP。您不能改變對Kloxo管理控制面板的伺服器配置。默認情況下Kloxo使用pureftp作為FTP伺服器,xinetd的作為協助進程啟動FTP服務。
步驟:1,登錄使用root的SSH訪問。
您的pureftp配置是在/etc/xinetd.d/pureftp,這個文件的第一行就是ftp的服務,一般不需修改。
2,打開/etc/services 編輯,找到這些行:
ftp 21/tcp
ftp 21/udp fsp fspd
將其修改成這樣:
ftp 20129/tcp
ftp 20129/udp fsp fspd
保存文件並退出。
3,重新啟動xinetd:
service xinetd restart
檢查所有的監聽埠:
netstat -an | grep LISTEN
如果已沒有偵聽埠21,而是發現埠20129
tcp 0 0 0.0.0.0:20129 0.0.0.0:* LISTEN
則應該就算成功了。當然,你應該馬上通過您的FTP客戶端來測試一下,不要忘記使用新埠哦!
第三種情況:LNMP集成pureftp
這種情況應該修改 /usr/local/pureftpd/pure-ftpd.conf
找到其中的
#Bind 127.0.0.1,21
修改為:
Bind 127.0.0.1,20129
有的時候這樣也不行,那就將127.0.0.1刪掉,改為
Bind ,20129
然後重啟ftp服務 /etc/init.d/pureftpd restart
I. linux中怎麼解決開啟iptables和setlinux實現ftp登陸
如果要開啟防火牆:/etc/init.d/iptables
stop或者services
iptables
stop
如果要開啟selinux:setenforce
0
建議關閉防火牆以及selinux