Trên AWS tôi có phải mở các cổng trong tường lửa cũng như nhóm bảo mật của EC2 không?


8

Nếu tôi thay đổi cổng SSH từ 22 thành 23453, tôi không còn có thể ssh in nữa.

Chi tiết hơn, tôi đang sử dụng phiên bản Red Hat EC2 trên Amazon Web Services. Đây là thay đổi thứ hai tôi đã cài đặt mới (thay đổi đầu tiên là thêm người dùng không root).

Tôi có thể sử dụng tốt Git Bash và tệp .ssh / config cục bộ, tôi chỉnh sửa dòng trong / etc / ssh / sshd_config hiện đang nói

#Port 23453

để nói

Port 23453

sau đó khởi động lại sshd với

sudo service sshd restart

Sau đó tôi thêm một dòng "Cổng 23453" tệp .ssh / config của tôi

Host foo 
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key

Nếu tôi mở một vỏ Git Bash khác (không đóng kết nối hiện có của tôi) và cố gắng ssh vào cá thể của tôi (với ssh foo), tôi thấy lỗi sau:

ssh: connect to host my-ec2-public-DNS port 23453: Bad file number

Nhóm bảo mật được đính kèm trong trường hợp này có hai mục, cả TCP

22 (SSH) 0.0.0.0/0

23453 0.0.0.0/0

Dự đoán tốt nhất của tôi là cổng vẫn bị chặn bởi tường lửa của tôi.

Đầu ra của sudo iptables -Lnhư sau

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Có vẻ khá cởi mở với tôi.

CẬP NHẬT

Sau khi thêm quy tắc iptables

iptables -A INPUT -p tcp --dport 23453 -j ACCEPT

và thử lại, vẫn không gặp may.

Đầu ra của iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Mà trông đủ mở. Tôi không hoàn toàn chắc chắn làm thế nào để tìm kiếm các gói đến hoặc hoạt động trên cổng. Nhưng đầu ra của netstat -ntlp(là root)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State PID/Program name
tcp        0      0 0.0.0.0:56137               0.0.0.0:*                   LISTEN      948/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      930/rpcbind
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1012/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1224/master
tcp        0      0 0.0.0.0:23453               0.0.0.0:*                   LISTEN      32638/sshd
tcp        0      0 :::36139                    :::*                        LISTEN      948/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      930/rpcbind
tcp        0      0 ::1:631                     :::*                        LISTEN      1012/cupsd
tcp        0      0 :::23453                    :::*                        LISTEN      32638/sshd

Mà dường như với tôi để hiển thị sshd trên 23453.

Tôi đã kiểm tra lại rằng cá thể có cổng mở trong nhóm bảo mật (Cổng: 23453, Giao thức: tcp, Nguồn: 0.0.0.0/0)

Điều gì khác có thể gây ra lỗi không kết nối qua SSH?

Chúc mừng

BÀI VIẾT

Bây giờ tôi có thể kết nối. Đó là một quy tắc còn thiếu trong iptables. Đầu ra của iptables -Lbây giờ trông như thế này:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453 state NEW
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Đối với bất cứ ai không thể thấy sự khác biệt giữa thứ ba iptables -L(ssh hoạt động) và thứ hai iptables -L(ssh bị chặn). Nhìn vào thứ tự của các quy tắc trong chuỗi INPUT (6 dòng dưới "mục tiêu" đầu tiên), chúng được đọc từ trên xuống dưới, do đó, trong bộ quy tắc thứ hai, "TÌM KIẾM tất cả" được nhấn trước "CHẤP NHẬN tcp dpt: 23453 ". Bộ quy tắc thứ ba có mục ACCEPT ở trên và do đó, trước đó, mục RE DỰ ÁN.
Andrew Martin

Câu trả lời:


12

Tường lửa cá thể của bạn không có cổng này mở. Hãy thử lệnh sau:

iptables -I INPUT 3 -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 23453 -m state --state New -j ACCEPT

Lưu ý rằng các quy tắc iptables cần được lưu để duy trì sau khi khởi động lại. Trên RHEL đó là:

/sbin/service iptables save

Điều này đã làm việc. Nếu ai đó có thể cho tôi biết sự khác biệt quan trọng giữa quy tắc iptables của @ melsayed và quy tắc iptables của Frank, tôi sẽ rất biết ơn. Ngoài ra, tôi đoán điều này có nghĩa là câu trả lời cho câu hỏi cuối cùng của tôi là "Có, trên AWS, bạn phải mở các cổng trong tường lửa ví dụ ec2 cũng như các nhóm bảo mật của chúng". Cảm ơn mọi người.
Andrew Martin

Tôi đã cố gắng nhận xét về câu trả lời của Frank nhưng tôi chưa có đủ đại diện :)
gửi

2
Về cơ bản, lệnh iptables của Frank thêm (-A) một quy tắc mới cho phép kết nối với cổng đó. Vấn đề là, nó thêm quy tắc vào cuối danh sách quy tắc iptables. Quy tắc cuối cùng trong danh sách iptables từ chối mọi thứ không được phép rõ ràng trước nó. Vì quy tắc iptables được áp dụng theo thứ tự, kết nối được khớp và từ chối trước cả khi đến quy tắc mới.
gửi

2
Tôi đã chèn một quy tắc mới trong danh sách, ở vị trí thứ 3 (-I INPUT 3). Được khớp trước quy tắc từ chối ở cuối, do đó cho phép kết nối. Như Frank đã đề cập, bạn có thể sử dụng iptables -nvL để xem số lượng gói phù hợp với từng quy tắc, giúp gỡ lỗi cấu hình như vậy.
gửi

/sbin/service iptables savekhông làm việc cho tôi, ngay cả với sudo.
huertanix

2

Thêm quy tắc iptables

iptables -I INPUT 1 -p tcp --dport 23435 -j ACCEPT

chấp nhận lưu lượng truy cập từ bất kỳ máy chủ nào, qua cổng 23435 và cố gắng ssh, nếu bạn thấy bất kỳ gói hoặc hoạt động nào, thì điều đó có nghĩa là các gói đang đến máy chủ của bạn.

Nếu bạn thấy không có gói nào, điều đó có nghĩa là nhóm Bảo mật AWS không có quy tắc cho phép cổng của bạn.

nhưng nếu bạn thấy lưu lượng truy cập theo quy tắc này (bởi iptables -nvL), thì bạn phải chạy "netstat -ntlp" và xác minh xem SSH daemon có chạy trên cổng 2435. và không 0.0.0.0/0.

hy vọng các bước này sẽ giải quyết vấn đề. nếu vẫn không có thì bảo.


1

Bạn có chắc chắn nhóm bảo mật được đặt chính xác? Bạn đã bấm "Áp dụng thay đổi"? Nhiều người quên thực sự áp dụng các thay đổi của họ :)

"Số tệp xấu" thường biểu thị thời gian chờ kết nối và thiết lập iptables của bạn trông chính xác.


Tôi đã phạm lỗi với cạm bẫy "áp dụng thay đổi" một lần trước đây. Không bao giờ lặp lại. :)
Andrew Martin

-1

Trong trường hợp bất kỳ ai tình cờ gặp chủ đề này vì họ đã thay đổi cổng mặc định của ssh, đây là một giải pháp phù hợp với tôi:

  1. Để vượt qua tường lửa của công ty, tôi đã thay đổi cổng thành 80 /etc/ssh/sshd_conf.
  2. Thật không may, Apache đã được cài đặt trong trường hợp đó nên tôi không thể ssh nữa.
  3. Tôi tách âm lượng từ ví dụ.
  4. gắn nó với một ví dụ khác
  5. gắn nó, thay đổi cổng trong tập tin cấu hình
  6. tách nó ra, gắn nó vào ví dụ cũ
  7. khởi động lại: tất cả đều tốt: D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.