![CentOS5에서 iptables에 많은 규칙을 추가한 후 FTP에 액세스하는 것은 절대 불가능합니다.](https://linux55.com/image/36856/CentOS5%EC%97%90%EC%84%9C%20iptables%EC%97%90%20%EB%A7%8E%EC%9D%80%20%EA%B7%9C%EC%B9%99%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%9C%20%ED%9B%84%20FTP%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%80%20%EC%A0%88%EB%8C%80%20%EB%B6%88%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
FTP를 통해 서버에 접속하려다 최악의 상황에 직면했습니다. 방화벽을 활성화된 상태로 유지하고 싶습니다.
편집하다: iptables 정보가 업데이트되었습니다.
다음 규칙을 활성화했습니다.
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
58398 7869K RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP 5841 packets, 350K bytes)
pkts bytes target prot opt in out source destination
4046 299K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 114 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
2935 196K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 state NEW
170 10200 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 ctstate NEW,ESTABLISHED
Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
26 10260 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8465 774K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
49907 7084K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:30000:35000
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:20
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 ctstate NEW,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
나는 이것이 필요 이상이라는 것을 알고 있지만 어찌할 바를 모르겠습니다. iptables를 비활성화하면 서버에 제대로 연결할 수 있으므로 이것이 방화벽과 관련이 있다는 것을 알고 있습니다.
포트 21과 수동 연결만 사용하여 연결하고 싶습니다. 수동 연결을 위해 포트 39000~40000을 열고 싶습니다.
나는 무엇을 해야 합니까?
아하! 내가 고쳤어! 나는 규칙을 다시 읽고 어떤 규칙을 거부하고 있는지 확인했습니다. 나는 그것이 규칙을 방해할 것이라는 느낌을 받았고, 실제로 그랬습니다!
그래서 내 연결을 차단한 것은 다음 규칙이었습니다.
49907 7084K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
그래서 제가 해결한 방법은 서버를 다시 시작하고 규칙을 재설정한 다음 포트 21 규칙을 다음과 같이 추가하는 것이었습니다.앞으로거부 규칙:
sudo iptables -I RH-Firewall-1-INPUT 11 -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I RH-Firewall-1-INPUT 11 -p tcp -m tcp --dport 39000:40000 -m state --state RELATED,ESTABLISHED -j ACCEPT
그런 다음 vsftpd.conf에 다음을 추가했습니다.
pasv_enable=YES
pasv_max_port=39000
pasv_min_port=40000
이제 연결할 수 있습니다. 만세!
답변1
질문에 대한 나의 답변은 다음과 같습니다.
아하! 내가 고쳤어! 나는 규칙을 다시 읽고 어떤 규칙을 거부하고 있는지 확인했습니다. 나는 그것이 규칙을 방해할 것이라는 느낌을 받았고, 실제로 그랬습니다!
그래서 내 연결을 차단한 것은 다음 규칙이었습니다.
49907 7084K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
그래서 제가 해결한 방법은 서버를 다시 시작하고 규칙을 재설정한 다음 포트 21 규칙을 다음과 같이 추가하는 것이었습니다.앞으로거부 규칙:
sudo iptables -I RH-Firewall-1-INPUT 11 -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I RH-Firewall-1-INPUT 11 -p tcp -m tcp --dport 39000:40000 -m state --state RELATED,ESTABLISHED -j ACCEPT
그런 다음 vsftpd.conf에 다음을 추가했습니다.
pasv_enable=YES
pasv_max_port=40000
pasv_min_port=39000
이제 연결할 수 있습니다. 만세!